ASP.NET MVC嵌套视图模型表单提交

5

是否可能只接受嵌套视图模型的后台值?

例如,我只想发布“地址”:

@Html.TextBoxFor(p => p.User.Account.Address.Street)
@Html.ValidationMessageFor(p => p.User.Account.Address.Street)

到这个控制器操作:

[HttpPost]
public ActionResult SaveAddress(Address address) {
  // 在此处保存到数据库
}
目前,只有在将地址传递给自己的部分视图时,才会发布这些值,以便属性看起来像这样:
@Html.TextBoxFor(p => p.Street)
@Html.ValidationMessageFor(p => p.Street)

1个回答

7

您可以指定绑定前缀:

[HttpPost]
public ActionResult SaveAddress([Bind(Prefix = "User.Account")] Address model) 
{
    ...
}

另一个可能性是使用部分视图:

@Html.Partial("_Address", Model.User.Account.Address)

并且在_Address.cshtml文件内:

@model Address
@Html.TextBoxFor(p => p.Street)
@Html.ValidationMessageFor(p => p.Street)

谢谢,Bind前缀正是我所寻找的。 - Victor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接