在ASP.NET MVC中将复杂对象(具有层次结构)发布到Controller

时间:2009-10-21 06:42:04

标签: asp.net-mvc

使用强类型视图在数据输入/编辑表单中显示复杂对象。例如:Model.UserInformation.Name,Model.LivingPlace.FacilitiesSelectList,Model.Education.DegreesList ...等。这些信息显示在多选列表框,网格等中。用户可以在编辑屏幕中更改信息。有没有办法在sumbit按钮点击时将用户更改发布到控制器的Model对象。请建议。

此致 单

2 个答案:

答案 0 :(得分:2)

已传递给视图的同一对象实例:否.ASP.NET MVC使用默认的Model绑定器从请求值实例化新的操作参数。例如,如果您有以下操作方法:

public ActionMethod DoWork(User model)
{
    return View();
}

public class Address
{
    public string Street { get; set; }
}

public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public Address[] Addresses { get; set; }
}

绑定器将查看请求并尝试绑定模型值。您可以在视图中查看以下内容:

<%= Html.TextBox("FirstName") %>
<%= Html.TextBox("LastName") %>
<%= Html.TextBox("Addresses[0].Street") %>
<%= Html.TextBox("Addresses[1].Street") %>

这将自动在控制器操作中填充模型的值。

为避免大量分配不应从请求值绑定的属性,最好使用BindAttribute并设置ExcludeInclude属性。

答案 1 :(得分:0)

使用<input type="text" name="UserInformation.Name"><input>绑定到子对象。