MVC模型验证

一、在动作方法中执行验证
Controller中使用ModelState.AddModelError()方法在验证中根据条件输出错误信息。
如: ModelState.AddModelError("UserName", "用户名不能为空");
需要注意的是,这句生成的是属性级错误,因为AddModelError的第一个参数指定的是被验证的属性名;
如果要改成模型级错误,则保持第一个参数为空,如:ModelState.AddModelError("", "用户名不能为空");

属性级错误和模型级错误
属性级错误是显示在 字段后面
模型级错误是统一显示在页面指定的位置
(自己总结:模型级错误用处就是动作方法中逻辑处理过程需要抛出的错误)
如图所示:

对应的cshtml页面代码:

 
Html.ValidationSummary()辅助器默认会显示所有错误,包括模型级错误和属性级错误。
重载 Html.ValidationSummary(true),boolean值为true代表只显示模型级错误,忽略属性级错误,如:

 可以看到,现在它忽略了属性级错误,只会显示模型级的。

二、在模型类中执行验证
在模型类中通过 验证注解属性 来指定验证规则,验证注解属性有内建的默认模型绑定器DefaultModelBinder进行检测并强制执行。
在对模型类运用绑定过程的任何地方都会强制执行验证规则,而不只存在于个别方法中。
内建的验证注解属性有:
Compare
Range
RegularExpression
Required
StringLength

三、其他验证方式
除了以上两种之外,还有其他的方式进行模型验证,如:
1、在模型绑定器中验证;
2、创建自验证模型;
详见《精通ASP.NET MVC3框架》485页、492页

posted @ 2018-10-08 13:55  skybirdzw  阅读(1339)  评论(0编辑  收藏  举报