NET为我们提供了不少验证控件,一定程度上减少了程序员在开发上的工作量,但是有很多时候我们往往会需要自定义一些自己的验证流程,而无法通过.NET中所提供的验证控件来完成。通常验证的话,分为客户端和服务器端验证,这里我们所提到的验证都是指客户端验证。
最常见的做法便是自己写一段JavsScript脚本,根据验证是否通过返回true或者是false。然后通过controlID.Attribute[“事件“] = “JavaScript:FunctionName():”;来使服务器控件被触发的时候调用该JavaScript脚本函数。但是这样写,会有一个问题,那便是当这个页面上存在其它的.NET验证控件的时候,一旦通过自定义的脚本函数验证之后,将不会执行服务器验证控件的验证。
也就是说,当controlID.Attribute[“事件“] 的值若被置为true的时候,编译器便认为已经通过了所有的验证,包括.NET的验证控件,便不再进行验证,直接将空间中的代码送到服务器执行。但是这时其实尚未执行.NET的验证控件的验证。但只要我们把代码稍做改变,当执行完自定义的验证之后,依然可以继续执行.NET验证控件的验证。
Function Validate()
{
if(....) //若通过验证
{ return true;}
else
{return false;}
}
随后我们在后代代码中加上
controlID.Attribute[“事件“] = “JavaScript:if(!FunctionName()){return false;}:”;若没有通过我们的自定义验证,返回false,控件将不会被提交到服务器执行,否则,便继续执行页面上其他空间的验证。
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240826070647288-243310440.jpg)