asp.net-mvc – ASP.NET MVC 1.0 – 字典的模型绑定器
发布时间:2020-12-16 07:43:10 所属栏目:asp.Net 来源:网络整理
导读:我有一个包含Dictionary的ViewModel类(以及此问题的其他不相关的东西): public class MyViewModel { public Dictionaryint,string Data { get; set; } /* ... */} 然后我有几个处理字典的GET / POST动作. GET操作将首先填充Dictionary int,string从数据库中
我有一个包含Dictionary的ViewModel类(以及此问题的其他不相关的东西):
public class MyViewModel { public Dictionary<int,string> Data { get; set; } /* ... */ } 然后我有几个处理字典的GET / POST动作. GET操作将首先填充Dictionary< int,string>从数据库中获取一些数据,然后返回一个View: > .Keys将在隐藏的领域;和 然后,用户将提交此表单,并调用POST操作.它将尝试处理输入(该过程无关紧要).一些键/值对将是有效的,一些将是无效的. 如果存在无效对,则POST操作将重建ViewModel,但这次字典应仅包含无效对,并将重新显示相同的View以供用户修复并再次尝试提交. 问题:什么是最简单的&最干净的方法来实现这一目标? 到目前为止(工作正常),在控制器中: public ActionResult MyAction(MyViewModel vm) { /* Process data */ if (are there invalid pairs?) { var vmErrors = new MyViewModel(); /* ... fill the ViewModel ... */ vmErrors.Data = vm.Data .Where(x => IsInvalid(x)) .ToDictionary(x => x.Key,x => x.Value); return View(vmErrors); } } 并且观点: <% var i = 0; foreach (var p in Model.Data) { %> <%= Html.Hidden("vm.Data[" + i + "].key",vm.Key %> <%= Html.TextArea("vm.Data[" + i + "].value",vm.Value %> <% i++; } %> 问题是,为了取悦模型绑定器,我必须使用顺序ID在视图上命名我的字段.但我还必须迭代字典以提取键/值对,因此它不能是for(var i = 0; i< Model.Data.Count; i){...}循环. 解决方法
该文章描述了解决方案 –
Dictionary Model Binder in ASP.NET MVC2 and MVC3
该代码是通用的,也可以与MVC 1一起使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 在使用母版页时,如何为标记分配特定的名称?
- asp.net – 是否可以在多个Web服务器之间共享System.Runtim
- asp.net-mvc – ASP.NET MVC2母版页 – 服务器端脚本无法渲
- asp.net-mvc – mvc route actionlink url使用name而不是id
- asp.net-core-mvc – 在EF7中加载引用
- ASP.NET网址MAX_PATH限制
- 连接到报表服务器的尝试失败 – 在ASP.NET中设置URL和路径?
- asp.net-mvc-3 – C#.NET MVC3 ModelState.IsValid
- asp.net-mvc – 网格中的kendoui ClientTemplate无法在asp.
- 服务器NLog日志无法正常写入或者只能部分写入
推荐文章
站长推荐
热点阅读