【问题标题】:Model Binding Issue When the Parameter Name is "Index" When Model Binding a Collection模型绑定集合时参数名称为“索引”时的模型绑定问题
【发布时间】:2013-03-27 03:51:36
【问题描述】:

我的控制器操作在这里:

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

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

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 model-binding


    【解决方案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 可能会感到困惑并尝试调用这种类型的绑定

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多