天天看點

System.Web.UI.WebControls RenderContents

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

ui