WebControl類包括三個構造函數,它們都用于初始化WebControl類的新執行個體,然而它們之間還存在一些細小的差異。
(1)protected WebControl ()
該構造函數用于初始化表示Span HTML元素的WebControl類的新執行個體。通常情況下,開發人員并不直接調用此構造函數。相反,它通常由派生類的構造函數調用以将TagKey屬性初始化為Span枚舉值。在随後的示例中,将重寫TagKey屬性,進而調用此構造函數。
(2)public WebControl (HtmlTextWriterTag tag)
開發人員可使用此構造函數建立并初始化使用指定的System.Web.UI.HtmlTextWriterTag值的WebControl類的新執行個體。其中的參數tag表示HtmlTextWriterTag枚舉值之一。可能讀者對于HtmlTextWriterTag還不太熟悉。它是一個枚舉類型,其枚舉值多為HTML标記,例如,A、B、Bold、Button等等。
(3)protected WebControl (string tag)
使用此構造函數可建立并初始化使用指定的HTML标記的WebControl類的新執行個體。其中參數tag表示HTML标記。當使用該構造函數時一定要注意:不能直接調用此構造函數。相反,它通常由派生類的構造函數調用以初始化TagKey和TagName屬性。
在WebControl基類中的Render方法的實作示意性代碼如下所示:
protected override void Render(HtmlTextWriter output) { RenderBeginTag(output); RenderContents(output); RenderEndTag(output); } |
在WebControl基類中的RenderBeginTag方法的實作示意性代碼如下:
public virtual void RenderBeginTag(HtmlTextWriter output) { AddAttributesToRender(output); HtmlTextWriterTag tagKey = TagKey; if(tagKey != HtmlTextWriterTag.Unknown) { output.RenderBeginTag(tagKey); } else { output.RenderBeginTag(this.TagName); } } |
在WebControl基類中的RenderContents方法的實作示意性代碼如下:
protected override void RenderContents(HtmlTextWriter output){ //使用預設邏輯來呈現子控件,那麼一定要調用基類中的方法。 base.Render(output); } |
轉載于:https://www.cnblogs.com/chenghm2003/archive/2008/04/14/1151850.html