我的控制器操作在这里:
[HttpPost]
public ActionResult Index(List<Widget> widgets, int index)
{
widgets.RemoveAt(index);
return View(widgets);
}
我对这个动作的帖子如下:
[0].Name a
[1].Name b
[2].Name c
index 1
当我调试时,我发现列表中只有一个项目。我可以通过将参数名称从索引更改为_index来解决问题。
我找不到索引是保留字的任何内容。有没有想过为什么会这样?
答案 0 :(得分:1)
Mvc模型绑定可以通过将连续索引绑定到集合中的项目来处理列表,如示例所示。
但是,您可以使用任何给定的密钥获取mvc绑定,它通过使用名为index
的具有相同特异性的表单字段来完成此操作。
E.g。
A.index = "aaa"
A[aaa].name = "hello"
A.index = "bbb"
A[bbb].name = "world"
Phil haack给出了一个很好的教程 http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
Mvc可能会在这一点上感到困惑并试图调用这种类型的绑定