asp.net编写自定义控件,TEXTBOX正則表達式驗證

本文将以简单的方式阐述如何在 asp.net下编写简单的自定义控件

编写的自定义控件实现的功能是:在一个自定义的文本输入框内,给它指定正则表达式, 就能知道输入框的字符串是否符合给定的正则表达式。

首先,我讲一下在.net下如何使用正则表达式。在sys.Text.RegularExpression命名空间下,这些是专门处理正则表达式的一些类。其中,Regex类,有个方法叫做IsMatch(string RegularExpression),这个方法返回一个bool值,就是说它接受一个正则表达式字符串,返回是否匹配。

正则表达式讲完了,我们开始讲自定义控件。

分析一下需求,其实就是对原有的Textbox控件加入2个属性,一个是RegularExpression属性,来设置这个自定义文本框的给定正则表达式。另外一个就是有一个属性来指示自定义文本框内的内容是否与给定的正则表达式相匹配的结果,这个属性就叫IsMatch,它是一个bool值。

在asp.net下编写自定义控件,一个最简单的方法就是使用继承关系。那样,可以得到所有的父类的非私有成员。所以:

步骤一:新建一个类库项目,命名为CustomTexBox

步骤二:在项目中引入web.dll,因为在类库项目中并不是自带就有web.dll的

步骤三:新建一个类,继承自System.Web.UI.WebControls.TextBox,可以得到所有的父类的所有非私有成员。

步骤四:新加入2个属性,RegularExpression IsMatch,具体代码看下面:

using System;

using System.Text.RegularExpressions;

namespace CustomTextBox

{

/// <summary>

/// 正则表达式验证文本框

/// </summary>

public class RegBox:System.Web.UI.WebControls.TextBox

{

private string regularExpression;

/// <summary>

/// 指定正则表达式

/// </summary>

public string RegularExpression

{

get

{

return regularExpression;

}

set

{

regularExpression = value;

}

}

/// <summary>

/// 返回文本框内容是否匹配给定的正则表达式,只读属性

/// </summary>

public bool IsMatch

{

get

{

Regex reg = new Regex(regularExpression);

return reg.IsMatch(this.Text);

}

}

}

}

这样,就完成了一个简单的自定义控件,在使用的时候,只需要你把这个dll引入进来,在工具箱中添加进来,ok,你就能使用了。不过这个简单控件的可用性不是很大,因为验证文本的方法是在服务器端执行,太浪费了。所以,我在这里只是举一个例子来说明一下如何写自定义控件。

转:http://blog.csdn.net/NogamesNow/archive/2006/07/22/957682.aspx