ASP.NET 验证控件
2009-09-22 23:58 Tam 阅读(691) 评论(0) 收藏 举报
介绍:
当我们开发服务器控件的时候,使用ASP.NET自带的验证控件,能简化许多操作,下面就此简单介绍一下ASP.NET验证控件的工作原理。
如何实现验证的?
首先,我们先建立一个简单的网站工程。在页面上放上三个作DEMO用的控件(TextBox, Button, RequiredFieldValidator),完成后页面代码如下:
然后,我们在浏览器打开此页面,并查看其源代码。会发现在<form>中多出了一段代码:
而在此段代码的下面,会同时出现对应的JS方法:
以上代码的作用是提交之前先检查页面是否有效,如果无效的话(例如必填项为空),则取消提交动作。在这方法里面,我们看到它会调用一个叫ValidatorOnSubmit的方法。
此方法的具体内容是:
页面执行顺序是,当页面刚初始化完成,先将变量Page_ValidationActive设为false, 方法ValidatorOnLoad()执行的最后一步,会将这个变量设置回true。
同时,我们的按钮会加上下面的属性:
WebForm_DoPostBackWithOptions方法:
Code
WebForm_PostBackOptions方法:
Code
Page_ClientValidate方法:
Code
ValidatorUpdateIsValid方法:
当我们点击按钮时,事件的执行顺序是:
参考文章:
1. ASP.NET Validation in Depth
2. Understanding ASP.NET Validation Library
当我们开发服务器控件的时候,使用ASP.NET自带的验证控件,能简化许多操作,下面就此简单介绍一下ASP.NET验证控件的工作原理。
如何实现验证的?
首先,我们先建立一个简单的网站工程。在页面上放上三个作DEMO用的控件(TextBox, Button, RequiredFieldValidator),完成后页面代码如下:
1
<body>
2
<form id="form1" runat="server">
3
<div>
4
<div>
5
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></div>
6
<div>
7
<asp:Button ID="Button1" runat="server" Text="Button" />
8
</div>
9
</div>
10
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator"
11
ControlToValidate="TextBox1"></asp:RequiredFieldValidator>
12
</form>
13
</body>
验证控件属性ControlToValidate指向TextBox控件。那么,页面就完成了。
<body>2
<form id="form1" runat="server">3
<div>4
<div>5
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></div>6
<div>7
<asp:Button ID="Button1" runat="server" Text="Button" />8
</div>9
</div>10
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator"11
ControlToValidate="TextBox1"></asp:RequiredFieldValidator>12
</form>13
</body>然后,我们在浏览器打开此页面,并查看其源代码。会发现在<form>中多出了一段代码:
1 onsubmit="javascript:return WebForm_OnSubmit();"
而在此段代码的下面,会同时出现对应的JS方法:
1
<script type="text/javascript">
2
//<![CDATA[
3
function WebForm_OnSubmit() {
4
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
5
return true;
6
}
7
//]]>
8
</script>
<script type="text/javascript"> 2
//<![CDATA[3
function WebForm_OnSubmit() {4
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;5
return true;6
}7
//]]>8
</script>以上代码的作用是提交之前先检查页面是否有效,如果无效的话(例如必填项为空),则取消提交动作。在这方法里面,我们看到它会调用一个叫ValidatorOnSubmit的方法。
此方法的具体内容是:
1
<script type="text/javascript">
2
//<![CDATA[
3
4
var Page_ValidationActive = false;
5
if (typeof(ValidatorOnLoad) == "function") {
6
ValidatorOnLoad();
7
}
8
9
function ValidatorOnSubmit() {
10
if (Page_ValidationActive) {
11
return ValidatorCommonOnSubmit();
12
}
13
else {
14
return true;
15
}
16
}
17
//]]>
18
</script>
<script type="text/javascript"> 2
//<![CDATA[3
4
var Page_ValidationActive = false;5
if (typeof(ValidatorOnLoad) == "function") {6
ValidatorOnLoad();7
}8
9
function ValidatorOnSubmit() {10
if (Page_ValidationActive) {11
return ValidatorCommonOnSubmit();12
}13
else {14
return true;15
}16
}17
//]]>18
</script>页面执行顺序是,当页面刚初始化完成,先将变量Page_ValidationActive设为false, 方法ValidatorOnLoad()执行的最后一步,会将这个变量设置回true。
1
function ValidatorOnLoad() {
2
if (typeof(Page_Validators) == "undefined")
3
return;
4
5
省略中间验证控件和目标控件的绑定代码
6
7
Page_ValidationActive = true;
8
}
function ValidatorOnLoad() {2
if (typeof(Page_Validators) == "undefined")3
return;4

5
省略中间验证控件和目标控件的绑定代码6

7
Page_ValidationActive = true;8
}同时,我们的按钮会加上下面的属性:
1 onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", true, "", "", false, false))"
WebForm_DoPostBackWithOptions方法:
WebForm_PostBackOptions方法:
Page_ClientValidate方法:
ValidatorUpdateIsValid方法:
1
function ValidatorUpdateIsValid() {
2
Page_IsValid = AllValidatorsValid(Page_Validators);
3
}
function ValidatorUpdateIsValid() {2
Page_IsValid = AllValidatorsValid(Page_Validators);3
}当我们点击按钮时,事件的执行顺序是:
- 调用WebForm_DoPostBackWithOptions方法。
- 调用WebForm_PostBackOptions方法。
- 调用Page_ClientValidate方法
- 在Page_ClientValidate里面,调用ValidatorUpdateIsValid方法,设置值Page_IsValid。
- 最后,调用页面的__doPostBack方法。
- 在__doPostBack方法中,我们可以看到,调用了<form>中的onsubmit()方法。
- 接着,调用WebForm_OnSubmit方法。
- 调用ValidatorOnSubmit方法。
- 调用ValidatorCommonOnSubmit方法。
参考文章:
1. ASP.NET Validation in Depth
2. Understanding ASP.NET Validation Library
浙公网安备 33010602011771号