ASP.NET 高级编程基础之验证控件介绍

目录
1. 验证控件简介
2. 验证控件的使用方法
3. 小结

--------------------------------------------------------------------------------

1. 验证控件简介
顾名思义,验证控件就是校验用户输入数据正确性的控件,如用户在文本框中输入数据后,便显示一条提示信息,表明了校验的数据是不合法的。验证过程既可以在服务器上执行,也可以在客户机上执行,在客户端运行的校验代码是数据提交之前被执行的,因此可以提高程序的性能。ASP.NET的验证控件可以进行多种校验,如数据范围检查、数据间的比较和自定义校验等等,下面的内容将会逐一介绍这些验证控件。

三种控件的区别
(1) HTML控件,ASP.NET把HTML控件当成普通字符串渲染到浏览器端,不去检查正确性,无法再服务器端进行处理。

(2) ASP.NET服务端控件,经过ASP.NET高度封装的控件,使用简单,运行在服务器端,可以再服务端使用C#代码进行操作,会渲染到客户端为HTML控件。

(3) runat=”server”的HTML控件,在HTML控件的基础上面添加runat=”server”,也是运行在服务端的,也可以服务端使用C#进行操作,也会渲染到客户端,不像ASP.NET服务端控件那样高度封装,暴露的属性大部分是普通的HTML属性,和ASP.NET服务端控件相比的好处是:当需要在服务端要对控件进行操作的时候,如果控件没有被ASP.NET服务端控件封装的时候,用runat=”server”的HTML控件更方便,runat=”server”的HTML控件也会对虚拟路径,id->ClientID进行处理,所以在使用虚拟路径,UserControl中也可能会用到。

<input type=”Text” id=”txt1”runat=”server” />

(4) a->HtmlAnchor;form->HtmlForm;head->HtmlHead;input->HtmlInputButton,HtmlInputCheckBox,HtmlInputText等;meta->HtmlMeta;table->HtmlTable;tr->HtmlTableRow;td->HtmlTableCell;title->HtmlTitl。为单独封装的标签(比如:div)对应的类型为:HtmlGenericControl。使用Attributes属性操作未封装的属性。

(5) 服务端HTML控件不像ASP.NET控件那样封装的高级,比如:ASP.NET控件的BgColor属性为Color类型,而HTML控件的BgColor属性则为字符串类型,需要开发人员设置合适的值。

注:在ascx写入如下代码,拖放一个TextBox控件和Button控件,如果要操作当鼠标滑过Button控件的时候给TextBox赋值,直接在Button控件里面写onmouserover这样是会报错的,所以我们要单独写一个JavaScript方法。

 代码如下 复制代码

<script type="text/javascript">

    document.getElementById("<%=Button1.ClientID %>").onmouserover = function () {

        document.getElementById("<%=TextBox1.ClientID %>").value = "Kencery";

    }

</script>

验证控件
(1) 必须要对用户输入的数据进行合法性校验,这些校验逻辑很多是重复的,比如:字段不能为空,必须为日期格式,数字不能大于100等,而且要同时在客户端和服务端校验,客户端校验提高可用性,服务端校验防止恶意攻击,ASP.NET验证控件就是为了简化这些问题而提供的。

(2) ASP.NET提供了如下的组件

 1) RequiredFieldValidator:字段必填。

 2) RangeValiclator:值在给定的最大值最小值之间。

 3) CompareValidator:用于比较两个值的关系是否满足要求或者是否是指定类型的数据。

 4) RegularExpressionValidator:校验数据满足正则表达式。

 5) CustomValidator:自定义验证。

(3) RequiredFieldValidator

 1) ControlToValidate设定要验证的控件,Text属性为当被验证的控件为空的时候显示的错误信息,Text不仅可以写文本,还可以写任何HTML内容。

 2) 有时候控件如果是默认值也认为是空值,比如:下拉列表的选中值”---请选择性别---”,文本框的值为”填入搜索关键字”,只有将RequiredFieldValidator的InitialValue属性设定为”---请选择性别---”,”填入搜索关键字”即可。

(4) Validator共性

 1) 页面中的IsValid属性用来判断页面中的所有Validator是否都校验通过,只有都校验通过才会为True,即使页面中的Validator服务端校验报错(禁用JavaScript跳过客户端校验),在服务端方法中的业务代码(比如:btnOK.Click)也会被执行,因此如果代码在数据校验不通过的不能执行,则需要判断IsValid的值。

注:在Button控件下面写入如下代码:

 代码如下 复制代码

 if(!IsValid){

    return;

}

if(this.IsValid)
{    
  正确信息;                         
 else{
 
  错误信息;

} }

 2) 所有验证控件都有Display属性,用来决定如何显示错误信息。三个值:static:没有错误信息的时候控件的Visiblity样式为Hidden来实现隐藏;Dynamic,没有错误信息的时候控件的display样式为none来实现隐藏,这两者的区别在于:Visiblity:hidden隐藏控件仍会占据空间,而display:none隐藏则不会占用控件,Display属性还可以设置为None(用来配合后面讲的ValidationSummary)。

 3) 几乎所有的验证控件都有ControlToValidate,Text属性,所有控件都几乎在客户端和服务端都要进行校验。

 4) 如果在一个页面中同时放置注册和登录表单,那么他们的验证就会同时进行,这样虽然只是登录,但是注册的验证也会触发,可以使用验证组来解决这个问题,将同一组的控件(表单,提交按钮)等的ValidationGroup设为相同的值就可以,这样的话和Button等触发事件的控件ValidationGroup相同的控件才会校验。

 5) 如果将按钮控件(Button,ImageButton,LinkButton)的CausesValidator属性设置为false,则这个按钮的点击不触发校验。

(5) RangeValidator

 1) RangeValidator:MininmumValue,MaximumValue为最小,最大值,Type属性为数据类型(String,Interger,Double,Date,Currency等)。例如:年龄,毕业日期在合理范围内。

 2) RangeValidator,CompareValidator,RegularExpressValidator等都不会对非空值进行检验,所以如果字段不允许为空则需要在使用RequiredFieldValidator。

(6) CompareValidator

1) CompareValidator:Type属性同RangeValidator,Operator属性,比较操作符,可选值DataTypeCheck,Equal,GreaterThan,GreaterThanEqual,LessThan,LessThanEqual,NotEqual,ValueToCompare所比较的运算符右边的值,ControlToCompare设定和另一个控件进行比较。

 2) 校验数据类型,不进行范围的比较,ControlToValidate设定要校验的控件,Type设定要校验的数据类型,Operator设定为DataTypeCheck。

 3) 要进行范围的比较,ControlToValidator设定要校验的控件,Type设置要校验的数据类型,Operator设定为GreaterThan,ValueToCompare为要比较的值,也可以编程的时候动态设置。

 4) 与另一个空间的值进行比较,ControlToValidate设定要校验的控件,Type设置要检验的数据类型,Operator设定为GreaterThan,ControlToCompare设置为要比较的验证控件(运算符右边的控件)。

(7) 高级Validator

1) RegularExpressionValidator,ValidationExpression属性为正则表达式,VS的可视化编辑提供了几个内置的正则表达式,也可以自己写,案例:检验Email地址,身份证号码,QQ号码(5位至10位的数字),个人说明必须在10到50字之间。

 2) CustomValidator,自定义验证控件,当ASP.NET内置的验证控件无法满足要求的时候可以使用CustomValidator。

 3) ServerValidate事件为服务端的校验代码,在事件处理函数中读取args.Value来获得待校验的值,如果值合法则将args.IsValid设置为True,否则设置为False,如果为ClientValidationFunction设定一个函数名,那么会首先在客户端调用指定的JavaScript函数进行客户端校验,否则将只做服务器端校验,客户端校验函数的签名是:”函数名(src,args)”,argsd的属性以及意义和服务端的一样。

(8) 汇总错误消息

1) 使用Validator错误消息会显示在放置的位置,这样有两个可能的问题,如果表单非常大,用户看不到全部的错误信息,希望把消息集中显示在提交按钮旁边,如果错误信息非常多,错误信息会散落各地,希望能集中显示。

 2) ValidationSummary控件用来集中显示错误信息,每个验证控件都有ErrorMessage,Text两个属性,ErrorMessage是用来显示到ValidationSummary中的值,Text是用来显示在Validator位置的值,如果Text为空,则ErrorMessage会同时显示到ValidationSummary和控件的位置,一般Text的值要简短(比如:”必填”,”*”),因为直接显示到空间的位置,能知道指的是哪个控件,ErrorMessage要详细一点(比如:”用户名不能为空”,不能是”不能为空”等),这样才能从ValidationSummary每条错误信息中读取值出来。

 3) ValidationSummary的属性:DisPlayMode:显示模式,ShowMessageBox用户同时显示警告对话框。

 验证控件的使用方法
① RequiredFieldValidator控件
当页面上的控件要求必须输入数据时,RequiredFieldValidator就起作用了,ControlToValidate属性选择需要验证的控件,而ErrorMessage属性则是校验不合法后显示的错误提示信息。

 代码如下 复制代码
<HTML>
  <HEAD>
    <title>RequiredFieldValidator Example</title>
  </HEAD>
<BODY>
  <form id="Form1" runat="server">
    Name:
    <asp:TextBox id="TextBox1" runat="server" ></asp:TextBox>
    <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server"
ErrorMessage="Please enter your name" ControlToValidate="TextBox1"></asp:RequiredFieldValidator>
    <asp:Button id="Button1"  runat="server" Text="Button"></asp:Button>
  </form>
</BODY>
</HTML>

②CompareValidator控件
CompareValidator控件是用来比较两个输入控件之间的数据一致性的,同时也可以用来校验控件中内容的数据类型:如整形、字符串型等。ControlToCompare和ControlToValidate属性用来设置进行比较的两个控件。

 代码如下 复制代码
<HTML>
  <HEAD>
    <title>CompareValidator Example</title>
  </HEAD>
<BODY>
  <form id="Form1" runat="server">
    <P>Password:
    <asp:TextBox id="txtPwd" runat="server" TextMode="Password"></asp:TextBox><BR>
    Confirm:
    <asp:TextBox id="TxtCfm" runat="server" TextMode="Password"></asp:TextBox></P>
    <P>
    <asp:Button id="Button2" runat="server" Text="Button"></asp:Button>
    <asp:CompareValidator id="CompareValidator1" runat="server" ErrorMessage="Password Error!"
     ControlToValidate="TxtCfm" ControlToCompare="txtPwd"></asp:CompareValidator></P>
  </form>
</BODY>
</HTML>

③RangeValidator控件
RangeValidator控件可以用来判断用户输入的值是否在某一特定范围内,属性MaximumValue和MinimumValue用来设定范围的最大和最小值。

 代码如下 复制代码
<HTML>
  <HEAD>
    <title>RangeValidator Example</title>
  </HEAD>
<BODY>
  <form id="Form1" runat="server">
  <P>Age:
  <asp:TextBox id="TxtAge" runat="server"></asp:TextBox>
  <asp:RangeValidator id="RangeValidator1" runat="server" ControlToValidate="TxtAge"
   ErrorMessage="Age Error!" MaximumValue="99" MinimumValue="1"></asp:RangeValidator></P>
  </form>
</BODY>
</HTML>

④RegularExpressionValidator控件
RegularExpressionValidator控件可以判断用户输入的表达式是否正确,如电话号码、邮编、URL等,ControlToValidate属性选择需要验证的控件,ValidationExpression属性则编写需要验证的表达式的样式,下面的例子就是一段校验邮编的代码。

 代码如下 复制代码
<HTML>
  <HEAD>
    <title>RegularExpressionValidator Example</title>
  </HEAD>
<BODY>
  <form id="Form1" runat="server">
  <P>Postal Code:
  <asp:TextBox id="TxtPostalCode" runat="server"></asp:TextBox>
  <asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server"
       ControlToValidate="TxtPostalCode" ErrorMessage="Postal Code Error!"   
       ValidationExpression="d6}"></asp:RegularExpressionValidator></P>
  </form>
</BODY>
</HTML>

⑤CustomValidator控件
CustomValidator控件用于执行用户自定义的验证,这种校验既可以是服务器端的也可以是客户端的,下面的代码就是使用客户端验证邮编的例子。

 代码如下 复制代码
<HTML>
  <HEAD>
    <title>CustomValidator Example</title>
  </HEAD>
<BODY>
  <form id="Form1" runat="server">
    <P>Postal Code:
    <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
    <asp:CustomValidator id="CustomValidator1" runat="server" ControlToValidate="TextBox1" 
         ErrorMessage="CustomValidator"  ClientValidationFunction="ClientValidate">
    </asp:CustomValidator></P>
  </form>
</BODY>
</HTML>
<script language="vbscript">
   Sub ClientValidate(source, arguments)
      If isnumeric(arguments.Value ) and len(arguments.Value)=6 Then
         arguments.IsValid=true
      Else
         arguments.IsValid=false
      End If
   End Sub
</script>

⑥ValidationSummary控件
这个控件会将页面中所有的校验错误输出为一个列表,列表的显示方式由DisplayMode属性设置。

 代码如下 复制代码
<HTML>
  <HEAD>
    <title>ValidationSummary Example</title>
  </HEAD>
<body>
  <form id="Form1" runat="server">
  <P>Age:
  <asp:TextBox id="TxtAge" runat="server"></asp:TextBox>
  <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server"
 ControlToValidate="TxtAge" ErrorMessage="Age Error!" Display="None"></asp:RequiredFieldValidator><BR>
  Postal Code:
  <asp:TextBox id="TxtPostalCode" runat="server"></asp:TextBox>
  <asp:RequiredFieldValidator id="RequiredFieldValidator2" runat="server"
ControlToValidate="TxtPostalCode" ErrorMessage="Postal Code Error!"
Display="None"></asp:RequiredFieldValidator></P>
  <P>
  <asp:Button id="Button1" runat="server" Text="Button"></asp:Button></P>
  <P>
  <asp:ValidationSummary id="ValidationSummary1" runat="server"
   HeaderText="You must enter a value in the following fields:"></asp:ValidationSummary></P>
  </form>
</body>
</HTML>
时间: 2024-10-04 16:12:35

ASP.NET 高级编程基础之验证控件介绍的相关文章

ASP.NET 2.0服务器控件之验证控件示例

asp.net|服务器|控件|示例 在上一篇文章中,我们讲解了有关实现验证控件的一些知识.那些内容将为开发人员实现验证控件奠定一定基础.为了帮助读者更好的理解验证控件的实现方法,本文将首先介绍常见验证控件的实现步骤,然后,通过一个典型示例说明验证控件的实现方法. 1. 验证控件实现步骤 在创建验证控件过程中,需要实现服务器端验证和客户端验证等核心内容.下面列举了验证控件的常见实现步骤. (1)验证控件类应由BaseValidator基类继承.这样可使验证控件自动继承参与验证框架所需要的功能.例如

asp.net夜话之九:验证控件(一)

本篇要讲述的知识点如下: 数据验证介绍 纯客户端脚本验证 asp.net验证控件概述 RequiredFieldValidator控件 CompareValidator控件 RangeValidator控件 正则表达式 RegularExpressionValidator控件 CustomValidator控件 ValidationSummary控件 分组校验技术 数据验证介绍 在我们的开发中要提高网站的健壮性,为了做到这些笔者曾经在企业培训时候提到了两个原则: 第一条原则:就是尽量减少让用户输

ASP.NET 环境下的页面验证控件

验证控件用于验证用户的输入,利用这些控件,开发人员可以轻松的实现对用户输入的验证.ASP.NET提供了六种验证控件. 1.Required Field Validator:验证输入是否为空的控件. 主要属性: Control To Validate:表示要进行检查的控件ID.此属性必须设置为输入控件的ID,否则会发生异常.另外该ID所代表的控件必须和验证控件在同一个容器中. Error Message:表示当检测不合法时,出现的错误提示信息. Display:表示错误的显示方式,取值有Stati

ASP.NET常用6种验证控件介绍

RequiredFieldValidator (必须字段验证) 用于检查是否有输入值 CompareValidator (比较验证) 按设定比较两个输入 RangeValidator (范围验证) 输入是否在指定范围 RegularExpressionValidator (正则表达式验证) 正则表达式验证控件 CustomValidator (自定义验证) 自定义验证控件 ValidationSummary (验证总结) 总结验证结果 下面介绍一下这些控件的使用方法 一.CompareValid

asp.net夜话之九:验证控件(二)

RegularExpressionValidator控件 RegularExpressionValidator控件就是利用正则表达式来验证其它控件的值的控件.除了具有BaseValidator所有的属性之外,它还具有一个常见属性:ValidationExpression.这个属性就是用来设置用于匹配所要验证控件的值的正则表达式. RegularExpressionValidator控件提供了一个正则表达式编辑器,内置了一些常见的正则表达式,当我们在属性窗口设置RegularExpressionV

验证控件介绍--RequiredFieldValidator

控件  下面的这个例子,演示了RequiredFieldValidator控件的使用方法.validate3.aspx文件:<!--源文件:form\web页面简介\validate3.aspx-->    <html>    <body>    <center>    <title>验证控件演示 (1)</title>    <h3><font face="Verdana">验证控件演示

验证控件介绍--RegularExpressionValidator

express|控件    我们在制作网站的时候,尤其是各种电子商务网站,首先都会让用户填写一些表格来获取注册用户的各种信息,因为用户有可能输入各式各样的信息,而有些不符合要求的数据会给我们的后端ASP处理程序带来不必要的麻烦,甚至导致网站出现一些安全问题.因此我们在将这些信息保存到网站的数据库之前,要对这些用户所输入的信息进行数据的合法性校验,以便后面的程序可以安全顺利的执行.    使用RegularExpressionValidator服务器控件,可以用来检查我们输入的信息是否和我们的自定

验证控件介绍--CompareValidator

控件 为了比较两个控件的值,此时我们需要使用CompareValidator 控件.在下面的这个例子中,我们将讲解CompareValidator 控件的用法.先看文件validata4.aspx:<!--源文件:form\web页面简介\validate4.aspx--><%@ Page clienttarget=downlevel %><html><title>CompareValidator控件示例</title><head> 

验证控件介绍--RangeValidator

控件 RangeValidator控件主要界定输入的值的范围.因为有时我们要求输入的值是要有一定范围的,所以我们要使用RangeValidator来判断.在下面的这个例子中,我们将来介绍RangeValidator控件.请看validata5.aspx的程序内容:<!--源文件:form\web页面简介\validate5.aspx--><%@ Page clienttarget=downlevel %><html><center><title>