ASP.net验证控制之CustomValidator控件
来源:互联网 发布:恢复视力的软件 编辑:程序博客网 时间:2024/05/28 15:29
ASP.net验证控制之CustomValidator控件
CustomValidator控件也称为自定义验证控件,通过RequiredFieldValidator控件结合CompareValidator控件、RangeValidator控件或RegularExpressionValidator控件之中的一个或多个就能满足asp.net开发中的90%以上的验证要求,但是有一些特殊的验证用上述控件组合无法达到验证要求,比如要求用户填写一个奇数。为了满足一些特殊的验证要求,在asp.net中还有一个CustomValidator控件,在这个控件中可以自己写验证规则。
CustomValidator类是BaseValidator抽象类,所以CustomValidator控件拥有BaseValidator中定义的属性,除此之外,CustomValidator控件还有以下常见属性:
属性名 说明ClientValidationFunction 用于在客户端执行验证的客户端函数名ValidateEmptyText是否验证空文本,即当所验证控件值为空时时候执行客户端验证
CustomValidator控件用于在客户端验证的函数有两个参数,第一个是表示被验证的控件,第二个表示事件数据。第二个参数有两个属性:IsValid用于表示被验证控件是否通过验证,Value属性表示被验证的控件的值。下面就是一个客户端验证函数的例子:
<script type="text/javascript"> //obj表示被验证的控件 //args表示事件数据,args有两个属性 //IsValid指示控件是否通过验证 //Value表示被验证的控件的值 function CheckEven(obj,args) { var numberPattern=/\d+/; //由于控件的ValidateEmptyText设置为true //所以当控件没有值时进行客户端验证 if(!numberPattern.test(args.Value))//用javascript进行客户端正则验证 { args.IsValid=false;//表示未通过验证,出现错误提示 } else if(args.Value%2==0) { args.IsValid=true;//表示通过验证,不出现错误提示 } else { args.IsValid=false;//表示未通过验证,出现错误提示 } }</script>
除了客户端验证之外,在CustomValidator控件中还能自己写服务器端写验证方法,它有一个OnServerValidate事件,同它的客户端处理函数一样,处理这个事件的委托也需要两个参数,第一个是表示被验证的控件,第二个表示事件数据。第二个参数有两个属性:IsValid用于表示被验证控件是否通过验证,Value属性表示被验证的控件的值。它服务器端验证方法设置界面如下:
下面我们用一个例子来说明CustomValidator控件的用法,在这里例子里用户被要求输入两个数,一个必须是2的倍数,一个必须是3的倍数。用CustomValidator控件就能很轻松完成这个功能。
下面是前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CustomValidatorDemo.aspx.cs" Inherits="CustomValidatorDemo"%><!DOCTYPE html PUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat="server"> <title>CustomValidator验证控件用法的例子</title> <script type="text/javascript"> //obj表示被验证的控件 //args表示事件数据,args有两个属性 //IsValid指示控件是否通过验证 //Value表示被验证的控件的值 function CheckEven(obj,args) { var numberPattern=/\d+/; //由于控件的ValidateEmptyText设置为true //所以当控件没有值时进行客户端验证 if(!numberPattern.test(args.Value)) { args.IsValid=false;//表示未通过验证,出现错误提示 } else if(args.Value%2==0) { args.IsValid=true;//表示通过验证,不出现错误提示 } else { args.IsValid=false;//表示未通过验证,出现错误提示 } } function CheckMultiple3(obj,args) { //由于控件的ValidateEmptyText没有设置,使用了默认值false //所以当控件没有值时不进行客户端验证 var numberPattern=/\d+/; if((!numberPattern.test(args.Value))||(args.Value%3!=0)) { args.IsValid=false; } else { args.IsValid=true; } } </script></head><body> <form id="form1" runat="server"> <div> <table border="1" width="600"> <tr><td colspan="2" align="center">CustomValidator验证控件用法的例子</td></tr> <tr><td> 填一个3的倍数</td><td> <asp:TextBox ID="txtOdd" runat="server"></asp:TextBox> <asp:CustomValidator ID="CustomValidator2" runat="server" ControlToValidate="txtOdd" ErrorMessage="请输入3的倍数" ClientValidationFunction="CheckMultiple3" Display="Dynamic" OnServerValidate="CustomValidator2_ServerValidate"></asp:CustomValidator> </td></tr> <tr> <td>填一个偶数</td> <td> <asp:TextBox ID="txtEven" runat="server"></asp:TextBox> <asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="txtEven" ErrorMessage="请输入偶数" ClientValidationFunction="CheckEven" ValidateEmptyText="True" OnServerValidate="CustomValidator1_ServerValidate"></asp:CustomValidator> </td> </tr> <tr><td> <asp:Button ID="Button2" runat="server" Text="提交"/> </td> <td> <input id="Reset3" type="reset" value="重置"/></td> </tr> </table> </div> </form></body></html>
此外,还编写了服务器端验证方法,下面是后台代码:
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class CustomValidatorDemo:System.Web.UI.Page{ protected void Page_Load(object sender,EventArgs e) { } //用于验证控件值是否为3的倍数 protected void CustomValidator2_ServerValidate(object source,ServerValidateEventArgs args) { System.Text.RegularExpressions.Regex regex=new System.Text.RegularExpressions.Regex(@"\d+"); //先用正则判断用户输入的是否能转换成数字 if(!regex.IsMatch(args.Value)) { args.IsValid=false;//表示验证不通过 } else { //如果对3取模为0就是3的倍数 args.IsValid=(int.Parse(args.Value)%3==0); } } //用于验证控件值是否为偶数 protected void CustomValidator1_ServerValidate(object source,ServerValidateEventArgs args) { System.Text.RegularExpressions.Regex regex=new System.Text.RegularExpressions.Regex(@"\d+"); //先用正则判断用户输入的是否能转换成数字 if(!regex.IsMatch(args.Value)) { args.IsValid=false; } else { //如果对2取模为0就是偶数 args.IsValid=(int.Parse(args.Value)%2==0); } }}
以下是什么也不填写时的验证效果:
在上图中,由于验证奇偶性的CustomValidator验证控件设置了ValidateEmptyText属性为true,所以即使所验证的控件是空值时也会执行客户端验证。从这个例子中可以看出CustomValidator验证控件可以不需要RequiredFieldValidator控件就能实现必填验证,只要将它的ValidateEmptyText属性设为true即可。
- ASP.net验证控制之CustomValidator控件
- ASP.net验证控制之CustomValidator控件
- ASP.NET表单验证之CustomValidator控件
- ASP.NET验证控件之CustomValidator
- ASP.NET - ASP.NET 服务器控件验证类型 - CustomValidator 类
- ASP.NET验证控件:CustomValidator 定制函数验证
- ASP.NET验证控件CustomValidator客户端验证DROPDOWNLIST、TEXTBOX
- ASP.NET验证控件CustomValidator客户端验证DROPDOWNLIST、TEXTBOX
- Asp.net自定义验证控件CustomValidator 的使用方法
- asp.net使用CustomValidator异步验证用户名
- asp.net中使用CustomValidator验证
- [ASP.NET]为什么CustomValidator验证控件在验证DropdownList的时候不能设置ControlToValidate属性
- asp.net验证输入框字符的长度(使用CustomValidator控件)
- CustomValidator自定义验证控件
- Asp.Net 之 CustomValidator控件不知道问题出在哪?
- ASP.NET之验证控件
- ASP.NET CustomValidator自定义验证是否为空
- 自定义客户端验证控件 CustomValidator
- Ubuntu vi 上下左右变ABCD及 apt-get install报错问题解决方法
- 算法分析基础
- mysql中文乱码解决
- 面试题:数组元素统计、合并两个有序数组
- BPM平台为企业“增值”
- ASP.net验证控制之CustomValidator控件
- javascript中获取非行间样式的方法
- SAP和Java系统的Webservice实例 转载
- 摘抄语录
- C++小知识之指针和引用的区别
- Genymotion常见问题整合与解决方案
- 并发线程有关问题
- 深入浅出API——Activity源码分析
- A.Q.S源码分析(exclusive模式下加锁)