MVC5 模型绑定——子对象全部为 null
MVC5 model binding -- child objects all null
当我的父对象 class/model 回发到服务器并且我使用 BindAttribute "Bind" 时,子对象都是空的。
如果我不包含绑定,那么它可以工作
public ActionResult SaveEdit(int id, Person person)
例如 person.Address 属性 不为空,它的属性是根据表单提交设置的。
仅供参考,地址是使用 EditorFor 在视图中创建的,所有内容都包含在申请表中。
但是如果我使用绑定,它就不起作用..
public ActionResult SaveEdit(int id, [Bind(Include = "PersonId, AddressId, Address.AddressId, Address.Line1, Address.City, Address.State, Address.Zip")] Person person)
person.PersonId 和 person.AddressId 设置正确,但 person.Address 为空。
如果使用 Bind 和多个参数,像这样...
public ActionResult SaveEdit(int id, [Bind(Include = "PersonId")] Person person,
[Bind(Prefix = "Address", Include = "AddressId, Line1, City, State, Zip")] Address address)
它成功了一半,两个对象都创建了,但都没有通常存在的相关属性。
这是正常现象,还是我做错了什么?
您还没有展示您的模型,但假设它包含属性 PersonId
、AddressId
和 Address
,其中 Address
是一个复杂对象,那么它需要
public ActionResult SaveEdit(int id, [Bind(Include = "PersonId, AddressId, Address")] Person person)
但是,更好的方法是使用仅包含您正在编辑的属性的视图模型,避免使用 [Bind(Include = "properties, list")]
当我的父对象 class/model 回发到服务器并且我使用 BindAttribute "Bind" 时,子对象都是空的。
如果我不包含绑定,那么它可以工作
public ActionResult SaveEdit(int id, Person person)
例如 person.Address 属性 不为空,它的属性是根据表单提交设置的。
仅供参考,地址是使用 EditorFor 在视图中创建的,所有内容都包含在申请表中。
但是如果我使用绑定,它就不起作用..
public ActionResult SaveEdit(int id, [Bind(Include = "PersonId, AddressId, Address.AddressId, Address.Line1, Address.City, Address.State, Address.Zip")] Person person)
person.PersonId 和 person.AddressId 设置正确,但 person.Address 为空。
如果使用 Bind 和多个参数,像这样...
public ActionResult SaveEdit(int id, [Bind(Include = "PersonId")] Person person,
[Bind(Prefix = "Address", Include = "AddressId, Line1, City, State, Zip")] Address address)
它成功了一半,两个对象都创建了,但都没有通常存在的相关属性。
这是正常现象,还是我做错了什么?
您还没有展示您的模型,但假设它包含属性 PersonId
、AddressId
和 Address
,其中 Address
是一个复杂对象,那么它需要
public ActionResult SaveEdit(int id, [Bind(Include = "PersonId, AddressId, Address")] Person person)
但是,更好的方法是使用仅包含您正在编辑的属性的视图模型,避免使用 [Bind(Include = "properties, list")]