|
一.從繼承WebControl開始
在第二篇教程中,重點介紹了Render()方法的使用,用來呈現控件,但從Control類繼承的控件尚未發揮ASP.NET控件的作用.大家知道web服務器控件分為HTML服務器控件(如<input id="Button2" runat="server" type="button" value="button" />這樣的形式)和標準服務器控件(就是<ASP:.. id="" runat="server" />這樣的形式的控件)。
HTML服務器控件的控件從System.Web.UI.HtmlControls.HtmlControl 類派生,標準服務器控件的控件從System.Web.UI.WebControls.WebControl 類派生,HtmlControl 類和WebControl 類則從System.Web.UI.Control 類派生,并擴展。
所以我們說,所有的服務器控件都繼承自System.Web.UI.Control 類,即所有的服務器控件都具有Control 類的共同屬性,如Visible,EnableViewState屬性,HtmlControl 類和WebControl 類則擴充了System.Web.UI.Control 類的功能,如HtmlControl 類定義了所有 HTML 服務器控件所通用的方法、屬性 (Property) 和事件(具體參數參照MSDN),WebControl 類定義了所有 標準服務器控件所通用的方法、屬性 (Property) 和事件(具體參數參照MSDN)。
如每個繼承了WebControl 類的標準控件都有定義外觀和行為的屬性,然后不同控件再根據需要擴展功能.
圖一
所以我們推薦的做法是直接從WebControl 類派生,而非Control類.我們所做的非并從頭開始.從WebControl 類繼承可以幫我們省很多工作.
二.重寫WebControl類方法,不再是Render()
WebControl類繼承了Control類,當然有Render方法,在WebControl類中重寫了Render方法,如下代碼
示例一
NET技術:asp.net控件開發基礎(4),轉載需保留來源! 鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。protected override void Render(HtmlTextWriter output)
{
RenderBeginTag(output);
RenderContents(output);
RenderEndTag(output);
}