MVC5模型绑定 - 子对象全为null

时间:2015-04-23 00:02:56

标签: c# asp.net-mvc-5 model-binding

当我的父类/模型发回服务器并使用BindAttribute“Bind”时,子对象都为空。

如果我不包括绑定,那么它的工作原理 ArrayAdapter

例如,person.Address属性不为null,并且它的属性是根据表单提交设置的。

仅供参考,使用EditorFor在视图中创建地址,所有内容都包含在请求表单中。

但如果我使用Bind,它就不起作用..

<h3 class="italic orange">Accounting Packages</h3>
<div class="sidebarmenu">
  <li><a href="#">What Is It</a></li>
  <li><a href="#">How It Works</a></li>
  <li><a href="#">Packages</a></li>
</div>

person.PersonId和person.AddressId设置正确,但person.Address为空。

如果使用Bind和多个参数,就像这样......

public ActionResult SaveEdit(int id, Person person)

它中途工作,两个对象都被创建,也没有通常存在的相关属性。

这是正常行为,还是我做错了什么?

1 个答案:

答案 0 :(得分:2)

你没有展示你的模型,但假设它包含属性PersonIdAddressIdAddress,其中Address是一个复杂的对象,那么它需要

public ActionResult SaveEdit(int id, [Bind(Include = "PersonId, AddressId, Address")] Person person)

但是,更好的方法是使用仅包含您正在编辑的属性的视图模型,并避免使用[Bind(Include = "properties, list")]