我有一个班级:
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”,但它不起作用。 (如果我有一个“列表客户”,那么它将被填充)
感谢。
答案 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/