2016-09-02 4 views
0

を持っていますか?私はどこか間抜けミスを作ってるんだと確信しているが、ここでのシナリオは次のとおりです。

私はMVCコントローラに$ http.postをコミット

$ http.post方法:

return $http.post("/Api/Form/Create/Save/DraftForm/", {"Model":"test"}); 

MVCモデル

public class FormViewModel 
{ 
    public string Model { get; set; } 
} 

MVCコントローラ

[HttpPost, Route("Api/Form/Create/Save/DraftForm") 
public ActionResult Create_Save_DraftForm(FormViewModel model) 
{ 
    .... 
} 

someObjがコントローラに到達するまでには、nullです。

私は「ViewModelに」のようなものにコントローラ「モデル」内のパラメータの名前を変更する場合は、それが正常に動作します。

[HttpPost, Route("Api/Form/Create/Save/DraftForm") 
public ActionResult Create_Save_DraftForm(FormViewModel viewModel) 
{ 
    .... 
} 

Shyjuが述べたように、私はまた、別の名前にJSONオブジェクト内の「モデル」プロパティの名前を変更することができますし、それは同様に動作します:

public class FormViewModel 
{ 
    public string AnotherModel { get; set; } 
} 

return $http.post("/Api/Form/Create/Save/DraftForm/", {"AnotherModel":"test"}); 
+0

は、モデルバインダーのバグかもしれません!あなたのプロパティの名前を特定の名前に変更すると、それは動作します(例:CarModel) – Shyju

+0

これまでのところ私の解決策でした。 Modelバインダーのバグか、Modelバインダーを不適切に使用しています。私が推測しなければならないのは、後者だと言えるでしょう。 –

+0

私はオブジェクトに別のレベルを追加しようと思っているかもしれないと言われていますが、私はそれに運がありませんでした。 –

答えて

0

私は、データをコントローラに掲載なったか誤解。

コントローラは

{"Model", "test"}, 

を取得しているが、基本的には、コントローラに渡されるデータは、コントローラのパラメータに一致するプロパティ名を持つ必要があり、プロパティがあるべき

{ "model": 
    {"Model", "test"} 
} 

を期待していますコントローラ内のパラメータのオブジェクトと一致するオブジェクト。

関連する問題