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