Asp.net-Mvc

缺少元素時的 MVC/Razor 模型綁定集合

  • April 29, 2013

我有一個包含可變長度文本框列表的表單,使用類似於此的模板呈現..

@Html.TextBox("items[" + itemIndex + "].Title", someValue)

所以最終渲染的 HTML 看起來像這樣……

<input id="items_0__Amount" type="text" value="Apple" name="items[0].Title">
<input id="items_1__Amount" type="text" value="Banana" name="items[1].Title">
<input id="items_2__Amount" type="text" value="Orange" name="items[2].Title">

在送出表單時,這可以很好地綁定到我的模型。但是,我有一個刪除按鈕,它使用 Javascript 從表單中刪除一行或多行。問題是,如果你刪除中間行,HTML 看起來像這樣……

<input id="items_0__Amount" type="text" value="Apple" name="items[0].Title">
<input id="items_2__Amount" type="text" value="Orange" name="items[2].Title">

…並且索引不再連續。這似乎讓 MVC 感到困惑,我的模型綁定器只通過了第一行,而不是最後一行。我是否做錯了什麼,或者如果列表中的索引不連續,MVC 是否會失敗?這個問題的最佳解決方案是什麼?

如果可能,我想避免使用 JS 重新索引所有內容。

謝謝!

Phil Haack 不久前發表過類似的部落格文章,雖然我不確定它是否仍然與 MVC 3 相關。這篇文章包括非順序索引問題的解決方法 -

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

引用自:https://stackoverflow.com/questions/7399454