通过从BaseValidator类派生一个新的控件来创建新的验证控件。
BaseValidator类是一个抽象类,它要求子类必须实现一个方法:
*EvaluateIsValid-----当被验证的表单字段通过验证时返回True。
BaseValidator类包含一些其他的方法,可以重写或做别的用途。这些方法中最有用的是下面这个:
*GetControlValidationValue------用于获取被验证控件的值。
注意:要在web网站程序中使用,我开始在web应用程序中使用失败。
LengthValidator.cs文件,要放在App_Code文件夹中。
在下边的页面中使用自定义验证控件。using System; using System.Web.UI; using System.Web.UI.WebControls; using System.Web; namespace myControls { /// <summary> ///Class1 的摘要说明 /// </summary> public class LengthValidator : BaseValidator { public LengthValidator() { // //TODO: 在此处添加构造函数逻辑 // } int _maximumLength = 0; public int MaximumLength { get { return _maximumLength; } set { _maximumLength = value; } } protected override bool EvaluateIsValid() { string value = this.GetControlValidationValue(this.ControlToValidate); if (value.Length > _maximumLength) return false; else return true; throw new NotImplementedException(); } } }
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register TagPrefix = "custom" Namespace = "myControls" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID = "lblComments" AssociatedControlID = "txtComments" Text = "Comments" runat = "server"></asp:Label><br /> <asp:TextBox ID = "txtComments" TextMode = "MultiLine" Columns = "20" Rows = "3" runat = "server"></asp:TextBox> <custom:LengthValidator id = "valComments" ControlToValidate = "txtComments" text = "(Must be less than 10 characters)" MaximumLength = "10" runat = "server"></custom:LengthValidator> <br /><br /> <asp:Button ID = "btnSubmit" Text = "Submit" runat = "server" /> </div> </form> </body> </html>