Asp.net Mvc2数据注释验证(客户端工作,服务器端不?)

时间:2010-08-12 23:12:35

标签: asp.net validation asp.net-mvc-2 data-annotations

我正在使用带有元数据注释的实体模型。我的控制器方法看起来像这样......

        if (!ModelState.IsValid)
        {
            return View(model);
        }
        else
        {
            UpdateModel(model);
            repo.Save();
            return RedirectToAction("Index");
        }

如果我在视图中启用客户端验证,我将从元数据类中获取每个属性的错误。如果我将客户端验证删除,则会从保存到DB而抛出错误,而不是使用错误摘要返回视图。

这是我观点的最重要部分......

<% using (Html.BeginForm())
   {%>
<%: Html.ValidationSummary(true) %>

我尝试在调试和发布模式下运行而不调试(ctrl + f5)以及设置断点和调试(f5)但是在没有服务器端验证的情况下获得客户端验证似乎很奇怪。我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

UpdateModel从表单集合,路由参数等填充模型,并在服务器端进行验证。您需要在更新后检查ModelState.IsValid 。通常的模式是......

if (!TryUpdateModel(model))
{
  // Validation Failed...
  return View(model);
}

// Validation Passed...

请注意,TryUpdateModel捕获异常并在引发异常时返回false。如果不是,那么简单返回ModelState.IsValid。