第 7 章 验证控件

78
http://www.wenyuan.com.cn/webnew/ 7 7 第 第第第第 第 第第第第 在在在 Web 在在在在在 在在在在在在在在在 在在在在在在 ,, 在在在在在在在在在在在在在在在在 在在 在在在在在在在在在在 在在在 。一, 在在在在在在在在 在在在在在在在在在在在在在 在在在在在在在在在在 ,, 在在在 在在在 。, ASP.NET 在在在在在在在在在在在在在 在在在在 在在在在在 在在在在在在在在在在在

Upload: hector-bruce

Post on 15-Mar-2016

61 views

Category:

Documents


4 download

DESCRIPTION

第 7 章 验证控件. 在开发 Web 应用程序时,经常遇到验证问题,以检验用户输入数据是否正确或者是否输入了数据。这一部分的工作量非常大,不但加重了程序员的负担,而且使程序代码可读性变差,给以后的维护工作增加了难度。现在, ASP.NET 为我们提供了验证服务器控件,不但简化了验证工作,而且提供了极大的灵活性 。. 本章要点:  验证控件基本知识  必填字段验证控件的使用  比较验证控件的使用  范围验证控件的使用  正则表达式验证控件的使用  自定义验证控件的使用  验证错误摘要控件的使用. 7.1 验证控件基本知识. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

第第 77 章 验证控件章 验证控件 在开发 Web 应用程序时,经常遇到验证问题,以检验用户输入数据是否正确或者是否输入了数据。这一部分的工作量非常大,不但加重了程序员的负担,而且使程序代码可读性变差,给以后的维护工作增加了难度。现在, ASP.NET 为我们提供了验证服务器控件,不但简化了验证工作,而且提供了极大的灵活性。

Page 2: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

本章要点: 验证控件基本知识 必填字段验证控件的使用 比较验证控件的使用 范围验证控件的使用 正则表达式验证控件的使用 自定义验证控件的使用 验证错误摘要控件的使用

Page 3: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

7.1 7.1 验证控件基本知识验证控件基本知识 验证就是检验用户输入的数据是否有效。如一个要求用户输入电话号码的文本框,所输入的数据必须是数字,不能是字符。如果用户输入的不是数字,您的 Web 应用程序应该给出验证结果,并给出错误信息提示;又如在收集用户信息时,要求其必须填入姓名。如果不填入姓名,则给出出错信息。

Page 4: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

7.1.1 7.1.1 验证控件验证原理验证控件验证原理 当用户输入的数据被处理时(如提交网页), ASP.NET 把用户数据传送给相应的验证控件,验证控件按照其验证规则检验用户数据,并根据验证是否通过设置其 IsValid 属性。如果验证通过,则置 IsValid 属性为 true ;如果验证未通过,则置 IsValid 属性为 false 。如果 Web 页有多个验证控件,则调用所有验证控件进行验证。如果有任何一个验证控件验证没有通过,则整个网页被设置为无效,即 Page 类的 IsValid 属性被设置为 false 。这样我们就可以通过检验 Page 类的 IsValid 属性获知验证是否通过,从而在程序中采取相应对策。 检验 Web 页是否通过验证的代码形式为: IF Page.IsValid Then验证通过后要执行的代码 Eles 验证未通过要执行的代码 End IF

Page 5: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

7.1.2 7.1.2 客户端验证和服务器端验证客户端验证和服务器端验证 在 IE4.0 以后,允许使用客户端代码进行客户端验证。所谓客户端验证,就是用户数据不必提交到服务器,在客户端就可以完成验证工作。客户端验证一般使用 VBScript 或 JavaScript 脚本语言编程。 客户端验证的优点: 不占用带宽。 验证速度快。 客户端验证的缺点: 有些浏览器不支持客户端验证,因此无法完成客户端验证。 用户有可能绕过客户端验证,从而带来安全问题。

Page 6: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

如果想使用客户端验证,可以在 Web 页的开头加上如下 Page 指令: <%@Page ClientTarget = "UpLevel"%> ASP.NET 一般采用服务器端验证,用户数据必须提交到服务器,在服务器上完成验证任务。这样用户就无法绕开验证这一环节,保证了 Web 应用的安全性和完整性。 如果想使用服务器端验证,可以在 Web 页的开头加上如下 Page 指令: <%@Page ClientTarget = "DownLevel"%> 注意: 如果想使用客户端验证,不但要使用 Page 指令,还要设置验证控件的 EnableClientScript 属性。

Page 7: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

7.1.3 7.1.3 停用验证停用验证 在某些特定情况下,有时候需要停用验证。比如用户按下“取消”按钮或导航按钮时,即使用户没有填入全部正确数据,仍然允许提交网页,这时就不能使用验证。 停用验证的方法有三种: 将控件的 CausesValidation 属性设置为 false ,则会取消该控件的服务器端验证和客户端验证。 将验证控件的 Enabled 属性设置为 false ,则会停用验证控件的服务器端验证和客户端验证。 将验证控件的 EnableClientScript 属性设置为 false ,则会停用验证控件客户端验证,但服务器端验证仍会起作用。

Page 8: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

7.2 7.2 必填字段验证控件必填字段验证控件 RequiredFielRequiredFieldValidatordValidator 必填字段验证控件用于要求用户必须输入数据而不能保持空白的场合。如果不提供输入值,则引发验证错误。 在 Visual Studio.NET 工具箱中,必填字段验证控件的图标是。 双击或用鼠标拖动工具箱中的 RequiredFieldValidator 控件,可将它加入到 Web窗体。重复该操作可加入多个 RequiredFieldValidator 控件。加入到窗体的 RequiredFieldValidator 控件可用鼠标拖放到窗体的任意位置并可以改变控件的大小。

Page 9: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

1. 必填字段验证控件的语法格式 <asp:RequiredFieldValidator id="控件标识符 " ControlToValidate=" 关联输入控件的 ID" InitialValue=" 初始值 " ErrorMessage="出错信息 " Text="出错信息 " ForeColor=" 前景色 " BackColor=" 背景色 " …… runat="server" > </asp:RequiredFieldValidator>

Page 10: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

必填字段控件的主要属性以下属性为所有验证控件共有的属性:BackColor :必填字段验证控件的背景色。ForeColor :验证失败后显示消息的颜色。Font :必填字段验证控件的字体属性。BorderColor :必填字段验证控件的边框颜色。BorderStyle :必填字段验证控件的边框样式。BorderWidth :必填字段验证控件的边框宽度。EnableViewState :指示必填字段验证控件是否保持视图状态。 true 为保持, false 为不保持。Enabled :是否启用验证控件。 true 为开启, false 为不开启。这些属性在其他验证控件中不再介绍。

Page 11: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

必填字段控件的特有属性: ID:控件的标识。 ControlToValidate :与必填验证控件相关联的输入控件,该控件内的值就是需要验证的数据。 ErrorMessage :验证未通过时显示的出错信息。该出错信息可以显示在验证错误摘要控件(参见 7.7)上。 Display:必填验证控件出错信息的显示方式。当取值为 None 时,表示错误出现时不显示,但是可以在验证错误摘要控件中显示;当取值为 Static 时,表示每个验证控件都会在 Web 页上占有一定的空间;当取值为 Dynamic 时,表示除非验证控件显示消息,否则不会在 Web 页上占用任何空间。 InitialValue :输入控件的初始默认值。如果设置了该属性,则必填字段验证控件检查用户是否修改了该值,而不是检查是否有输入值。即输入控件内的值等于这个初始值,则不能通过验证。 IsValid :指示关联的输入控件是否通过验证。 true 为通过, false 为未通过。 Text :验证未通过时显示的出错信息。它不显示在验证错误摘要控件上,这是它与 ErrorMessage 属性的区别。

Page 12: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

动手做: [ 例 7-1]使用必填验证控件检测用户名和密码 【界面设计】 在 Web窗体页上放置两个 Textbox控件、两个 Label 控件、两个 RequiredFieldValidator 控件及两个 Button 控件。设计后的效果如图 7-1所示。 Web窗体上各控件的属性: RequiredFieldValidator1控件的属性 ControlToValidator : TextBox1(用户名文本框) ErrorMessage :请填写用户名 InitialValue : guest 其他属性按默认设置。 RequiredFieldValidator2控件的属性 ControlToValidator : TextBox2(密码文本框) Text :密码为必填项 其他属性按默认设置。 TextBox1(用户名)的属性 Text : Admin 其他属性按默认设置。 TextBox2(密码)的属性 TextMode : Password 其他属性按默认设置。

Page 13: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/图 7-1 设计后的 Web窗体效果图

Page 14: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

Web窗体 (WebForm1.aspx文件 )的完整代码如下:<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="_7_1.WebForm1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><title>WebForm1</title><meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"><meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1"><meta name="vs_defaultClientScript" content="JavaScript"><meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"></HEAD><body MS_POSITIONING="GridLayout"><form id="Form1" method="post" runat="server"><FONT face=" 宋体 "><asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute;

Page 15: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

TOP: 64px" runat="server" Width="72px" Height="24px">用户名 </asp:Label><asp:Button id="Button2" style="Z-INDEX: 106; LEFT: 152px; POSITION: absolute; TOP: 152px" runat="server" Width="56px" Height="24px" Text=" 返回 "></asp:Button><asp:TextBox id="TextBox2" style="Z-INDEX: 104; LEFT: 112px; POSITION: absolute; TOP: 104px" runat="server" Width="120px"></asp:TextBox><asp:TextBox id="TextBox1" style="Z-INDEX: 102; LEFT: 112px; POSITION: absolute; TOP: 64px" runat="server" Width="120px">admin</asp:TextBox><asp:Label id="Label2" style="Z-INDEX: 103; LEFT: 32px; POSITION: absolute; TOP: 104px" runat="server" Width="72px" Height="24px"> 密码 </asp:Label><asp:Button id="Button1" style="Z-INDEX: 105; LEFT: 56px; POSITION: absolute; TOP: 152px" runat="server" Width="56px" Height="24px" Text=" 登陆 "></asp:Button>

Page 16: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<asp:RequiredFieldValidator id="RequiredFieldValidator1" style="Z-INDEX: 107; LEFT: 240px; POSITION: absolute; TOP: 64px" runat="server" Width="136px" Height="24px" ErrorMessage="(请填写用户名) " InitialValue="guest" ControlToValidate="TextBox1"></asp:RequiredFieldValidator><asp:RequiredFieldValidator id="RequiredFieldValidator2" style="Z-INDEX: 108; LEFT: 240px; POSITION: absolute; TOP: 104px" runat="server" Width="144px" Height="24px" ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBox2">(密码为必填项) </asp:RequiredFieldValidator></FONT></form></body></HTML>

Page 17: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

运行结果如图 7-2 所示。

图 7-2 运行结果

图 7-2 运行结果

Page 18: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

7.3 7.3 比较验证控件比较验证控件 CompareValidatorCompareValidator 比较验证控件将关联输入控件的值同常数值或其他输入控件的值相比较,以确定这两个值是否与指定的关系相匹配。如果匹配,则验证通过;如果不匹配,则验证未通过,显示出错信息。 如果与常数值进行比较,则必须设置控件的 ControlToCompare 属性;如果与其他输入控件进行比较,则必须设置控件的 ValueToCompare属性。 另外,比较验证控件不但能够进行比较,还能够检验输入数据是否是指定的数据类型。 在 Visual Studio.NET 工具箱中,比较验证控件的图标是。 双击或用鼠标拖动工具箱中的 CompareValidator 控件,可将它加入到Web窗体。重复该操作可加入多个 CompareValidator 控件。加入到窗体的 CompareValidator 控件可用鼠标拖放到窗体的任意位置并可以改变控件的大小。

Page 19: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

1. 比较验证控件的语法格式<asp:CompareValidator id=" 比较验证控件的标识符 " ControlToValidate=" 关联输入控件的 ID " ValueToCompare=" 要比较的常数值 " ControlToCompare=" 比较的另一个控件的标识符 " Type=" 数据类型 " Operator=" 比较的运算符 " ErrorMessage=" 出错信息 " Text=" 出错信息 " …… runat="server" > </asp:CompareValidator>

Page 20: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

2. 比较验证控件的主要属性ID:比较验证控件的标识符。ControlToValidate :与比较验证控件相关联的输入控件,该控件内的值就是需要验证的数据。ControlToCompare :设置另一个输入控件的标识符。如果设置该属性,则表示与另一个输入控件进行比较,而不是与常数值比较。ValueToCompare :设置比较的常数值。如果设置该属性,则表示与常数值比较,而不是与其他控件的值比较。Operator :设置比较的运算符,其运算符如图 7-3所示,有“相等”、“不等”、“大于”、“大于等于”、“小于”、“小于等于”和“数据类型检查”七项。当设置为 DataTypeCheck(数据类型检查)时,比较验证控件将同时忽略 ControlToCompare 属性和 ValueToCompare 属性,而仅检验输入控件中的值是否可以转换为 Type 属性所指定的数据类型。

图 7-3 比较运算符

Page 21: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

Type :进行比较的数据类型。具体的数据类型见表 7-1所示。表 7-1 比较数据类型

ErrorMessage :验证未通过时显示的出错信息。该出错信息可以显示在验证错误摘要控件上。Text :验证未通过时显示的出错信息。

数据类型 解释String 字符串数据类型。Integer 32 位有符号整数数据类型。Double 双精度浮点数数据类型。Date 日期数据类型。Currency 一种可以包含货币符号的十进制数据类型。

Page 22: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

Display:比较验证控件出错信息的显示方式。当取值为 None 时,表示验证控件不会出现在 Web 页上;当取值为 Static时,表示每个验证控件都会在 Web 页上占有一定的空间;当取值为 Dynamic 时,表示除非验证控件显示消息,否则不会在 Web 页上占用任何空间。 IsValid :指示关联的输入控件是否通过验证。 true 为通过,false 为未通过。 EnableClientScript :指示是否启用客户端验证。 true 为开启, false 为不开启。动手做: [ 例 7-2]使用比较验证控件检测密码和确认密码是否一致 【界面设计】 在 Web窗体页上放置三个 Label 控件、三个 TextBox控件、两个 Button 控件和一个 CompareValidator 控件。界面效果如图 7-4 所示。

Page 23: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/图 7-4 设计后的 Web窗体页效果

Page 24: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

CompareValidator 控件的属性设置为:ControlToValidate : TextBox3(确认密码文本框)ControlToCompare : TextBox2(密码文本框)Operator : EqualType : StringErrorMessage :(密码与确认密码不一致)其他属性取默认值。Web窗体 (WebForm1.aspx文件 )的完整代码如下:<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="_6_12.WebForm1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><title>WebForm1</title><meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"><meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">

Page 25: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<meta name="vs_defaultClientScript" content="JavaScript"><meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"></HEAD><body MS_POSITIONING="GridLayout"><form id="Form1" method="post" runat="server"><FONT face=" 宋体 "><asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 40px; POSITION: absolute; TOP: 32px" runat="server" Width="64px" Height="24px">用户名 </asp:Label><asp:Button id="Button2" style="Z-INDEX: 108; LEFT: 152px; POSITION: absolute; TOP: 136px" runat="server" Width="64px" Text=" 返回 "></asp:Button><asp:TextBox id="TextBox3" style="Z-INDEX: 106; LEFT: 120px; POSITION: absolute; TOP: 96px" runat="server" Width="120px" TextMode="Password"></asp:TextBox><asp:TextBox id="TextBox2" style="Z-INDEX: 105; LEFT: 120px; POSITION: absolute; TOP: 64px" runat="server" Width="120px" TextMode="Password"></asp:TextBox>

Page 26: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<asp:Label id="Label3" style="Z-INDEX: 103; LEFT: 40px; POSITION: absolute; TOP: 96px" runat="server" Width="64px" Height="24px">确认密码 </asp:Label><asp:Label id="Label2" style="Z-INDEX: 102; LEFT: 40px; POSITION: absolute; TOP: 64px" runat="server" Width="64px" Height="24px">密码 </asp:Label><asp:TextBox id="TextBox1" style="Z-INDEX: 104; LEFT: 120px; POSITION: absolute; TOP: 32px" runat="server" Width="120px"></asp:TextBox><asp:Button id="Button1" style="Z-INDEX: 107; LEFT: 64px; POSITION: absolute; TOP: 136px" runat="server" Width="64px" Text=" 登陆 "></asp:Button><asp:CompareValidator id="CompareValidator1" style="Z-INDEX: 109; LEFT: 248px; POSITION: absolute; TOP: 96px" runat="server" Width="192px" Height="24px" ErrorMessage="(密码与确认密码不一致) " ControlToValidate="TextBox3" ControlToCompare="TextBox2"></asp:CompareValidator></FONT></form></body></HTML>

Page 27: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

点评: 本实例用于验证用户输入的密码和确认密码是否一致。通过设置 CompareValidator 控件的 ControlToValidate 和 ControlToCompare 属性,来完成比较密码文本框(关联输入控件)和确认密码文本框(另一个输入控件)。通过设置 Operator 和 Type 属性,确定进行字符串相等比较,即两个密码是否一致。 运行结果如图 7-5 所示。

Page 28: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/图 7-5 运行结果

Page 29: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

7.4 7.4 范围验证控件范围验证控件 RangeValidatorRangeValidator

范围验证控件用于检查用户输入值是否在指定的范围内。要比较的可以是数字、字母和日期值。比较的下限和上限分别由MinimumValue和MaximumValue 属性指定。 在 Visual Studio.NET 工具箱中,范围验证控件的图标是。 双击或用鼠标拖动工具箱中的 RangeValidator 控件,可将它加入到 Web窗体。重复该操作可加入多个 RangeValidator 控件。加入到窗体的RangeValidator 控件可用鼠标拖放到窗体的任意位置并可以改变控件的大小。

Page 30: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

1. 范围验证控件的语法格式<asp:RangeValidator id=" 范围验证控件标识符 " ControlToValidate=" 关联输入控件的 ID " MinimumValue=" 验证范围的下限 " MaximumValue=" 验证范围的上限 " Type=" 数据类型 " ErrorMessage=" 出错信息 " Text=" 出错信息 " …… runat="server" ></asp:RangeValidator>2. 范围验证控件的主要属性ID :范围验证控件的标识符。ControlToValidate :与范围验证控件相关联的输入控件,该控件内的值就是需要验证的数据。MaximumValue :验证范围的上限。MinimumValue :验证范围的下限。

Page 31: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

Type :验证的数据类型。ErrorMessage :验证未通过时显示的出错信息。该出错信息可以显示在验证错误摘要控件上。Text :验证未通过时显示的出错信息。Display :范围验证控件出错信息的显示方式。当取值为 None 时,表示验证控件不会出现在 Web 页上;当取值为 Static 时,表示每个验证控件都会在 Web 页上占有一定的空间;当取值为 Dynamic 时,表示除非验证控件显示消息,否则不会在 Web 页上占用任何空间。IsValid :指示关联的输入控件是否通过验证。 true 为通过, false 为未通过。EnableClientScript :指示是否启用客户端验证。 true 为开启, false为不开启。动手做:[ 例 7-3] 使用范围验证控件检测工龄是否在所给范围之内【界面设计】在 Web 窗体页上放置两个 Label 控件、两个 TextBox 控件、两个 Button 控件、一个 RequiredValidator 控件和一个 RangeValidator 控件。界面效果如图 7-6 所示。

Page 32: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/图 7-6 设计后的 Web窗体效果图

Page 33: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

设置 RangeValidator 控件的属性为:ControlToValidate : TextBox2(工龄文本框)ErrorMessage :(工龄只能在 20- 60之间)MinimumValue : 20MaximumValue : 60Type : Integer其他属性取默认值。Web窗体 (WebForm1.aspx文件 )的完整代码如下:<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="_7_3.WebForm1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><title>WebForm1</title><meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"><meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">

Page 34: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<meta name="vs_defaultClientScript" content="JavaScript"><meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"></HEAD><body MS_POSITIONING="GridLayout"><form id="Form1" method="post" runat="server"><FONT face=" 宋体 "><asp:Label id="Label1" style="Z-INDEX: 100; LEFT: 48px; POSITION: absolute; TOP: 32px" runat="server" Width="48px" Height="22px">姓名 </asp:Label><asp:Button id="Button2" style="Z-INDEX: 108; LEFT: 160px; POSITION: absolute; TOP: 112px" runat="server" Width="56px" Text="重置 "></asp:Button><asp:TextBox id="TextBox2" style="Z-INDEX: 103; LEFT: 120px; POSITION: absolute; TOP: 72px" runat="server" Width="104px"></asp:TextBox><asp:Label id="Label2" style="Z-INDEX: 101; LEFT: 48px; POSITION: absolute; TOP: 72px" runat="server" Width="48px" Height="22px">工龄 </asp:Label>

Page 35: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<asp:TextBox id="TextBox1" style="Z-INDEX: 102; LEFT: 120px; POSITION: absolute; TOP: 32px" runat="server" Width="104px"></asp:TextBox><asp:RequiredFieldValidator id="RequiredFieldValidator1" style="Z-INDEX: 104; LEFT: 232px; POSITION: absolute; TOP: 32px" runat="server" Width="176px" Height="24px" ErrorMessage="(姓名为必录项) " ControlToValidate="TextBox1"></asp:RequiredFieldValidator><asp:RangeValidator id="RangeValidator1" style="Z-INDEX: 105; LEFT: 232px; POSITION: absolute; TOP: 72px" runat="server" Width="200px" Height="24px" ErrorMessage="(工龄只能在 20- 60之间) " ControlToValidate="TextBox2" MinimumValue="20" MaximumValue="60" Type="Integer"></asp:RangeValidator><asp:Button id="Button1" style="Z-INDEX: 107; LEFT: 72px; POSITION: absolute; TOP: 112px" runat="server" Width="56px" Text="提交 "></asp:Button></FONT></form></body></HTML>

Page 36: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

点评:本实例通过一个 RangeValidator 控件验证工龄必须在 20 - 60 之间。即设置其 MinimumValue 属性为 20 , MaximumValue 属性为 60 。运行结果如图 7-7 所示。

图 7-7 运行结果

Page 37: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

[ 例 7-4] 验证在文本框中输入的日期值是否介于 2004-01-01 与 2008-01-01 之间。<asp:TextBox id="DateValue" runat="server"/><asp:RangeValidator id="Range" ControlToValidate="DateValue" MinimumValue="2004-01-01" MaximumValue="2008-01-01"Type="Date" EnableClientScript="false" Text=" 超出日期范围 " runat="server"/>点评: 例子中有一个要求用户输入日期的文本框 DateValue 和一个范围验证控件 Range 。由于范围验证控件的上下限设为“ 2008-01-01” 和“ 2004-01-01” ,因此文本框 DateValue 的日期值只能在此范围之内,否则会显示出错信息“超出日期范围”。

Page 38: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

7.5 7.5 正则表达式验证控件正则表达式验证控件 RegularExpresRegularExpresionValidatorionValidator 正则表达式验证控件确保关联输入控件的输入值与某个正则表达式所定义的模式相匹配。所谓正则表达式就是由普通字符和特殊字符组成的表达式。一些常见的特殊字符见表 7-2。例如,正则表达式“ \d{5} | \d{8}”,表示一个表达式由 5个数字或 8个数字组成。可见正则表达式

验证控件的关键就是构造正则表达式,即构造用户验证规则。

Page 39: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

表 7-2 正则表达式中的特殊字符特殊字符 含义 * 零次或多次匹配前面的字符或子表达式。 ? 零次或一次匹配前面的字符或子表达式。+ 一次或多次匹配前面的字符或子表达式。{n} n 是非负整数。正好匹配 n 次。|{n} 或的关系。. 表示任何字符。[xyz] 匹配 x、 y或 z中的任一个字符。[^xyz] 匹配不包含 x、 y或 z中的任何字符。

Page 40: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

[a-z] 匹配 a-z范围内的任何字符。 [^a-z] 匹配不在指定 a-z范围内的任何字符。 \d 数字字符匹配。等效于 [0-9]。 \D 非数字字符匹配。等效于 [^0-9]。 \s 匹配任何空白字符,包括空格、制表符、换页符等。\S 匹配任何非空白字符。\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。\w 匹配任何字类字符,包括下划线。与 [A-Za-z0-9_] 等效。 \W 任何非字字符匹配。与 [^A-Za-z0-9_] 等效。

Page 41: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

双击或用鼠标拖动工具箱 RegularExpresionValidator 控件,可将它加入到 Web 窗体。重复该操作可加入多个 RegularExpresionValidator 控件。加入到窗体的 RegularExpresionValidator 控件可用鼠标拖放到窗体的任意位置并可以改变控件的大小。 1. 正则表达式验证控件的语法格式 <asp:RegularExpressionValidator id=" 正则表达式验证控件标识符 " ControlToValidate=" 关联输入控件的 ID " ValidationExpression=" 正则表达式 " ErrorMessage=" 出错信息 " Text=" 出错信息 " …… runat="server" > </asp: RegularExpressionValidator>

Page 42: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

2. 正则表达式验证控件的主要属性ID :正则表达式验证控件的标识符。ControlToValidate :与正则表达式验证控件相关联的输入控件,该控件内的值就是需要验证的数据。ValidationExpression :正则表达式。选择该属性右侧的,则弹出一个如图 7-8 所示的正则表达式编辑器窗口。在该窗口中,一般选择“( Custom )”列表项,然后在“验证表达式”文本框中输入正则表达式。正则表达式编辑器中还带有一些常用的正则表达式,用户可以从其中直接选取。

图 7-8 正则表达式编辑器

Page 43: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

ErrorMessage :验证未通过时显示的出错信息。该出错信息可以显示在验证错误摘要控件上。Text :验证未通过时显示的出错信息。Display :正则表达式验证控件出错信息的显示方式。当取值为 None 时,表示验证控件不会出现在 Web 页上;当取值为 Static 时,表示每个验证控件都会在 Web 页上占有一定的空间;当取值为 Dynamic 时,表示除非验证控件显示消息,否则不会在 Web 页上占用任何空间。IsValid :指示关联的输入控件是否通过验证。 true 为通过, false 为未通过。EnableClientScript :指示是否启用客户端验证。 true 为开启, false为不开启。动手做:[ 例 7-5] 使用正则表达式验证控件【界面设计】在 Web 窗体页上,放置两个 Label 控件、两个 TextBox 控件和两个 RegularExpressionValidator 控件。设计后的 Web 窗体效果如图 7-9 所示。

Page 44: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/图 7-9 设计后的 Web窗体效果图

Page 45: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

设置 RegularExpressionValidator1控件的属性为:ValidationExpression : [a-z]\d{3}|\d{4} 。Text :用户名输入不正确。ControlToValidate : TextBox1(用户名)设置 RegularExpressionValidator2控件的属性为:ValidationExpression : [^AGag]\d{2}-\d{3}。Text :密码输入不正确。ControlToValidate : TextBox2(密码)Web窗体 (WebForm1.aspx文件 )的完整代码如下:<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="_7_5.WebForm1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><title>WebForm1</title><meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"><meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">

Page 46: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<meta name="vs_defaultClientScript" content="JavaScript"><meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"></HEAD><body MS_POSITIONING="GridLayout"><form id="Form1" method="post" runat="server"><FONT face=" 宋体 "><asp:Label id="Label1" style="Z-INDEX: 100; LEFT: 32px; POSITION: absolute; TOP: 40px" runat="server" Width="64px" Height="24px">用户名 </asp:Label><asp:RegularExpressionValidator id="RegularExpressionValidator2" style="Z-INDEX: 108; LEFT: 216px; POSITION: absolute; TOP: 88px" runat="server" Width="144px" Height="24px" ErrorMessage="RegularExpressionValidator" ValidationExpression="[^AGag]\d{2}-\d{3}" ControlToValidate="TextBox2">(密码输入不正确) </asp:RegularExpressionValidator>

Page 47: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<asp:Button id="Button2" style="Z-INDEX: 106; LEFT: 136px; POSITION: absolute; TOP: 136px" runat="server" Width="64px" Text=" 返回 "></asp:Button><asp:TextBox id="TextBox2" style="Z-INDEX: 104; LEFT: 112px; POSITION: absolute; TOP: 80px" runat="server" Width="96px" TextMode="Password"></asp:TextBox><asp:Label id="Label2" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 80px" runat="server" Width="64px" Height="24px"> 密码 </asp:Label><asp:TextBox id="TextBox1" style="Z-INDEX: 102; LEFT: 112px; POSITION: absolute; TOP: 40px" runat="server" Width="96px"></asp:TextBox><asp:Button id="Button1" style="Z-INDEX: 105; LEFT: 48px; POSITION: absolute; TOP: 136px" runat="server" Width="64px" Text=" 登陆 "></asp:Button><asp:RegularExpressionValidator id="RegularExpressionValidator1" style="Z-INDEX: 107; LEFT: 216px; POSITION: absolute; TOP: 40px" runat="server" Width="160px" Height="24px" ValidationExpression="\w\d{3}|\d{4}" ControlToValidate="TextBox1">(用户名输入不正确) </asp:RegularExpressionValidator></FONT></form></body></HTML>

Page 48: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

点评:用户名正则表达式验证控件的正则表达式为:[a-z]\d{3}|\d{4}表示用户名可以有两种表达方式,一是以一个小写英文字母开头,后跟三个数字;二是四个数字。如 a012 、 u123 、 6782 等。密码的正则表达式验证控件的正则表达式为:[^AGag]\d{2}-\d{3}表示密码只能是以一个字母开头且不包含“ AGag” 字母中的一个,后跟两个数字,一个连字符,三个数字。如 p49-294 、 w60-831 等。运行结果如图 7-10 所示。

Page 49: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/图 7-10 运行结果

Page 50: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

7.6 7.6 自定义验证控件自定义验证控件 CustomValidatorCustomValidator 如果以上几种验证控件无法完成验证工作,可以使用自定义验证控件。自定义验证控件比较灵活,您可以制定自定义的验证逻辑,验证逻辑一般在一个函数内实现。自定义验证控件可以进行服务器端验证,也可以进行客户端验证。如果是在服务器端进行验证,这个验证函数就是 ServerValidate事件响应函数。如果在客户端进行验证,把验证函数名赋给ClientValidationFunction 属性。 双击或用鼠标拖动工具箱中的 CustomValidator 控件,可将它加入到 Web窗体。重复该操作可加入多个 CustomValidator 控件。加入到窗体的 CustomValidator 控件可用鼠标拖放到窗体的任意位置并可以改变控

件的大小。

Page 51: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

1. 自定义验证控件的语法格式<asp:CustomValidator id=" 自定义验证控件标识符 " ControlToValidate=" 关联输入控件的 ID " ClientValidationFunction=" 客户端验证函数名 " OnServerValidate=" 服务器端验证事件响应函数 " ErrorMessage=" 出错信息 " Text=" 出错信息 " …… runat="server" ></asp:CustomValidator>2. 自定义验证控件的主要属性ID :自定义验证控件的标识符。ControlToValidate :与自定义验证控件相关联的输入控件,该控件内的值就是需要验证的数据。ClientValidationFunction :客户端自定义验证函数的名字。客户端自定义验证函数可以使用 VBScript 或 JavaScript 脚本语言编写。在 Visual Studio.NET 中,必须切换到 HTML视图,在该视图中编写客户端自定义验证函数。客户端自定义验证函数的格式:

Page 52: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

Sub clientvalidator(source , args ) 或 function clientvalidator(source , args ) 其中, source 参数代表 CustomValidator 对象; args 参数有两个属性,一个是 Value ,表示要验证的数据,一个是 IsValid ,用来设置验证后的返回结果,即是通过验证( true )还是没通过验证( false )。 ErrorMessage :验证未通过时显示的出错信息。该出错信息可以显示在验证错误摘要控件上。 Text :验证未通过时显示的出错信息。 Display :自定义验证控件出错信息的显示方式。当取值为 None 时,表示验证控件不会出现在 Web 页上;当取值为 Static 时,表示每个验证控件都会在 Web 页上占有一定的空间;当取值为 Dynamic 时,表示除非验证控件显示消息,否则不会在 Web 页上占用任何空间。 IsValid :指示关联的输入控件是否通过验证。 true 为通过, false 为未通过。 EnableClientScript :指示是否启用客户端验证。 true 为开启, false 为不开启。 自定义验证控件的事件 ServerValidate :当在服务器上执行验证时引发该事件。服务器端验证逻辑就在该事件响应函数中实现。事件响应函数有两个参数 source 和 args 。 source参数代表 CustomValidator 对象; args 参数有两个属性,一个是 Value ,表示要验证的数据,一个是 IsValid ,用来设置验证后的返回结果,即是通过验证( true )还是没通过验证( false )。

Page 53: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

动手做:[ 例 7-6] 使用自定义验证控件检测用户输入的是否为偶数、是否为有效的数字【界面设计】 在 Web 窗体页上放置一个 Label 控件、一个 TextBox 控件、一个 Button 控件和一个 CustomValidator 控件。界面效果如图 7-11 所示。

图 7-11 设计后的 Web窗体效果图

Page 54: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

设置 CustomValidator1控件的属性为:ClientValidationFunction : clientvalidator 。Text :不是一个有效的数字或不是偶数。ControlToValidate : TextBox1添加服务器端验证的步骤:1. 按 F7 键,切换到代码编辑视图;2. 在编辑器左侧的类名下拉列表框中,选择“CustomValidator1”;3. 在编辑器右侧的方法名称下拉列表框中,选择“ ServerValidate”;4. 在事件响应函数中添加如下代码: Dim s As Integer = Integer.Parse(args.Value) If (s Mod 2) = 0 Then args.IsValid = True Else args.IsValid = False End If

Page 55: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

添加客户端验证的步骤:1. 在 Web窗体设计器中,单击“HTML”按钮,切换到 HTML视图;2. 添加如下代码:<script language="vbscript">

sub clientvalidator(source,args)if isnumeric(args.value) then

args.isvalid=trueelse

args.isvalid=falseend if

end sub</script>

Page 56: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

3. 设置 CustomValidator1控件的 ClientValidationFunction 属性为“ clientvalidator”。Web窗体 (WebForm1.aspx文件 )的完整代码如下 : <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="_7_6.WebForm1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><title>WebForm1</title><meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"><meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1"><meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

Page 57: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<script language="vbscript">sub clientvalidator(source,args)if isnumeric(args.value) thenargs.isvalid=trueelse args.isvalid=falseend ifend sub</script></HEAD><body MS_POSITIONING="GridLayout"><form id="Form1" method="post" runat="server"><FONT face=" 宋体 "><asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 40px; POSITION: absolute; TOP: 32px" runat="server" Width="128px" Height="24px"> 请输入一个偶数: </asp:Label><asp:TextBox id="TextBox1" style="Z-INDEX: 102; LEFT: 40px; POSITION: absolute; TOP: 64px" runat="server" Width="120px"></asp:TextBox><asp:Button id="Button1" style="Z-INDEX: 103; LEFT: 56px; POSITION: absolute; TOP: 104px" runat="server" Width="72px" Text="提交 "></asp:Button>

Page 58: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<asp:CustomValidator id="CustomValidator1" style="Z-INDEX: 104; LEFT: 200px; POSITION: absolute; TOP: 64px" runat="server" Width="112px" Height="24px" ErrorMessage="CustomValidator" ControlToValidate="TextBox1" ClientValidationFunction="clientvalidator">不是一个有效的数字或不是偶数</asp:CustomValidator></FONT></form></body></HTML>【程序设计】Public Class WebForm1 Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 " <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox Protected WithEvents Button1 As System.Web.UI.WebControls.Button

Page 59: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

Protected WithEvents CustomValidator1 As System.Web.UI.WebControls.CustomValidator Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init InitializeComponent() End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '在此处放置初始化页的用户代码 End Sub Private Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate Dim s As Integer = Integer.Parse(args.Value) If (s Mod 2) = 0 Then args.IsValid = True Else args.IsValid = False End If End SubEnd Class

Page 60: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

点评: 本例中,利用一个自定义验证控件添加了一个客户端验证和一个服务器端验证。客户端验证用户输入的是否有效数字,以保证用户必须输入数字,从而确保服务器端验证不会发生异常。服务器端验证用户输入的是否为偶数。客户端使用 VBScript 脚本编程语言,编写了一个 clientvalidator 过程。在此过程中,使用 IsNumeric 函数检测用户输入是否为有效数字。服务器端事件响应函数中,使用 Integer.Parse 函数把用户输入转换为整数,然后利用取余运算符判断输入是否为偶数。 运行结果如图 7-12 所示。

Page 61: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/图 7-12 运行结果

Page 62: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

7.7 7.7 验证错误摘要控件验证错误摘要控件 ValidationSummValidationSummaryary

当页面上有多个验证控件时,可以使用验证错误摘要控件集中显示验证出错信息。该控件收集验证未通过的各控件的 ErrorMessage 属性值,并在页面上显示出来。如果没有设置验证控件的 ErrorMessage 属性,则在 ValidationSummary 控件中将不为该验证控件显示错误信息。可以通过设置 DisplayMode 属性,使错误信息显示为列表、项目符号列表或单个段落。通过设置 HeaderText 属性,还可以在 ValidationSummary控件的标题部分指定一个自定义标题。通过设置 ShowSummary 属性,可以控制是显示还是隐藏 ValidationSummary控件。还可通过将 ShowMessageBox属性设置为 true ,在消息框中显示摘要。

Page 63: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

双击或用鼠标拖动工具箱中的 ValidationSummary 控件,可将它加入到 Web 窗体。重复该操作可加入多个 ValidationSummary 控件。加入到窗体的 ValidationSummary 控件可用鼠标拖放到窗体的任意位置并可以改变控件的大小。1. 验证错误摘要控件的语法格式<asp:ValidationSummary id=" 验证错误摘要控件的标识符 " DisplayMode=" 显示模式 " EnableClientScript=" 是否开启客户端验证 " ShowSummary=" 控件是否显示 " ShowMessageBox=" 是否显示对话框 " HeaderText=" 标题 " runat="server"/>

Page 64: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

2. 验证错误摘要控件的主要属性 ID :验证错误摘要控件的标识符。 DisplayMode :显示模式。取值为 List 、 BulletList 或 SingleParagraph ,分别表示使错误信息显示为列表、项目符号列表或单个段落。 ShowSummary :是否显示验证错误摘要。 true 为显示, false 为不显示。 ShowMessageBox :是否在对话框中显示验证错误摘要。 true 为显示对话框, false 为不显示对话框。 EnableClientScript :指示是否启用客户端验证。 true 为开启, false为不开启。动手做:[ 例 7-7] 使用验证错误摘要控件显示错误信息【界面设计】 在 Web 窗体页上放置三个 Label 控件、三个 TextBox 控件、两个 Button 控件、两个 RequiredFieldValidator 控件、一个 RegularExpressionValidator 控件、一个 CompareValidator 控件和一个 ValidationSummary 控件。设计后的 Web 窗体页效果如图 7-13 所示。

Page 65: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/图 7-13 设计后的 Web窗体页效果图

Page 66: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

Web窗体上各控件的属性: RequiredFieldValidator1属性ControlToValidate : TextBox1(用户名)Display: NoneEnableClientScript : FalseErrorMessage :用户名为必录项。RegularExpressionValidator1属性为:ControlToValidate : TextBox2(密码)Display: NoneEnableClientScript : FalseErrorMessage :密码输入不正确。ValidationExpression : [^AGag]\d{2}-\d{3} RequiredFieldValidator2属性ControlToValidate : TextBox2(密码)Display: NoneEnableClientScript : FalseErrorMessage :密码为必录项。

Page 67: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

CompareValidator1属性ControlToValidate : TextBox3(确认密码)Display: NoneEnableClientScript : FalseErrorMessage :密码与确认密码不一致。ControlToCompare : TextBox2(密码)Operator : EqualType : StringValidationSummary1属性DisplayMode : BulletListHeaderText :在您的输入中有如下错误: <HR>ShowSummary: TrueWeb窗体 (WebForm1.aspx文件 )的完整代码如下:

Page 68: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="_7_7.WebForm1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <title>WebForm1</title><meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1"> <meta name="vs_defaultClientScript" content="JavaScript"><meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"></HEAD><body MS_POSITIONING="GridLayout"><form id="Form1" method="post" runat="server"><FONT face=" 宋体 "><asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 40px; POSITION: absolute; TOP: 40px" runat="server" Width="88px" Height="24px">用户名 </asp:Label><HR style="Z-INDEX: 114; LEFT: 8px; POSITION: absolute; TOP: 192px" width="100%" SIZE="1">

Page 69: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<asp:RequiredFieldValidator id="RequiredFieldValidator2" style="Z-INDEX: 111; LEFT: 264px; POSITION: absolute; TOP: 88px" runat="server" Width="152px" Height="24px" ErrorMessage=" 密码为必录项 " ControlToValidate="TextBox2" EnableClientScript="False" Display="None"></asp:RequiredFieldValidator><asp:Button id="Button2" style="Z-INDEX: 108; LEFT: 160px; POSITION: absolute; TOP: 144px" runat="server" Width="64px" Text=" 返回 "></asp:Button><asp:TextBox id="TextBox3" style="Z-INDEX: 106; LEFT: 144px; POSITION: absolute; TOP: 104px" runat="server" Width="112px" TextMode="Password"></asp:TextBox><asp:TextBox id="TextBox2" style="Z-INDEX: 105; LEFT: 144px; POSITION: absolute; TOP: 72px" runat="server" Width="112px" TextMode="Password"></asp:TextBox><asp:Label id="Label3" style="Z-INDEX: 103; LEFT: 40px; POSITION: absolute; TOP: 104px" runat="server" Width="88px" Height="24px">确认密码 </asp:Label><asp:Label id="Label2" style="Z-INDEX: 102; LEFT: 40px; POSITION: absolute; TOP: 72px" runat="server" Width="88px" Height="24px">密码 </asp:Label>

Page 70: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<asp:TextBox id="TextBox1" style="Z-INDEX: 104; LEFT: 144px; POSITION: absolute; TOP: 40px" runat="server" Width="112px"></asp:TextBox><asp:Button id="Button1" style="Z-INDEX: 107; LEFT: 72px; POSITION: absolute; TOP: 144px" runat="server" Width="64px" Text="提交 "></asp:Button><asp:RequiredFieldValidator id="RequiredFieldValidator1" style="Z-INDEX: 109; LEFT: 264px; POSITION: absolute; TOP: 40px" runat="server" Width="152px" Height="24px" ErrorMessage="用户名为必录项 " ControlToValidate="TextBox1" EnableClientScript="False" Display="None"></asp:RequiredFieldValidator>

Page 71: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

<asp:RegularExpressionValidator id="RegularExpressionValidator1" style="Z-INDEX: 110; LEFT: 264px; POSITION: absolute; TOP: 64px" runat="server" Width="176px" Height="24px" ErrorMessage=" 密码输入不正确 " ControlToValidate="TextBox2" EnableClientScript="False" Display="None" ValidationExpression="[^AGag]\d{2}-\d{3}"></asp:RegularExpressionValidator><asp:CompareValidator id="CompareValidator1" style="Z-INDEX: 112; LEFT: 264px; POSITION: absolute; TOP: 112px" runat="server" Width="177px" Height="24px" ErrorMessage=" 密码与确认密码不一致 " ControlToValidate="TextBox3" ControlToCompare="TextBox2" EnableClientScript="False" Display="None"></asp:CompareValidator><asp:ValidationSummary id="ValidationSummary1" style="Z-INDEX: 113; LEFT: 48px; POSITION: absolute; TOP: 216px" runat="server" Width="284px" Height="88px" HeaderText='在您的输入中有如下错误: <HR>' EnableClientScript="False"></asp:ValidationSummary></FONT></form></body></HTML>

Page 72: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

点评: 由于使用 ValidationSummary 控件集中显示验证错误信息,因此 Web 页中的所有验证控件都不需要单独显示验证错误信息,为此设置各个验证控件的 Display 属性为 None 。 对密码输入框使用了两个验证控件—— RequiredFieldValidator 控件和 RegularExpressionValidator 控件,以保证密码项必须录入,并且输入的密码符合规则。从这一个例子可以看到, Web 窗体页上的控件可以有不止一个验证控件,以满足不同的验证要求。 在验证控件的 Text 属性和 ErrorMessage 属性中,可以包含 HTML 标记。如 ValidationSummary 控件的 HeaderText 属性值为“在您的输入中有如下错误: <HR>” ,其中包含“ <HR>” 标记。 运行结果如图 7-14 所示。

Page 73: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/图 7-14 运行结果

Page 74: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

习题1. 如何获知整个 Web 页面是否通过验证?2. 以下客户端验证代码是否正确,为什么?Dim amount As Integeramount = Integer.Parse(TextBox1.Text)IF amount > 3 Thenargs.IsValid = FalseElseargs.IsValid = TrueEnd IF3. 简述停用验证的方法 .4. 如果让你设计一个电子商城的购物页面,在页面上要求必须输入购货日期,而且为了用户录入方便,购货日期有一个默认值即当天日期,请问使用什么验证控件,其属性是如何设置的?

Page 75: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

5.请问“ abc6”与下列哪个正则表达式相匹配:(1) abc[0-3](2) abc[^0-3](3) abc[0123](4) abc[^0123](5) abc\d(6) abc\D(7) abc\w(8) abc\W

Page 76: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

6. 如果我想要验证用户输入的日期格式是否正确,请问使用什么验证控件,需要设置该控件的什么属性?7.请使用比较验证控件实现下图所示 Web 页面。

Page 77: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

8. 分析以下程序运行结果。<html> <TITLE>第七章练习 </TITLE><SCRIPT Language="VB" RUNAT="SERVER" > Sub Submit_Onclick(sender As Object, e As EventArgs) IF not page.IsValid thenlDisplay.Text="超出日期范围 " Else lDisplay.Text="" End IFEnd Sub</Script > <body><form runat="server"> <h2> 请输入一个日期值: <h2><BR> <asp:TextBox id="DateValue" runat="server"/> <asp:RangeValidator id="Range1" ControlToValidate="DateValue"

Page 78: 第 7 章 验证控件

http://www.wenyuan.com.cn/webnew/

MinimumValue="2004-01-01" MaximumValue="2004-12-31" Type="Date" EnableClientScript="false" Display="None" runat="server"/> <asp:button id="Submit" Text="确认 " onclick="Submit_Onclick" runat=server/><p> <asp:label id="lDisplay" forecolor="Blue" font-size="20pt" runat=server/></form></body></html> < 本章完 >