| 特性 | WebControl | HtmlControl |
|---|---|---|
| 基底類別 | System.Web.UI.WebControls.WebControl | System.Web.UI.HtmlControls.HtmlControl |
| ViewState 支援 | 內建,自動維持狀態 | 無,PostBack 後狀態遺失 |
| 事件處理 | 瀏覽器產生事件 → 通知伺服器處理 | 瀏覽器直接處理事件 |
| 適用場景 | 需伺服器處理的互動控件 | 即時性高的客戶端事件(鍵盤、滑鼠) |
MyControl : WebControl 類別,含 Text 屬性與 RenderContents。
[DefaultProperty("Text")]
[ToolboxData("<{0}:MyControl runat=server></{0}:MyControl>")]
public class MyControl : WebControl
{
[Bindable(true), Category("Appearance"), DefaultValue(""), Localizable(true)]
public string Text
{
get { string s = (string)ViewState["Text"]; return s == null ? "[" + this.ID + "]" : s; }
set { ViewState["Text"] = value; }
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
}
DefaultProperty:設計工具屬性視窗預設選中屬性。ToolboxData:拖曳至設計面時產生的標記範本。Bindable/Category/DefaultValue/Localizable:屬性視窗分類、預設值、本地化支援。繼承 WebControl 即享有 BackColor、ForeColor、Border*、Width/Height 等外觀屬性,大幅簡化控件開發。