2012-11-09 56 views
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來更正此問題。

我找不到任何索引是保留字的地方。任何想法爲什麼發生這種情況?

回答

1

Mvc模型綁定可以通過將連續索引綁定到集合中的項目來處理列表,如示例中所示。

但是,您可以使用任何給定鍵將mvc綁定,它通過使用名爲index的具有相同特異性的表單字段來完成此操作。

E.g.

A.index = "aaa" 
A[aaa].name = "hello" 
A.index = "bbb" 
A[bbb].name = "world" 

菲爾哈克給出了一個很好的教程這個 http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

的mvc也許在這一點上感到困惑,並試圖調用此類型的結合