共用方式為


開發自訂控制項:重要概念

這個主題提供各種程式設計項目 (與 ASP.NET 伺服器控制項的開發有關) 的高階概觀。這裡的討論旨在做為一般程式設計的準則;詳細資訊在本章節別處另有交代。您可以用任何符合通用語言規格 (Common Language Specification) 的程式語言 (如什麼是通用語言規格? 中所說明的) 來撰寫您的控制項。

ASP.NET 伺服器控制項為直接或間接衍生自 System.Web.UI.Control 的類別。下列兩個類別是 ASP.NET 伺服器控制項的基底類別 (Base Class)。

  • System.Web.UI.Control

    Control 類別定義通用於所有 ASP.NET 伺服器控制項的屬性、方法和事件。這些包括方法和事件,支配控制項執行的存留週期和屬性,例如 IDUniqueIDParentViewStateControls (子控制項的集合)。Control 沒有任何使用者介面 (UI) 特定功能。如果您正在撰寫不提供 UI 的控制項,或組合會產生它們自己 UI 的其他控制項,請從 Control 來衍生。

  • System.Web.UI.WebControls.WebControl

    WebControl 類別衍生自 Control ,並且提供 UI 功能的額外屬性和方法。這些屬性包括 ForeColorBackColorFontBorderStyleHeightWidthWebControl 為 ASP.NET 中 Web 伺服器控制項家族的基底類別。如果您的控制項要呈現 UI,請從 WebControl 來衍生。

依照您控制項的功能,您可能必須實作下列介面的其中一個或多個。

  • System.Web.UI.INamingContainer

    INamingContainer 為資料標記 (空白) 介面,沒有任何方法。當這個介面為控制項所實作時,ASP.NET 網頁架構在控制項之下建立新的命名範圍 (Scope)。這確保子控制項在控制項的階層式樹狀結構中會擁有唯一 ID。如果您的控制項為提供資料繫結 (Data Binding) 的複合控制項 (Composite Control) (它含有子控制項)、如果它是樣板化的控制項,或如果它需要轉送事件至其子控制項,它必須實作 INamingContainer 介面。以 Repeater 控制項和其他資料繫結控制項為例。如需詳細資訊,請參閱開發複合控制項

  • System.Web.UI.IPostBackDataHandler

    如果您的控制項需要檢查回傳資料並更新其狀態,或根據資料的變更在伺服器上引發事件,它必須實作 IPostBackDataHandler 介面。以 TextBox 控制項為例,它會檢查張貼的文字值並更新其 Text 屬性,而且在文字變更時引發 TextChanged 事件。如需詳細資訊,請參閱處理回傳資料

  • System.Web.UI.IPostBackEventHandler

    如果您的控制項擷取用戶端回傳事件,並藉著處理它或於伺服器引發事件來回應它的話,控制項必須實作 IPostBackEventHandler 介面。以 Button 控制項為例,它會擷取表單的送出,並在伺服器引發 Click 事件。如需詳細資訊,請參閱擷取回傳事件

您可以覆寫繼承自基底類別的屬性、方法和事件,而且也可以加入新的屬性、方法和事件至您的自訂控制項。如需詳細資訊,請參閱ASP.NET 伺服器控制項中的屬性ASP.NET 伺服器控制項中的方法ASP.NET 伺服器控制項中的事件

ASP.NET 允許控制項存取並公開樣式,如伺服器控制項中的樣式所述。您可以撰寫 ASP.NET 伺服器控制項,以允許網頁開發人員透過內嵌 (Inline) 樣板語法自訂控制項的使用者介面。如需詳細資訊,請參閱開發樣板化的控制項

若要開發資料繫結控制項 (具有繫結至資料的複雜屬性),請參閱開發樣板化的資料繫結控制項

若要逐步瞭解建立簡單自訂控制項的步驟,請參閱開發簡單 ASP.NET 伺服器控制項

請參閱

開發簡單 ASP.NET 伺服器控制項 | ASP.NET 伺服器控制項階層架構