首页 新闻 会员 周边

求助大神 mvc里的model属性验是前台验证还是后台验证??

0
悬赏园豆:100 [待解决问题]

小弟新手,在群里问的 说 model的属性验证有的说是前台验证,有的说是后台验证。

说前台验证的理由是:用model属性 必须引用vs的那个验证js,如果不引用就不管用了,但是如果是属于前台验证的话,为什么 控制器后台代码还有这句话: if (ModelState.IsValid) 莫非,微软又搞成了以前的服务器控件类似的东东吗??

 

如果mode验证输入后台验证的话,那我想自己添加js验证代码或验证插件,类似web form的用法一样,但是mode验证也有前台提示,是不是不用erromessage 那个错误信息提示就可以了呢?、

 

==============

看来只有自己试了才知道答案啊,明明是后台

mvc
IDOER的主页 IDOER | 初学一级 | 园豆:19
提问于:2016-08-02 22:14
< >
分享
所有回答(8)
0

 

model属性上加的某些过滤器,或者属性类型本身,asp.net mvc框架可以自动生成前台jQueryValidate验证工具的验证语法, 并且,这些过滤器,在后台也会经过"模型绑定"这一关的验证  .

所以,正常情况下,前后台会分别分进行一次验证 , 前台验证,是通过jQueryValidate拦截表单的提交动作,检查input上绑定的验证规则,后台验证则是发生在"模型绑定"这一环节,

当然,你也可以在后台主动进行一些验证,并通过ModelState.AddModelError("",""),添加一些属性对应的错误提示消息.

这个机制, 就算你前台没有引入jQueryValidate,同样会触发后台的验证并抛出错误消息.

前台验证是为了减少后台的工作负荷,把注定要失败的提交,阻止在前台.

后台验证则是最最最最最最最最必须的 , 我觉得 "任何时候 ,都不要轻易相信来自客户端的提交, 必须经过后台的验证"

 

wlclass | 园豆:217 (菜鸟二级) | 2016-08-02 23:55

另外补充一个. 您上面提到的"必须引用vs的那个验证js". 是jQueryValidate

它本身是一个第三方的开源库,并非vs或微软的

支持(0) 反对(0) wlclass | 园豆:217 (菜鸟二级) | 2016-08-03 00:02

谢谢回复,我试了 去掉jQueryValidate,后台一样是可以验证,如果我不用jQueryValidate的验证,因为他的验证样式感觉不好看,比如我自己增加个弹出提示什么的,自己写jquery 前台验证,后台还是用model模型验证,但是不写erromessage错误提示 也算是前后台都有验证了吧

支持(0) 反对(0) IDOER | 园豆:19 (初学一级) | 2016-08-03 09:22

@efreer: 当然算 , 如果有这个必要的话 :)

支持(0) 反对(0) wlclass | 园豆:217 (菜鸟二级) | 2016-08-03 09:39
0

正确答案是前后端都验证了  前端必须引用js验证  后端验证是发生在模型绑定期间 

所谓模型绑定期间就是 通过form表单 提交值的时候 它会在请求提交的值时候验证 其它不会验证 比如我直接在后台传递一对象是不会发生验证的 不信可以测试下

狂扁小朋友 | 园豆:10 (初学一级) | 2016-08-03 07:21
0

都验证了吧?客户端验证是不可靠的,这基本算是一个原则。。。

顾晓北 | 园豆:10844 (专家六级) | 2016-08-03 08:54
0

model验证就是后端验证,前端的验证那是因为引用了插件jQueryValidate配合mvc HTMLHelper里的ValidationMessageFor 进行验证,其实前端最后代码跟自己写js验证是一样的,可以运行之后查看页面源码. 

wuyubing | 园豆:204 (菜鸟二级) | 2016-08-03 09:26
0

前后台都必须验证
前端:要知道,用户是不懂计算机的,操作中有不规格的数据,要及时提示给用户,而不是填完所有内容后提交到服务器,让服务器返回提示,不仅不及时,还容易造成已填写数据丢失,网上注册,填写完账号,焦点离开后,就提示绿勾或者红字被占用

后端:不用说了,数据规格要求(如数据库int字段是不能存入abc的),各种输入性攻击等等,必须做的

分余力 | 园豆:67 (初学一级) | 2016-08-03 10:23
0

前台后台都有验证。

安于心 | 园豆:206 (菜鸟二级) | 2016-08-03 10:55
0

这个是后台,但js本身就带有验证

臭臭cc | 园豆:216 (菜鸟二级) | 2016-08-03 11:13
0

model里面的是验证后台

同时配合 validate.js 验证前台  

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-08-05 13:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册