ModelState.IsValid


 

当调用ModelState.AddModelError方法时:

·调用ControllerModelState属性

·调用ControllerModelState属性就是调用ControllerViewData属性的ModelState

·其实调用的就是ViewDataDictionary类的ModelState属性

·当添加错误信息时,就是调用ModelState属性的AddModelError方法,

其中ModelState属性是ModelStateDictionary类型

·当添加错误信息时,就是向ModelState类实例中Errors属性中添加kv对,也就是对ModelErrorCollection

添加错误信息

 

然后再提一下IsValid属性:

public  bool  IsValid
{
    
get
    {
        
return  this .Values.All < ModelState > ( delegate  (ModelState modelState) 
        {
            
return  (modelState.Errors.Count  ==  0 );
        });
    }
}

 

这下就一目了然了:验证数据后,会在ModelState

 

Post提交过来的数据被验证时,当有错误信息时,被添加到ModelState类实例的ModelErrorCollection集合属性中,然后控制器的ModelState属性的Values属性(ModelState类型),如果这个ModelState中的错误的信息的数目为0时,则验证通过,否则验证不通过。

 

当验证不通过时,不会执行创建动作中的IsValid之后的逻辑,而直接返回视图。这时,错误信息已经添加到了控制器的ViewData中。然后,在视图中显示。

 

 

 

 

 

默认情况下,ASP.NET MVC框架在模型帮顶时执行验证逻辑。
模型邦定器一旦完成对模型属性的更新,就会利用当前的模型元数据获得模型的所有验证器。这运行时提供了一个验证其(DataAnnotationModelValidator)来与注解一同工作。这个模型验证器会找到所有的验证特性并执行它们包含的验证逻辑。ModelBinder捕获所有失败的验证其规则并把它们放入ModelState中。
 
模型绑定的主要产物就是ModelState(Controller的属性)。
这个对象不仅包含了用户所有想放入模型属性里的值,也包括与每一个属性相关联的所有错误,和模型本身的错误,如果存在错误ModelState.IsValid返回false。
 
ModelState("LastName").Errors[0].ErrorMessage;//查看LastName属性的错误信息
View中查看:@Html.ValadationMessageFor(m=>m.LastName)
 
在编辑操作的PostAction中,可以先使用ModelState.IsValid属性判断是否通过验证,在不同对待。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM