ASP.NET验证控件与客户端脚本的一点小冲突

  一个简单的ASP.NET页面,一个Email输入框加一个提交按钮(asp:button),所要做的就是通过RequiredFieldValidator和RegularExpressionValidator来验证输入内容是否符合Email的要求,并通过提交按钮来执行提交操作。

  这里要说的问题就是,如果仅仅是这样的话,那么当我们点击提交按钮时,如果输入的内容不符合要求的话,控件会直接显示错误信息,页面不会重新刷新,其实控件是自己生成了一系列的脚本来进行的判断,和我们自己写javascript是一个道理。如果我们给按钮添加OnClientClick事件,并自己添加一些脚本的话,则验证控件的判断依旧会起作用,但是至于是否阻止按钮的提交就全依赖于OnClientClick事件中返回的内容是false还是true,同时页面会postback并执行后台代码,这也就说明一个问题,其实所谓的验证控件也是把自己的脚本绑到了按钮上,并控制其提交的时机,如果我们自己编写客户端脚本的话,就要负起判定是否提交的全责,而不能将责任全寄托到服务器端控件上。