asp.net - 绑定到嵌套集合的MVC模型

时间:2013-08-23 22:21:29

标签: asp.net-mvc-4 model-binding

我有一个班级:

public class ClientInformation{
    public string UserName {get; set;}
    public ICollection<RegionDistrictCity> RegionDistrictCity
    {
        get;
        set;
    }

  public class RegionDistrictCity
  {
     public string Region { get; set; }
     public string District { get; set; }
     public string City { get; set; }
  }
}

为了使模型绑定器填充集合“ICollection RegionDistrictCity”,应如何在html中为属性Region,Distirct,City格式化输入元素的name属性?

我尝试使用类型为“ClientInformation”的参数的动作方法和格式化为“[index] .PropertyName”的html名称属性,但在这种情况下,只有属性“UserName”被绑定。

我尝试使用参数名称为“client”的操作方法,并将html名称属性格式化为“client [index] .PropertyName”,但它不起作用。 (如果我有一个“列表客户”,那么它将被填充)

感谢。

1 个答案:

答案 0 :(得分:11)

在MVC4中,您应该使用 for循环而不是foreach 来绑定您的集合。然后,当您提交数据时,模型活页夹将能够填充您的模型。

@for (int i = 0; i < Model.RegionDistrictCity.Count; i++)
        {
            @Html.EditorFor(model => Model.RegionDistrictCity[i].Region)
        }

但这只有在您没有动态删除或添加项目时才会有效。 如果你想这样做,你应该使用steve sanderson创建的BeginCollectionItem帮助器。 http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/