其实有的时候需要客户端和服务端双重校验,为什么这么说呢? 比果说,一个用户名的文本框,在客户端我们通过JS校验,只能输入字母和数字,不能有特殊字符!通常情况下是没有问题的,但是总有那么一丢丢人想方设法的去“搞破坏” ,这个时候就需要进行双重校验了!说白了,就是服务端和客户端都进么校验!
比如说:Button有:OnClick事件和OnClientClick属性,前者一般就是服务端的点击事件!后者则是客户端的点击事件!
我们来做一个测试!在Default.aspx页面中添加如下代码!
<
script language
=
"
javascript
"
type
=
"
text/javascript
"
>
function buttonClick() {
alert( " 我是客户端点击事件 " );
return false ;
}
function buttonClick() {
alert( " 我是客户端点击事件 " );
return false ;
}
</script>
页面代码:
<
form id
=
"
form1
"
runat
=
"
server
"
>
< div >
< asp:Button ID = " Button1 " runat = " server " Text = " 些Button是服务端控件,默认使用OnClientClick事件,请禁用浏览器的Js功能体验 "
OnClick = " Button1_Click " OnClientClick = " return buttonClick(); " />
< asp:Label ID = " Label1 " runat = " server " Text = "" ></ asp:Label >
</ div >
< div >
< asp:Button ID = " Button1 " runat = " server " Text = " 些Button是服务端控件,默认使用OnClientClick事件,请禁用浏览器的Js功能体验 "
OnClick = " Button1_Click " OnClientClick = " return buttonClick(); " />
< asp:Label ID = " Label1 " runat = " server " Text = "" ></ asp:Label >
</ div >
</form>
cs文件代码:
protected
void
Button1_Click(
object
sender, EventArgs e)
{
this .Label1.Text = " 我是服务端点击事件 " ;
{
this .Label1.Text = " 我是服务端点击事件 " ;
}
大家运行看看是什么效果? 你可能会发现,只弹出了JS中的代码! 没错,这正是我们想要的效果,通过return false 来"屏蔽"服务端的校验!好处是什么? 就是不用刷新页面呀!
你再把浏览器的脚本功能禁用了,你再试一试,看看又是什么效果?
呵呵,通过又重校验就能确保用户的非法录入,这正是我们想要的结果!