Asp.net-Mvc
缺少元素時的 MVC/Razor 模型綁定集合
我有一個包含可變長度文本框列表的表單,使用類似於此的模板呈現..
@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