关于ASP.Net验证控件的服务端引用
在ASP.Net中提供了五个验证控件,http://pic002.cnblogs.com/images/2012/312019/2012080723370435.jpg
这些是负责验证用户提交的数据是否负责要求的,我们都知道,微软.net提供的控件都是服务端控件,这些验证控件也不例外。
在学习的时候只知道这些是是服务端的控件,他们的作用是在客户端和服务端分别对用户提交的数据进行验证,使我们不用再在客户端写js代码验证和后台的数据验证,只用拖一个控件,指定其验证的数据就可以达到想要的效果,真是又方便又安全。
但前段时间看到有说只要用浏览器提供的开发人员工具,禁用掉相应的js代码,就可以绕过验证控件了,这位在他的博客把他的方法写的很详细(http://www.cnblogs.com/xxm6318/archive/2012/07/30/2614948.html#2437584)我按照他说的方法试了试,确实可以。。。
这个让我很费解,既然有服务端的验证,为什么禁用了客户端的js就可以同时禁用掉服务端呢?
后来我问了我的朋友,他告诉我了一个方法,“Page.IsValid”——获取一个值,该值指示验证是否成功;这个是在使用验证控件时,提交数据时在后台使用的,只用使用一次,他可以判断当前页面使用的验证控件是否全部通过验证,返回值是true/false,所以在提交数据钱要做一次判断,判断验证控件是否全部通过,这样才能使验证控件大道服务端验证的效果;这样,即便在客户端删除了js代码,验证控件还是可以正常使用。
示范如下:
[*]后台不加判断,禁用js代码:
前台代码:
http://pic002.cnblogs.com/images/2012/312019/2012080723374367.jpg
后台代码:
http://pic002.cnblogs.com/images/2012/312019/2012080723381830.jpg
使用火狐的firebug禁用掉提交按钮的onclick事件
http://pic002.cnblogs.com/images/2012/312019/2012080723392577.jpg
提交前:
http://pic002.cnblogs.com/images/2012/312019/2012080723394260.jpg
提交后:
http://pic002.cnblogs.com/images/2012/312019/2012080723400290.jpg
禁用之后,验证控件有做提示,不能提交空数据,但提交还是运行,使结果获得了一个空数据。
[*]后台加判断,禁用js代码:
后台代码:
http://pic002.cnblogs.com/images/2012/312019/2012080723403419.jpg
提交前:
http://pic002.cnblogs.com/images/2012/312019/2012080723410583.jpg
提交后:
http://pic002.cnblogs.com/images/2012/312019/2012080723414330.jpg
提交未能运行,达到了验证的效果!
感谢提出这个问题的朋友,使我能补上验证控件这一课!
页:
[1]