定義
WebControls可以通過拖放放置到asp.net頁面上,支援設計時設定屬性,封裝一些好的WebControls可以極大的提高代碼效率和代碼品質。
幾個概念
Web控制項陳列庫項目
建立WebControls在vs中可以建立Web控制項陳列庫項目,改項目下的類檔案預設都繼承自System.Web.UI.WebControls.WebControl
Render
建立WebControl要重寫該方法 ,該方法用於向輸出資料流中輸出html,是WebControl在頁面上的顯示。相當於WinForm控制項的OnPrint()
理解自訂 Web Form控制項的關鍵在於 Render 方法,該方法在概念上與 Windows 表單 OnPaint 方法相同,區別僅在於前者發出 HTML,而後者則發出 GDI 調用。當 ASP.NET 伺服器架構為響應使用者請求而彙編 Web Form頁時,它將建立頁上列出的控制項,設定這些控制項的屬性和持久性資料,然後調用它們的各個 Render 方法。架構實際上是告訴控制項:“你是活動的,並正處於預期的狀態。你需要告訴我你的外觀,因為我沒有別的辦法來瞭解。”Web Form控制項的作者會在 Render 方法中放入一些代碼,以發出 HTML,告知瀏覽器如何根據控制項的目前狀態和屬性,以及與控制項有關的環境中的任何其他資訊來顯示控制項的外觀。
當 ASP.NET 架構調用控制項的 Render 方法時,將傳遞一個 System.Web.UI.HtmlTextWriter 類型的對象。這在概念上類似於 OnPaint 方法在 Windows 表單控制項中收到的 System.Windows.Forms.PaintEventArgs 的 Graphics 成員。兩者都代表到架構的串連,該架構將輸出定位到其相應的位置。HtmlTextWriter 包含的方法、屬性和常數使得您的控制項能夠將 HTML 發送到將被發送到用戶端瀏覽器的輸出頁上。在範例程式碼中,我首先調用了方法 AddStyleAttribute,該方法在內部建立一個稱為 style 的 HTML 屬性,將其值設定為控制項所繼承的 ForeColor 屬性的值,然後將其添加到內部緩衝區。可以通過對 AddStyleAttribute 方法的附加調用向緩衝區添加 style 屬性的附加值;通過調用 AddAttribute 方法,可以添加其他屬性
Page.GetPostBackEventReference
實現該方法需要繼承介面IPostBackEventHandler,用於處理PostBack,可以在這裡面處理檢視狀態也控制項事件。
方法 Page.GetPostBackEventReference 導致架構產生頁上的 HTML 指令碼,並返回調用它的 HTML 字串
伺服器端控制項通過實現稱為 IPostBackEventHandler 的介面並重寫 RaisePostBackEvent 方法來接受該輸入通知
事件處理
Web Form控制項中的事件處理包括兩個必需的部分,和一個可選的第三部分。首先,控制項的 Render 方法必鬚生成用戶端 HTML,這些 HTML 在用戶端發生您所關注的事件時導致對控制項的回傳。其次,您的控制項必須實現 IPostBackEventHandler 介面,以便 ASP.NET 能夠通知您的控制項它收到了該回傳,並傳遞有關它的附加資訊。接下來是一個可選的部分,您的控制項可以(很可能會選擇)激發 .NET 事件,這樣其他控制項就可以接收所發生的這些事件的通知
ViewState(檢視狀態)
這個就不用解釋了