ASP.NET表单验证之CustomValidator控件

来源:互联网 发布:淘宝淘金币报名入口 编辑:程序博客网 时间:2024/04/29 12:34

     CompareValidator:该控件可以完成3种数据验证。1、数据类型的验证;2、输入字符串值与固定值得比较(设置ValueToCompare属性)3、两个输入字符串值得比较验证(设置ControlToCompare属性)

属性ControlToValidate:验证控件要验证的输入控件ID(绑定的输入空间ID

      Text:输入控件输入的内容不能通过验证时显示的内容

      Type:要验证的数据类型(String/Integer/Double/Date/Currency(货币类型))

      Operator:所执行比较验证的操作类型(DataTypeCheck/Equal/GreaterThan/GreaterThanEqual/LessThan/LessThanEqual/NotEqual)

      ValueToCompare:要比较的固定值

      ControlToCompare:所比较的空间的ID

说明:空间在执行日期类型验证的时候,必须使用短格式的日期,如2010/2/4 2010-01-012010.01.01。验证currency类型时,小数位不得操作2位。同样要验证输入为空,也必须得再次使用RequiredFieldValidator控件。

(2)    RegularExpressionValidator:该控件使用指定的正则表达式验证输入的字符串值。

   属性ControlToValidate:验证控件要验证的输入控件ID(绑定的输入空间ID

      Text:输入控件输入的内容不能通过验证时显示的内容

     ValidationExpression:验证使用的正则表达式

说明:要验证是否为空,还是得使用RequiredFieldValidator控件。在输入正则表达式方面,asp.net也为我们提供了内置的表达式:在设计视图中打开该空间的属性窗口,选择ValidationExpresstion属性,即可选择asp.net提供的正则表达式字符串。

(3)    CustomValidator:该控件允许用户自定义自己的验证函数,包括服务端和客户端js验证。

属性ControlToValidate:验证控件要验证的输入控件ID(绑定的输入空间ID

      Text:输入控件输入的内容不能通过验证时显示的内容

     ClientValidationFunction:执行客户端验证客户端函数名

      ServerValidator:控件执行验证时引发的事件

说明:1、在使用ServerValidator事件时,起处理程序带有两个参数一个是引发事件的对象,一个是ServerValidateEventArgs类的一个实例。ServerValidateEventArgs包括三个属性:Value:被验证的表单字段值;IsValid:是否验证成功;ValidateEmptyText:表示所验证的表单没有值是是否执行验证。与其他验证控件还有一个区别就是ControlToValidate不是一定要赋值(验证的时候直接使用ServerValidator指定的处理函数来判断是否验证通过)。

示例1 :服务端验证,假设我们验证如果表单的值得长度大于20个字符,就显示验证失败。则只需要给ServerValidator添加一个处理函数如下:

        protected void valComments_ServerValidate(object source, ServerValidateEventArgsargs)

       {

             if(args.Value.Length > 20)    //使用Value值判断长度是否大于20

                  args.IsValid = false;      //超过20验证失败

             else

                 args.IsValid = true;       //验证成功

}

验证控件代码:

         <asp:CustomValidator

           ID="valComments"

           ControlToValidate="txtComments"

           Text="(Comments must be less than 20 characters)"

           Runat="server"

   onservervalidate="valComments_ServerValidate"/>

      说明:因为ServerValidate处理程序是服务端控件,页面需要传回服务器才能进行验证,才能得到验证结果。

      示例2:客户端验证,为空间的ClientValidationFunction指定一个JS处理函数:

       <script type="text/javascript">

       functionvalComments_ClientValidate(source,args)

       {

           if(args.Value.length>10)

                args.IsValid=false;

           else

                args.IsValid=true;

        }

       </script>

       验证控件:

        <asp:CustomValidator

       ID="valComments"

       ControlToValidate="txtComments"

       Text="(Commentsmust be less than 20 characters)"

       Runat="server"

       ClientValidationFunction="valComments_ClientValidate" />

       说明:该JS函数与ServerValidator的服务端函数一样,同样需要两个参数,最大的不同是使用不同语言编写。注意大小写。

     示例3:验证空字段,与RangeValidator/CompareValidator/ReqularExpressionValidator不同的是如果要验证是否为空不要结合RequiredValidator,而是使用ValidateEmptyText属性。但是ValidateEmptyText验证必须传回服务端验证。

     <asp:CustomValidator

            ID="valProductCode"

            ControlToValidate="txtProductCode"

            text="(Invalid product code)"

            ValidateEmptyText="true"

            runat="server" onservervalidate="valProductCode_ServerValidate" />

       示例4:不绑定ControlToValidate属性验证,在表单中放入一个输入框,放入一个验证控件,验证控件不设置ControlToValidate值(与输入框不绑定)。服务器端验证函数:

    protected void valAnswerText_ServerValidate(object source, ServerValidateEventArgsargs)

     {

        //绑定ControlToValidate则可以

        //使用args.Value.Length代替txtAnswer.Text.Trim().Length

       if (txtAnswer.Text.Trim().Length < 4)

            args.IsValid = true;

       else

            args.IsValid = false;

     }

原创粉丝点击