自定义创建web验证控件
做Asp.net开发的都知道在VS里提供了很多的验证控件,比如:RequiredFieldValidator, RangeValidator,RegularExpressionValidator等等,他们都是继承于BaseValidator这个基类,BaseValidator类是一个抽象(abstract)类,它要求子类必须实现一个方法:EvaluateIsValid——当被检验的表单字段通过验证时返回True。
BaseValidator类也包含一些其他的方法,可以重写(override)或做别的用途。这些方法中最有用的是下面这个:
GetControlValidationValue——用于获取被验证的控件的值。
创建自定义验证控件时,要重写EvaluateIsValid()方法,并在EvaluateIsValid()方法中调用GetControlValidationValue来获得被验证的表单字段的值。
接下来就来创建一个验证最少字符个数:
首先先创建一个类放在项目的App_Code文件夹里,所有加入到这个文件夹的类都会自动被ASP.NET Framework编译。
下面是类的内容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//在类中添加
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApp_Model
{
public class StudentMinLengthValidate : BaseValidator
{
int _minLength = 0;
public int MinLength
{
get { return _minLength; }
set { _minLength = value; }
}
protected override bool EvaluateIsValid()
{
string value = this.GetControlValidationValue(this.ControlToValidate);
if (value.Length < _minLength)
return false;
else
return true;
}
}
}
这样验证的类就OK了;
接下来就是怎么用该类了:
其实用该类的方式跟VS里的验证控件是一样的,因为都是继承于BaseValidate。
1.首先先注册一下我们刚才建的类:
<%@ Register TagPrefix="custom" Namespace="WebApp_Model" %>
2.在.aspx页面上放一个textbox控件
<asp:TextBox ID="textbox1" runat="server"></asp:TextBox>
3.放入该验证控件
<custom:StudentMinLengthValidate id="valCustom" Runat="server" MinLength="10" ControlToValidate="textbox1" ErrorMessage="字符太少" />
3.再加入按钮进行检验一下
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
后台代码:
protected void Button1_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
Response.Write("true");
}
}
演示效果:
输入123
输入123…超过十位