ASP.NET 伺服器控件開發主要有三種方式:
本系列專注於第二種:從 Control 或 WebControl 繼承的自訂控制項。
Control - 實作 IComponent,支援元件化設計WebControl - 繼承自 Control,增加樣式屬性 (CssClass, ForeColor 等)覆寫 Render(HtmlTextWriter writer) 方法輸出 HTML。HtmlTextWriter 封裝 HTML 文字串流寫入功能,提供 Write()、WriteBeginTag()、WriteAttribute() 等方法。
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CustomControls
{
// 繼承 Control - 最輕量
public class SimpleControl : Control
{
protected override void Render(HtmlTextWriter writer)
{
writer.Write("I'm here.");
}
}
// 繼承 WebControl - 具樣式支援
public class StyledControl : WebControl
{
protected override void Render(HtmlTextWriter writer)
{
writer.Write("I'm here too.");
}
}
}
| 特性 | Control | WebControl |
|---|---|---|
| HTML 標籤 | 無預設標籤 | 預設 <span> (可覆寫 TagKey) |
| 樣式屬性 | 無 | BackColor, ForeColor, Font, CssClass 等 |
| 適用場景 | 非視覺/輕量輸出 | 需樣式控制的視覺控制項 |
理解 Render 機制與基礎類別差異,是開發高品質自訂伺服器控制項的基石。