ネストされた ViewModel プロパティを誤って部分ページに渡してしまったため、以前にも同じ問題が発生しました。
パーシャルをネストしている場合は、モデルをどのように渡すかについて注意する必要があります。次に例を示します。
これがあなたのViewModelだとしましょう:
public class Person
{
public string Name {get; set;}
public Address Address {get; set;}
}
public class Address
{
public string Line1 {get; set;}
//etc
}
そしてあなたのコントローラーアクション:
public ActionResult UpdatePerson(Person p)
{
}
アドレスを表示する別のビューがある場合は、次のようにしてください。
@Html.RenderPartial("Address", Model)
そして、このようではありません:
@Html.RenderPartial("Address", Model.Address)
2 番目の例を実行すると、"TextboxFor" 入力の名前は、モデル バインダーが理解できるように間違った名前が付けられます。
もう 1 つのオプションは、モデル バインダーがアドレスを適切に認識できるようにするために、次のようにコントローラー アクションで具体的にアドレスを呼び出すことです。
public ActionResult UpdatePerson(Person p, Address addr)
{
}