说我有以下型号:public class Person{ public string Name { get; set; } public int Age { get; set; }}public class Town{ public string Name { get; set; } public IEnumerable<Person> People { get; set; }}然后,在我的Razor视图中,我有这个:@model Town@using(Html.BeginForm()){ <table> @foreach(var person in Model.People) { <tr> <td>@Html.TextBoxFor(m => person.Name)</td> <td>@Html.TextBoxFor(m => person.Age)</td> </tr> } <table> <input type="submit" />}然后,我有一个POST的动作,如下所示:[HttpPost]public ActionResult Index(Town theTown){ //....}当我发布时,IEnumerable<Person>没有遇到。如果我在Fiddler中查看它,该集合只发布一次,并且不会枚举该集合,所以我得到:People.Name = "whatever"People.Age = 99但是,如果我将People更改为an IList并使用for循环而不是foreach ...@for(var i = 0;i < Model.People.Count;i++){ <tr> <td>@Html.TextBoxFor(m => Model.People[i].Name)</td> <td>@Html.TextBoxFor(m => Model.People[i].Age)</td> </tr>}有用。难道我做错了什么?我错过了什么?
3 回答
![?](http://img1.sycdn.imooc.com/54584cd10001404b02200220-100-100.jpg)
30秒到达战场
TA贡献1828条经验 获得超6个赞
这个问题是不是与IEnumerable或者IList它正进行渲染集合视图的方式。
@for(var i = 0;i < Model.People.Count;i++)
{
<tr>
<td>@Html.TextBoxFor(m => Model.People[i].Name)</td>
<td>@Html.TextBoxFor(m => Model.People[i].Age)</td>
</tr>
}
观察每个列表项,您附加一个连续索引,使模型绑定器能够发挥其魔力
- 3 回答
- 0 关注
- 571 浏览
添加回答
举报
0/150
提交
取消