文章教程

9.1验证控件

8/31/2020 9:56:04 PM 人评论 次浏览

图片 1 知识点讲解:光盘:视频\PPT讲解(知识点)\第9章\验证控件.mp4

在Web应用程序中,经常需要对用户的信息进行验证,确保只能是合法用户才能登录系统。在传统的ASP系统中,需要开发人员编写大量的代码来实现上述功能。在强大的ASP.NET中,提供了专门的控件来实现验证处理,并且可以在服务器端对获取的客户端数据进行验证,如图9-1所示。

9-1

图9-1 验证控件的作用

验证控件位于Visual Studio 2012的工具箱中,如图9-2所示。

图片 200

图9-2 Visual Studio 2012工具箱中的验证控件

ASP.NET中提供了如下6种验证控件。

  • RequiredFieldValidator:必须字段验证,用于检查是否有输入值。
  • CompareValidator:比较验证,按设定比较两个输入。
  • RangeValidator:范围验证,输入是否在指定范围。
  • RegularExpressionValidator:正则表达式验证。
  • CustomValidator:自定义验证。
  • ValidationSummary:验证总结,总结验证结果。

本节将详细讲解上述验证控件的基本知识。

使用RequiredFieldValidator控件的语法格式如下。

<ASP:RequiredFieldValidator id="Validator_Name" Runat="Server"
  ControlToValidate="要检查的控件名"
  ErrorMessage="出错信息"
  Display="Static|Dymatic|None"
>
 占位符
</ASP: RequiredFieldValidator>

在使用时,要将RequiredFieldValidator控件的ControlToValidate属性设置为要验证的SelectionList或TextBox控件的ID。如果验证控件中没有数据值,则RequiredFieldValidator控件将显示其ErrorMessage属性的值。例如下面的代码。

<form id="form1" runat="server">
  <ASP:TextBox id="txtName" RunAt="Server" />
<ASP:RequiredFieldValidator id="Validator1" Runat="Server"
  ControlToValidate="txtName"
  ErrorMessage="姓名必须输入"
  Display="Static">
 *姓名必须输入
</ASP:RequiredFieldValidator>
</form>

如果用户没有输入姓名,则会输出“姓名必须输入”的提示。

RangeValidator控件用于检测表单字段的值是否在指定的最小值和最大值之间。其语法格式如下。

<ASP:RangeValidator id="Vaidator_ID" Runat="Server" 
controlToValidate="要验证的控件ID"
type="Integer"
MinimumValue="最小值"
MaximumValue="最大值"
errorMessage="错误信息"
Display="Static|Dymatic|None"
>
</ASP:RangeValidator>

在使用RangeValidator控件时,必须设置如下5个属性。

  • ControlToValidate:被验证的表单字段的ID。
  • Text:验证失败时显示的错误信息。
  • MinimumValue:验证范围的最小值。
  • MaximumValue:验证范围的最大值。
  • Type:所执行的比较类型。可能的值有String、Integer、Double、Date和Currency。

实例040 用RangeValidator控件验证输入表单的数据

源码路径 光盘\daima\9\yanzheng.aspx  视频路径 光盘\视频\实例\第9章\040

本实例的实现文件为yanzheng.aspx,主要实现代码如下。

 <asp:Label id="lblAge" Text="年龄:" AssociatedControlID="txtAge" Runat="server" />
  <asp:TextBox id="txtAge" Runat="server" />
  <asp:RangeValidator id="reqAge" ControlToValidate="txtAge" Text="输入的年龄非法!"
    MinimumValue="5"
    MaximumValue="100"
    Type="Integer"
    Runat="server" 
/>
  <br /><br />
  <asp:Button
    id="btnSubmit"
    Text="Submit"
    Runat="server"
 />
范例079:日期类型验证
源码路径:光盘\演练范例\079视频路径:光盘\演练范例\079范例080:年龄范围验证
源码路径:光盘\演练范例\080视频路径:光盘\演练范例\080\

在上述代码中,设置在了TextBox内输入的年龄必须在5~100之间,否则将输出错误提示,如图9-3所示。

图片 201

图9-3 输出非法提示

CompareValidator控件可用于执行3种不同类型的验证任务。

(1)执行数据类型检测。换句话说,可以用它确定用户是否在表单字段中输入了类型正确的值,如在生日数据字段输入一个日期。

(2)在输入表单字段的值和一个固定值之间进行比较。例如,要建立一个拍卖网站,就可以用CompareValidator检查新的起价是否大于前面的起价。

(3)比较一个表单字段的值与另一个表单字段的值。例如,可以使用CompareValidator控件检查输入的会议开始日期值是否小于输入的会议结束日期值。

  • CompareValidator控件有如下6个常用属性。

(1)ControlToValidate:被验证的表单字段的ID。

(2)Text:验证失败时显示的错误信息。

(3)Type:比较的数据类型。可能的值有String、Integer、Double、Date和Currency。

(4)Operator:所执行的比较的类型。可能的值有DataTypeCheck、Equal、GreaterThan、Greater- ThanEqual、LessThan、LessThanEqual和NotEqual。

(5)ValueToCompare:所比较的固定值。

(6)ControlToCompare:所比较的控件的ID。

实例041 验证用户输入表单的日期是否合法

源码路径 光盘\daima\9\CompareValidator.aspx  视频路径 光盘\视频\实例\第9章\041

本实例的实现文件是CompareValidator.aspx,主要实现代码如下。

<asp:Label            //输入生日
    id="lblBirthDate"
    Text="输入你的生日:"
    AssociatedControlID="txtBirthDate"
    Runat="server" />
<asp:TextBox
    id="txtBirthDate"
    Runat="server" />
  <asp:CompareValidator
    id="cmpBirthDate"
    Text="(你的日期格式错误)"  //数据非法时的提示
    ControlToValidate="txtBirthDate"
    Type="Date"
    Operator="DataTypeCheck"
    Runat="server" />
  <br /><br />
  <asp:Button
    id="btnSubmit"
    Text="Submit"
    Runat="server" /> 
范例081:护照验证
源码路径:光盘\演练范例\081视频路径:光盘\演练范例\081范例082:用正则表达式验证身份证
源码路径:光盘\演练范例\082视频路径:光盘\演练范例\082\

在上述代码中,设置了在TextBox内输入的数据必须是日期格式字符,否则将输出错误提示,如图9-4所示。

图片 202

图9-4 输出非法提示

RegularExpressionValidator控件的功能是,把表单字段的值和正则表达式进行比较。正则表达式可用于表示字符串模式,如电子邮件地址、社会保障号、电话号码、日期、货币数和产品编码。

实例042 验证用户输入表单的邮件地址是否合法

源码路径 光盘\daima\9\RegularExpressionValidator.aspx  视频路径 光盘\视频\实例\第9章\042

本实例的功能是验证用户输入表单的数据,如果不是合法格式的邮件地址,则会输出错误提示。本实例的实现文件为RegularExpressionValidator.aspx,主要实现代码如下。

  <asp:Label
    id="lblEmail"
    Text="Email Address:"
    AssociatedControlID="txtEmail"
    Runat="server" />
  <asp:TextBox
    id="txtEmail"
    Runat="server" />
  <asp:RegularExpressionValidator
    id="regEmail"
    ControlToValidate="txtEmail"
    Text="(邮件地址格式错误)"
    ValidationExpression="\w+([−+.']\w+)*@\w+([−.]\w+)*\.\w+([−.]\w+)*"
    Runat="server" />
  <br /><br />
  <asp:Button
    id="btnSubmit"
    Text="Submit"
    Runat="server" />
范例083:常用用户名格式验证
源码路径:光盘\演练范例\083视频路径:光盘\演练范例\083范例084:入学日期必须小于毕业日期
源码路径:光盘\演练范例\084视频路径:光盘\演练范例\084\

在上述代码中,设置了在TextBox内输入的数据必须是邮件格式字符,否则将输出错误提示,如图9-5所示。

图片 203

图9-5 输出非法提示

图像说明文字

注意:和其他验证控件一样,RegularExpressionValidator控件不会验证没有值的表单字段。要使表单字段必填,必须为表单字段关联RequiredFieldValidator控件。

如果前面介绍的各种验证控件执行的验证类型都不是你所需要的,那么还可以使用CustomValidator控件自定义函数界定的验证方式。

  • CustomValidator控件有如下3个重要的属性。
  • ControlToValidate:被验证的表单字段的ID。
  • Text:验证失败时显示的错误信息。
  • ClientValidationFunction:用于执行客户端验证的客户端函数名。

使用CustomValidator控件的语法格式如下。

<ASP:CustomValidator id="Validator_ID" RunAt="Server"
controlToValidate="要验证的控件"
onServerValidateFunction="验证函数"
errorMessage="错误信息"
Display="Static|Dymatic|None"
>
</ASP: CustomValidator>

另外,CustomValidator控件还支持CustomValidator事件,该事件在执行验证时引发。在实际应用中,通常通过处理ServerValidate事件,将自定义的验证函数和CustomValidator控件相关联。

实例043 验证用户输入框的数据

源码路径 光盘\daima\9\chuli1.aspx  视频路径 光盘\视频\实例\第9章\043

本实例的功能是验证用户输入框的数据,如果超过10个字符,则会输出错误提示。本实例的实现文件为chuli1.aspx,主要实现代码如下。

<script runat="server">
  void valComments_ServerValidate(Object source, ServerValidateEventArgs args)
  {
//多于10个字符则赋值为False
    if (args.Value.Length > 10)
      args.IsValid = false;
    else
      args.IsValid = true;
  }
</script>
……
  <asp:Label
    id="lblComments"
    Text="输入你的口号:"
    AssociatedControlID="txtComments"
    Runat="server" />
  <br /> 
  <asp:TextBox
    id="txtComments"
    TextMode="MultiLine"
    Columns="30"
    Rows="5"
    Runat="server" /> 
  <asp:CustomValidator
    id="valComments"
    ControlToValidate="txtComments"
    Text="(不能超过10个字符!!!!!)"
    OnServerValidate="valComments_ServerValidate"
    Runat="server" />
  <br /><br />
  <asp:Button
    id="btnSubmit"
    Text="Submit"
    Runat="server" />
范例085:使用自定义验证控件验证货币格式
源码路径:光盘\演练范例\085视频路径:光盘\演练范例\085范例086:ValidationSummary显示验证消息
源码路径:光盘\演练范例\086视频路径:光盘\演练范例\086\

在上述代码中,定义了valComments_ServerValidate事件。ServerValidate事件处理程序的第二个参数是ServerValidateEventArgs类的一个实例。此类有如下3个属性。

(1)Value:被验证的表单字段的值。

(2)IsValid:表示验证成功或失败。

(3)ValidateEmptyText:指定所验证的表单字段没有值时是否执行验证。

这样就设置了输入框内输入的字符数不能超过10个,否则将会输出错误提示,如图9-6所示。

图片 204

图9-6 输出非法提示

和RangeValidator、CompareValidator、RegularExpressionValidator等控件不同,CustomValidator控件在验证表单字段时可以使用空字段。CustomValidator控件中有一个名为ValidateEmptyText的属性,它用于设置CustomValidator控件即使在用户没有输入值的情况下也可以验证表单字段。

实例044 验证用户输入框的数据

源码路径 光盘\daima\9\meiyou.aspx  视频路径 光盘\视频\实例\第9章\044

本实例的功能是设置在TextBox内输入的数字必须是4个字符,否则将输出错误提示。本实例的实现文件为meiyou.aspx,主要实现代码如下。

<script runat="server">
  void valProductCode_ServerValidate(Object source, ServerValidateEventArgs args)
  {
    if (args.Value.Length == 4)
      args.IsValid = true;
    else
      args.IsValid = false;
  }
</script>
……
  <asp:Label 
    id="lblProductCode"
    Text="请输入你的号码:"
    AssociatedControlID="txtProductCode"
    Runat="server" />
  <br />
  <asp:TextBox id="txtProductCode" Runat="server" />
  <asp:CustomValidator
    id="valProductCode"
    ControlToValidate="txtProductCode"
    Text="(错误的提示!!!!!)"
    ValidateEmptyText="true"
    OnServerValidate="valProductCode_ServerValidate" 
    Runat="server" />
  <br /><br />
  <asp:Button id="btnSubmit" Text="Submit" Runat="server" /> 
范例087:在校友录注册页面中使用验证控件
源码路径:光盘\演练范例\087视频路径:光盘\演练范例\087范例088:在用户注册页面中使用自定义验证控件
源码路径:光盘\演练范例\088视频路径:光盘\演练范例\088\

在上述代码中,设置了在TextBox内输入的数字必须是4个字符的,否则将输出错误提示,如图9-7所示。

图片 205

图9-7 输入为空则输出非法提示

在上面代码中,如果把ValidateEmptyText属性去掉,即使不输入任何数据就提交表单,也不会显示验证错误信息。

ValidationSummary控件的功能是,在页面中输出显示所有的验证错误信息。ValidationSummary控件在使用大的表单时特别有用。如果用户在页面底部的表单字段中输入了错误的值,那么这个用户可能永远也看不到错误信息。但是如果使用了ValidationSummary控件,就可以始终在表单的顶端显示错误列表。

在前面介绍的验证控件中都有ErrorMessage属性,但在具体应用时可以使用Text属性来表示验证错误信息。ErrorMessage属性和Text属性的区别如下。

  • 赋值给ErrorMessage属性的信息显示在ValidationSummary控件中。
  • 赋值给Text属性的信息显示在页面主体中。

在通常情况下,需要保持Text属性的错误信息简短。而另一方面,赋值给ErrorMessage属性的信息应能识别有错误的表单字段,例如“名字是必填项!”。

如果不为Text属性赋值,那么ErrorMessage属性的值就会同时显示在ValidationSummary控件和页面主体中。ValidationSummary控件支持如下4个属性。

  • DisplayMode:指定如何格式化错误信息。可能的值有BulletList、List和SingleParagraph。
  • HeaderText:在验证摘要上方显示标题文本。
  • ShowMessageBox:显示一个弹出警告对话框。
  • ShowSummary:隐藏页面中的验证摘要。

实例045 验证用户输入框的数是否为空

源码路径 光盘\daima\9\ValidationSummary.aspx  视频路径 光盘\视频\实例\第9章\045

本实例的实现文件为ValidationSummary.aspx,主要实现代码如下。

  <asp:ValidationSummary
    id="ValidationSummary1"
    Runat="server" />
  <asp:Label
    id="lblFirstName"
    Text="姓名:"
    AssociatedControlID="txtFirstName"
    Runat="server"
  />
  <br />
  <asp:TextBox id="txtFirstName" Runat="server" />
  <asp:RequiredFieldValidator
    id="reqFirstName"
    Text="(Required)"
    ErrorMessage="姓名为空"
    ControlToValidate="txtFirstName"
    Runat="server" 
  />    
  <br /><br />
  <asp:Label
    id="lblLastName"
    Text="地址:"
    AssociatedControlID="txtLastName"
    Runat="server" />
  <br />
  <asp:TextBox id="txtLastName" Runat="server" />
  <asp:RequiredFieldValidator
    id="reqLastName"
    Text="(Required)"
    ErrorMessage="地址为空"
    ControlToValidate="txtLastName"
    Runat="server" 
   /> 
  <br /><br />
  <asp:Button id="btnSubmit" Text="Submit" Runat="server" />
范例089:获取购物车中的商品
源码路径:光盘\演练范例\089视频路径:光盘\演练范例\089范例090:清空购物车
源码路径:光盘\演练范例\090视频路径:光盘\演练范例\090\

在上述代码中,设置了在2个TextBox内输入的字符不能为空,否则将输出对应的提示信息,如图9-8所示;如果单击【Submit】按钮,则错误信息会同时显示在页面主体和ValidationSummary控件中,如图9-9所示。

图片 206

图9-8 输入为空则输出提示

图片 207

图9-9 同时输出提示

教程类别