首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 控件開發(一):選擇基類與 Render 覆寫輸出 HTML

     編輯:關於ASP.NET

開發伺服器控件的第一步是選擇正確的基類,第二步是覆寫 Render 方法輸出客戶端 HTML。三大基類由輕至重:Control、WebControl、CompositeControl。

三大基類比較

基類命名空間特性適用場景
ControlSystem.Web.UI最輕量,無樣式支援,僅提供 Render非視覺控件、Literal、HiddenField
WebControlSystem.Web.UI.WebControls繼承 Control,加入 Style、CssClass、Enabled 等外觀屬性按鈕、文字框、標籤等視覺控件
CompositeControlSystem.Web.UI.WebControls繼承 WebControl,實作 INamingContainer,支援子控件集合包含多個子控件的複合控件(如 Login、Wizard)

繼承關係:Control → WebControl → CompositeControl

Render 方法簽章與職責

protected internal virtual void Render(HtmlTextWriter writer)
{
    // writer 由執行階段提供,負責輸出 HTML 字串
    // 覆寫此方法撰寫控件的客戶端呈現邏輯
}

HelloWorld 最小控件

public class HelloWorld : Control
{
    protected override void Render(HtmlTextWriter writer)
    {
        writer.Write("Hello World");
    }
}

HtmlTextWriter 常用 API

  • Write(string) / WriteLine(string):直接輸出文字
  • RenderBeginTag(HtmlTextWriterTag) / RenderEndTag():成對輸出標籤
  • AddAttribute(HtmlTextWriterAttribute, string):輸出屬性
  • AddStyleAttribute(HtmlTextWriterStyle, string):輸出內聯樣式
  • Encode(string):HTML 編碼防 XSS

進階:WebControl 增強版

public class StyledLabel : WebControl
{
    public string Text { get; set; }

    protected override void RenderContents(HtmlTextWriter writer)
    {
        writer.WriteEncodedText(Text);  // 自動編碼
    }
}

WebControl 提供 RenderBeginTag/RenderEndTag 自動輸出外層標籤(預設 span),覆寫 RenderContents 僅需關注內容輸出。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved