ASP.NET MVC的集合模型绑定要求<input />
名称属性中的方括号索引才能正确绑定集合模型,例如<input name="Lines[0].Name" />
的操作如下:
public ActionResult Create(IEnumerable<MyInputModel> Lines) {
// ...
}
但是,名称属性中的句号和方括号是某些jQuery插件的known issue,包括我正在使用的Select2列表选择器。
由于我不想破解Select2,因此如何告诉ASP.NET MVC使用句点或下划线之类的内容而不是方括号来界定集合索引,例如
<input name="Lines.0.Name" />
?注意:我正在使用此collection model binding technique生成非连续的
Guid
索引,因此已经声明了自定义HtmlFieldPrefixScope
。更新:我通过破解Select2事件中的自定义滚动/调整大小事件名称解决了此问题,这些事件名称将无效的
[
或]
字符传递给bind
/ unbind
jQuery方法。 最佳答案
public ActionResult Create(List<MyInputModel> Lines) {
// ...
}
<input name="Lines[0].Name" />
确保输入名称与列表名称相同,并且索引以0开头。
哦,对不起,我想念。尝试这种方式。
@foreach (var item in Model)
{
var name = string.Format("Lines[{0}].name", i);
<input type="text" name="@name" value="@item.name" />
}
关于jquery - ASP.NET MVC方括号集合模型绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12530536/