将集合作为模型传递而没有有序索引

Pat*_*ryk 3 asp.net-mvc razor asp.net-mvc-5

我有对象列表,我将它传递给查看并正确呈现. 在此输入图像描述

当我提交此表单时,我将获得相同的模型.一切正常.不幸的是,当我决定使用jquery动态删除一些记录时,它看起来像这样 在此输入图像描述 提交表单后,我只获得了2个第一项的列表.这可能是因为索引不是自然顺序(0,1,3而不是0,1,2).有什么我可以做的很容易修复它(不使用jquery来改变输入,smth服务器端)?我试图将数组更改为List或Ienumerable但仍然没有.我知道我可以将所有内容打包并发送为json或只是阅读formCollection,但我想先问一下这里是否有其他解决方案.

小智 5

您需要包含该Index属性的输入,以允许您回发非连续的索引器.索引的值必须与集合索引器匹配.例如

for(int i = 0; i < model.tagList.Count; i++)
{
  @Html.TextBoxFor(m => m.tagList[i].Name);
  <input type="hidden" name="tagList.Index" value="@i" />
}
Run Code Online (Sandbox Code Playgroud)

  • _hidden_​​ 输入的名称应该是`tagList.Index`,而不是`tagList[@i].Index`。除此之外,一切都是正确的。参见 [Model Binding To A List](http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/) 的 **Non-Sequential Indices** 部分更多细节。 (2认同)