我有这样的观点:
@model Foo
@Html.DisplayFor(model => model.FooName);
@{
int counter = -1;
}
@foreach(var bar in Model.Bars)
{
counter++;
<tr>
<td><span name = "Bars[@counter].BarName">@bar.BarName</span></td>
</tr>
}
其中:
class Foo
{
public string FooName { get; set; }
public ICollection<Bar> Bars { get; set; }
}
class Bar
{
public string BarName { get; set; }
}
即使我的观点是正确的,但当我回发Foo
时,它也不会回发Bars
。
public ActionResult DoStuffWithFoo(Foo foo)
{
Debug.Assert(foo.Bars != null); // fails
}
我已经省略了这个问题中不必要和明显的部分,例如表格的标记。
答案 0 :(得分:2)
您应该了解,在form
帖子中,您只发布inputs
中的值,因此您应该这样:
@for(var i = 0; i < Model.Bars.Count(); i++)
{
<tr>
<td><span>@Html.TextBoxFor(x=> Model.Bars[i].BarName)</span></td>
</tr>
}
Html.TextBoxFor
帮助创建input
,您可以将其发布到控制器。