我正在使用带有元数据注释的实体模型。我的控制器方法看起来像这样......
if (!ModelState.IsValid)
{
return View(model);
}
else
{
UpdateModel(model);
repo.Save();
return RedirectToAction("Index");
}
如果我在视图中启用客户端验证,我将从元数据类中获取每个属性的错误。如果我将客户端验证删除,则会从保存到DB而抛出错误,而不是使用错误摘要返回视图。
这是我观点的最重要部分......
<% using (Html.BeginForm())
{%>
<%: Html.ValidationSummary(true) %>
我尝试在调试和发布模式下运行而不调试(ctrl + f5)以及设置断点和调试(f5)但是在没有服务器端验证的情况下获得客户端验证似乎很奇怪。我在这里缺少什么?
答案 0 :(得分:1)
UpdateModel从表单集合,路由参数等填充模型,并在服务器端进行验证。您需要在更新后检查ModelState.IsValid 。通常的模式是......
if (!TryUpdateModel(model))
{
// Validation Failed...
return View(model);
}
// Validation Passed...
请注意,TryUpdateModel捕获异常并在引发异常时返回false。如果不是,那么简单返回ModelState.IsValid。