說(shuō)我有以下型號(hào):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視圖中,我有這個(gè):@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" />}然后,我有一個(gè)POST的動(dòng)作,如下所示:[HttpPost]public ActionResult Index(Town theTown){ //....}當(dāng)我發(fā)布時(shí),IEnumerable<Person>沒(méi)有遇到。如果我在Fiddler中查看它,該集合只發(fā)布一次,并且不會(huì)枚舉該集合,所以我得到:People.Name = "whatever"People.Age = 99但是,如果我將People更改為an IList并使用for循環(huán)而不是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>}有用。難道我做錯(cuò)了什么?我錯(cuò)過(guò)了什么?
3 回答

30秒到達(dá)戰(zhàn)場(chǎng)
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
這個(gè)問(wèn)題是不是與IEnumerable或者IList它正進(jìn)行渲染集合視圖的方式。
@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>
}
觀察每個(gè)列表項(xiàng),您附加一個(gè)連續(xù)索引,使模型綁定器能夠發(fā)揮其魔力

慕容708150
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
這是正常行為。模型綁定器使用呈現(xiàn)的html中的輸入元素的name屬性。使用與一個(gè)索引循環(huán)是有模型綁定可以關(guān)聯(lián)到模型的唯一名稱的唯一途徑
- 3 回答
- 0 關(guān)注
- 589 瀏覽
添加回答
舉報(bào)
0/150
提交
取消