自定义创建web验证控件

自定义创建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超过十位

原文地址:https://www.cnblogs.com/KimhillZhang/p/1750022.html