我们有一个顶点复杂模型,其中包含大约3或4个嵌套集合。 在使用编辑器模板时,我们从部分调用中获取了大量数据,这些数据基于ID,因此在我们的视图中重复了名称和ID。我想我们可以使用jQuery来改变它,但是我们正在使用每个循环来构建我们自己的ID和名称。显然,这将破坏模型绑定器。
我做了一些研究,似乎我可以使用for循环和0-base我的ID和表单字段名称(How to show validation message in mvc4 razor)。但让客户端和服务器记住使用的最后一个数字可能不可靠。所以我的问题是,名称和ID必须是0还是只能是唯一的?我宁愿使用项的唯一ID而不是迭代的索引。例如,我可以修改以下内容并在Html元素对象中添加自己的ID和名称吗? 在列表中,我可以模仿使用editorFor生成的输出并维护验证和绑定吗?
@for (var i = 0; i < Model.UsersOfList.Count; i++)
{
<li>
@Html.TextBoxFor(m.UsersOfList[i].LoginName, new {@class="textbox_LoginInfoAndPermission"})
@Html.ValidationMessageFor(m => m.UsersOfList[i].LoginName)
@Html.TextBoxFor(m.UsersOfList[i].UserName, new {@class="textbox_LoginInfoAndPermission"})
@Html.ValidationMessageFor(m => m.UsersOfList[i].UserName)
</li>
}
答案 0 :(得分:0)
我相信你指的是non-sequential index binding,它允许使用任意ID代替从零开始的连续整数。
示例(来自链接文章):
<form method="post" action="/Home/Create">
<input type="hidden" name="products.Index" value="cold" />
<input type="text" name="products[cold].Name" value="Beer" />
<input type="text" name="products[cold].Price" value="7.32" />
<input type="hidden" name="products.Index" value="123" />
<input type="text" name="products[123].Name" value="Chips" />
<input type="text" name="products[123].Price" value="2.23" />
<input type="hidden" name="products.Index" value="caliente" />
<input type="text" name="products[caliente].Name" value="Salsa" />
<input type="text" name="products[caliente].Price" value="1.23" />
<input type="submit" />
</form>
这使您可以随意添加/删除项目而无需维护索引。它还允许您在请求中使用非整数值。 需要为每个项目添加额外的隐藏字段;这允许模型绑定器“看到”它并且模型将从发布到控制器的数据中正确实例化。