MVC 5 Razor在验证失败时处理视图
本文关键字:处理 视图 失败 验证 Razor MVC | 更新日期: 2023-09-27 18:00:34
我有一个带有WebGrid的MVC Razor布局。
@Html.ValidationSummary()
<div>
@model List<DelsDTO>
@{
var grid = new WebGrid(Model, defaultSort: "Name");
}
@grid.GetHtml(headerStyle: "webgrid-header", columns: grid.Columns(
grid.Column(header: "Select", format: @<text><input name="checkedDelUnits" type="checkbox" value="@item.delId" /></text>),
grid.Column("DelId", header: "ID"),
grid.Column("Name", style: "nameColLen"),
grid.Column("CRate", header: "C Rate", style: "span1", format: (item) =>
(item.CRate == null) ? String.Empty : String.Format("{0:0.00}", @item.CRate))
)
)
<td><input type="submit" name="saveChanges" value="Save Changes" /></td>
}
</div>
使用提交按钮,我在控制器方法中执行验证检查。如果验证失败,我设置:
ModelState.AddModelError("", "No records Selected");
return View("Search");
在这一点上,我没有视图的数据源,所以返回的是一个空网格。处理此问题的最佳实践是什么?
如果验证失败,我是否应该将webgrid数据源(模型)从视图传递给控制器,然后再传递回来?如果是,怎么办?
如果验证失败,您基本上需要再次创建模型,因为它不会保存在任何地方。因此,如果在最初的行动中,你正在做这样的事情(只是下面的一个想法):
var model = GetGridModel();
return View("Search", model);
当验证失败时,您需要在提交时做同样的操作:
ModelState.AddModelError("", "No records Selected");
var model = GetGridModel();
return View("Search", model);