0

我的控制器操作在这里:

[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 更改为 _index 来解决此问题。

我找不到索引是保留字的任何内容。关于为什么会发生这种情况的任何想法?

4

1 回答 1

1

Mvc 模型绑定可以通过将连续索引绑定到集合中的项目来处理列表,如您的示例所示。

但是,您可以使用任何给定的键使 mvc 绑定,它通过使用具有相同特异性的表单字段来实现这一点index

例如

 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 maybe getting confused at this point and trying to invoke this type of binding

于 2012-11-09T16:36:27.013 回答