asp.net mvc中的模型绑定通用列表为null
我在index.html的razor foreach中绑定对象:
视图
@using (Ajax.BeginForm("Save", "Unit", new AjaxOptions { OnSuccess = "onSuccess" })) { @foreach (var item in Model) { @Html.HiddenFor(modelItem => item.UnitId) @Html.EditorFor(modelItem => item.Name) @Html.EditorFor(modelItem => item.ErrorText) }
}
我用fiddler抓住了发送到我的action参数的数据,得到了这个:
item.UnitId=5& item.Name=111111111111& item.ErrorText=fsdddddddddddddddd+& item.UnitId=5& item.Name=+& item.ErrorText=dddddd+&
行动
public ActionResult Save(List units ) { return new EmptyResult(); }
视图模型
public class Unit { [HiddenInput(DisplayValue = false)] public int UnitId { get; set; } [DataType(DataType.MultilineText)] public string Name { get; set; } [DataType(DataType.MultilineText)] public string ErrorText { get; set; }
为什么我的单位实例为空? 属性匹配所以他们应该绑定!
我忽视了什么吗?
你需要使用for
循环而不是foreach
循环。 此外,最好使您的Model类具有属性集合。
你的模型可能是这样的:
public class UnitsViewModel { public List Units { get; set; } public class Unit { [HiddenInput(DisplayValue = false)] public int UnitId { get; set; } [DataType(DataType.MultilineText)] public string Name { get; set; } [DataType(DataType.MultilineText)] public string ErrorText { get; set; } } }
你可以在cshtml中执行以下操作:
@for (int i = 0; i < Model.Count; i++) { @Html.HiddenFor(m => m.Units[i].UnitId) @Html.EditorFor(m => m.Units[i].Name) @Html.EditorFor(m => m.Units[i].ErrorText) }
- 尝试添加一对多关系时出现NullReferenceException
- 使用Flags枚举时如何减少ASP.NET MVC视图中的代码重复
- 如果打开自定义错误,是否会触发global.asax Application_Error事件?
- 服务器未返回状态码为400(.net)的JSON
- Web API操作参数间歇性为null
- ASP.NET捆绑/缩小和嵌入式资源
- 找不到方法:’Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)’
- 模型列表的远程validation
- 如何将ASP.NET MVC应用程序读取权限授予注册表项?