Goa*_*ine 6 collections asp.net-mvc model-binding razor
我有一个包含可变长度文本框列表的表单,使用类似于此的模板呈现.
@Html.TextBox("items[" + itemIndex + "].Title", someValue)
Run Code Online (Sandbox Code Playgroud)
所以最终呈现的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">
Run Code Online (Sandbox Code Playgroud)
在表单提交上,这很好地绑定到我的模型.但是,我有一个删除按钮,使用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">
Run Code Online (Sandbox Code Playgroud)
...而且索引不再是连续的.这似乎混淆了MVC和我的模型绑定器只传递了第一行,而不是最后一行.我做错了什么,或者如果列表中的索引不连续,MVC是否会失败?这个问题的最佳解决方案是什么?
我希望尽可能避免使用JS重新索引所有内容.
谢谢!
菲尔·哈克(Phil Haack)在不久前发表过与此类似的内容,虽然我不确定它是否仍然与MVC 3相关.该帖子包含了针对非顺序索引问题的解决方法 -
http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx