有很多方法可以爲Asp.Net構建自定義控件。有些人使用System.Web.UI.WebControls.WebControl
作爲基類,其他人使用System.Web.UI.Control
作爲其新控件的基類。構建自定義控件:使用WebControl還是Control?
選擇其中一個作爲基礎的原因是什麼?
有很多方法可以爲Asp.Net構建自定義控件。有些人使用System.Web.UI.WebControls.WebControl
作爲基類,其他人使用System.Web.UI.Control
作爲其新控件的基類。構建自定義控件:使用WebControl還是Control?
選擇其中一個作爲基礎的原因是什麼?
System.Web.UI.WebControls.Webcontrol
派生自System.Web.UI.Control
並增加了對樣式(BackgroundColor,Style等)的支持。
Control
默認情況下不具備該支持,您必須通過創建屬性並處理Render()
方法中的屬性來自行實現。 WebControls
也帶有主題和工具箱支持某些共同的屬性。
好點!但是我並沒有使用主題,所以我會認爲我會堅持'Control'類。 – 2011-04-12 09:37:06
控件沒有WebControl呈現給響應對象的用戶界面。
用戶界面可以通過覆蓋Render方法在控件上呈現。 – 2011-04-06 18:23:08
是的,但是您需要花費額外的不必要的開發工作。另外,WebControls類引入了我們所有人都期望從我們可見的ASP.NET控件(如Visible屬性)中獲得的所有那些流行的小功能。 – 2011-04-06 18:27:18
@Ben f。檢查:http://msdn.microsoft.com/en-us/library/system.web.ui.control.visible.aspx控制也有一個可見。 – 2011-04-06 18:51:52
當你的控件要在呈現的頁面上顯示一個UI組件時,你應該使用System.Web.UI.WebControls.WebContro
l,因爲它包含了各種管道代碼來生成一個UI(儘管仍然需要大量的工作來創建該UI)。
System.Web.UI.Controls
適用於您的控件在呈現的頁面上沒有UI時(請考慮駐留在工具箱中的一些ASP.NET DataSource控件,可以將它們拖動到頁面上,不呈現任何內容並採取行動作爲獲取數據到具有UI的GridView控件的管道)。
唯一的區別是UI?像BackgroundColor和類似的東西? – 2011-04-06 18:31:37
區別在於WebControls有一個客戶端,在解釋.aspx頁面後在瀏覽器中呈現UI,而控件對最終用戶沒有任何可辨別的UI(它們嚴格在幕後管道代碼中) – 2011-04-06 18:35:36
[\ [ASP.NET \]可能的重複在用戶控件,服務器控件和自定義控件之間有什麼區別?](http://stackoverflow.com/questions/994009/asp-net-what-are-用戶控件 - 服務器控件 - 用戶之間的差異) – Jacob 2011-04-06 18:25:46
@Jacob這個問題不是重複的,因爲它談論的是基類。不是關於控件類型(ascx和c#控件)。 – 2011-04-06 18:28:34
此外,這兩個屬於自定義控件的類別,其中.Controls用於UI和.WebControls用於用戶界面的控件。 – 2011-04-06 18:29:52