视图模型
public class MyViewModel {
public Dictionary<int, string> Data { get; set; }
/* ... */
}
然后我有几个
GET
/
POST
得到
Dictionary<int, string>
使用数据库中的一些数据,然后返回
View
:
-
这个
.Key
s将打开
;和
-
这个
.Value
文本区域
供用户编辑。
然后,用户将提交此表单,并调用
岗位
Key
/
Value
对将是
有效的
无效的
如果有无效对,则
岗位
然后,操作将重建
视图模型
,但这次字典应该只包含
无效的
问题:
实现这一目标最简单、最干净的方法是什么?
到目前为止(工作正常),在控制器中:
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++; } %>
问题是为了取悦
模型绑定器
for (var i = 0; i < Model.Data.Count; i++) {...}
循环。