无法对视图模型中的集合进行建模绑定

时间:2015-09-30 12:16:42

标签: asp.net-mvc

我有这样的观点:

@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
}

我已经省略了这个问题中不必要和明显的部分,例如表格的标记。

1 个答案:

答案 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,您可以将其发布到控制器。