MVC数据验证详解
一、一般情况
对于使用过手动音量调节框架的人来说,对手动音量调节的数据验证不会陌生,比如,我有一个模型如下:
公共类用户信息{[必需的(错误消息='用户名不可为空1111')]公共字符串用户名{ get设置;}公共字符串做爱设置;}公共字符串手机{ get设置;}公共字符串地址{ get设置;} }前端:
@使用(Html .begin inform()){ @ Html .antiforgrytoken()div class=' form-horizontal ' H4用户信息/H4 HR/@ Html .ValidationSummary(true,",new { @ class=' text-danger ' })div class=' form-group ' @ Html .标签(型号=型号.UserName,HTMl Attributes s 3360 new { @ class=' control-label col-MD-2 ' })div class=' col-MD-10 ' @ Html .编辑(模型=模型.UserName,new { HTMl Attributes=new { @ class=' form-control ' } })@ Html .ValidationMessageFor(model=model .UserName ' ',new { @ class=' text-danger ' })/div/div class=' form-group ' @ Html .标签(型号=型号.Sex,HTMl Attributes s 3360 new { @ class=' control-label col-MD-2 ' })div class=' col-MD-10 ' @ Html .编辑(模型=模型.Sex,new { HTMl Attributes=new { @ class=' form-control ' } })@ Html .ValidationMessageFor(model=model .Sex ' ',new { @ class=' text-danger ' })/div/div class=' form-group ' @ Html .标签(型号=型号.Mobile,HTMl Attributes s 3360 new { @ class=' control-label col-MD-2 ' })div class=' col-MD-10 ' @ Html .编辑(模型=模型.手机,新的{ HTMl Attributes=new { @ class=' form-control ' } })@ Html .ValidationMessageFor(model=model .Mobile,',new { @ class=' text-danger ' })/div/div class=' form-group ' @ Html .标签(型号=型号.Address,HTMl Attributes s 3360 new { @ class=' control-label col-MD-2 ' })div class=' col-MD-10 ' @ Html .编辑(模型=模型.地址,新的{ HTMl Attributes=new { @ class=' form-control ' } })@ Html .ValidationMessageFor(model=model .地址'',新的{ @ class=' text-danger ' })/div/div class=' form-group ' div class=' col-MD-offset-2 col-MD-10 '输入类型='提交'值=' Create ' class=' BTN BTN-默认'//div/div }效果:
是的,MVC可以通过对一些属性添加一定的特性来对数据进行验证。这对大家来说可能并不陌生。
如果仅仅是这样就完事了,那么也就没事么意思了。
二、常用情况
在实际的开发中,我们大都是通过EF,或者其他方式,使得数据库中的每一个表或视图,都在代码中对应的一个类模型,对于通过数据库生成的模型,我们不宜修改,退一步讲,即使我们在这个类中对一些属性增加一些数据验证的特性,那么,数据库发生变化后,如果我再重新生成这些模型,我们之前添加好的验证特性将没有了,那么,我们如何解决这样的问题呢?
假如:
公共类用户信息{公共字符串用户名{ get设置;}公共字符串做爱设置;}公共字符串手机{ get设置;}公共字符串地址{ get设置;} }UserInfo是通过数据库生成的一个模型,对于数据库生成的模型,我们不宜修改。但那是,我们又需要对这个模型中的某些属性进行数据验证,比如需要对用户名属性进行非空验证,那么我们如何做呢?
大家通常会想到部分类,是的,我们可以通过部分类来解决上述问题。
首先,我们将模型中的类加上关键字部分的,然后我们再写一个这个模型的部分类。
公共分部类用户信息{[必选(错误消息='用户名不可为空1111')]公共字符串用户名{ get设置;} }但是,这样会提示我们一个错误,就是类中存在重复的属性,是的,部分类中,属性是不可以重名的。那么,我们该怎么办呢,MVC框架已经给了我们解决方案了。
我们可以这样写:
[元数据类型(类型为(meteuserinfo)]公共分部类userinfo {私有类meteuserinfo {[必需的(errormessage=' username不能为null 1111')]公共字符串username { get设置;}}}这样,我们上面的问题就解决了。
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。