本文將以簡單的方式闡述如何在 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,你就能使用了。不過這個簡單控件的可用性不是很大,因爲驗證文本的方法是在服務器端執行,太浪費了。所以,我在這裏只是舉一個例子來說明一下如何寫自定義控件。