2017-12-08 6 views
3

私はかなりの間MVCで作業してきました。エンティティモデルを使用してデータを送信するためのフォームを作成しました。要件ごとにタグを追加する必要があったので、代わりにviewmodelを使用するようにビューとアクションメソッドを更新しました。私のビューモデル名は「モデル」でなければならないのはなぜですか?

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(PostwTagsVM post) 
{ 
} 

は驚くべきことに、モデルはnull.Iは理由を見つけることができませんでしたが、その後、次のようにオブジェクトの名前を変更することを決定した:

驚くべきことに
[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(PostwTagsVM model) 
{ 
} 

、私はモデルにデータを取得し、このような今。 私はこのように働くことができると知っていますが、私は実際にモデルオブジェクトの名前を「モデル」以外のものにする必要があるのでしょうか。ここで何が起こっていますか?

答えて

3

modelの名前を付ける必要はありません。あなたのPostwTagsVMモデルがpostという名前のプロパティが含まれているため

最初のケースであれば、あなたのモデルは、nullです。

パラメーターの名前は、モデルのプロパティーの1つと同じ名前にすることはできませんが、任意の名前を付けることができます。

あなたのフォームが(たとえば)post=someValueという名前/値のペアを返信するためです。 DefaultModelBinderは、一致する名前を探しますsomeValuePostという名前のプロパティの値を設定したが、その後もpostという名前のパラメータを検索し、(あなたがPostwTagsVM post = "someValue";を行うことができないため)失敗した、someValueにそれを設定しようとすると、モデルがnullなり。

+0

はい。ありがとうございました。私のポケットの新しいコンセプト。 – Mash

関連する問題