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/

10-12 13:27