为了实现验证,.net提供了一个javascript脚本,当我们生成一个asp.net页面时,通过查看页面源代码的方式,会发现都调用了下面一个javascript文件:
<script src="WebResource.axd" type="text/javascript"> </script>
asp.net的大部分验证都是通过这个文件进行的,下面我就以一个最简单的必入项验证控件来说明一下:

第一步:
当进入页面时首先赋值:var Page_Validators =  new Array(document.getElementById("RequiredFieldValidator1"));
然后会根据这个变量的值遍历进行验证,
接着调用ValidatorOnLoad方法,然后在这个方法中调用ValidatorHookupControlID,ValidatorHookupControl,ValidatorHookupEvent

最主要是在ValidatorHookupEvent中给控件加载事件   
eval("control." + eventType + " = func;");

比如onblue,onkeypress,onchange等事件

接下来根据加载的事件当事件发生时调用对应的方法

第二步:
当用户输入时调用ValidatedTextBoxOnKeyPress,主要是用来判断用户是否输入了回车键,如果是的话触发验证

第三步:
当用户输入回车或者离开焦点时调用以下方法进行验证:
ValidatorOnChange,ValidatorValidate,IsValidationGroupMatch,RequiredFieldValidatorEvaluateIsValid,ValidatorGetValue,
ValidatorTrim,ValidatorUpdateDisplay,ValidatorUpdateIsValid,AllValidatorsValid
主要就是根据用户的输入进行判断,决定是否显示错误信息:val.style.display = val.isvalid ? "none" : "inline";

附修改后的带有一个必入项验证的页面源码(将WebResource.axd文件中相应的方法都移到本页面了)

Asp.Net中验证控件简单分析<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Asp.Net中验证控件简单分析
Asp.Net中验证控件简单分析
<html xmlns="http://www.w3.org/1999/xhtml" >
Asp.Net中验证控件简单分析
<head><title>
Asp.Net中验证控件简单分析    无标题页
Asp.Net中验证控件简单分析
</title></head>
Asp.Net中验证控件简单分析
<body>
Asp.Net中验证控件简单分析    
<form>
Asp.Net中验证控件简单分析
<div>
Asp.Net中验证控件简单分析
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE5MDkxNzgwODFkZKLnaM8iGUsgGiWldhYd7fCPmt6s" />
Asp.Net中验证控件简单分析
</div>
Asp.Net中验证控件简单分析   
<div>
Asp.Net中验证控件简单分析        
<input name="TextBox1" type="text" id="TextBox1" />
Asp.Net中验证控件简单分析        
<span id="RequiredFieldValidator1" style="color:Red;display:none;">RequiredFieldValidator</span></div>
Asp.Net中验证控件简单分析    
Asp.Net中验证控件简单分析
<script type="text/javascript">
Asp.Net中验证控件简单分析
<!--
Asp.Net中验证控件简单分析
Asp.Net中验证控件简单分析
//页面加载时执行的方法
Asp.Net中验证控件简单分析
var Page_ValidationVer = "125";
Asp.Net中验证控件简单分析var Page_IsValid 
= true;
Asp.Net中验证控件简单分析var Page_BlockSubmit 
= false;
Asp.Net中验证控件简单分析var Page_InvalidControlToBeFocused 
= null;
Asp.Net中验证控件简单分析

相关文章: