2011-04-06 49 views
1

有很多方法可以爲Asp.Net構建自定義控件。有些人使用System.Web.UI.WebControls.WebControl作爲基類,其他人使用System.Web.UI.Control作爲其新控件的基類。構建自定義控件:使用WebControl還是Control?

選擇其中一個作爲基礎的原因是什麼?

+2

[\ [ASP.NET \]可能的重複在用戶控件,服務器控件和自定義控件之間有什麼區別?](http://stackoverflow.com/questions/994009/asp-net-what-are-用戶控件 - 服務器控件 - 用戶之間的差異) – Jacob 2011-04-06 18:25:46

+1

@Jacob這個問題不是重複的,因爲它談論的是基類。不是關於控件類型(ascx和c#控件)。 – 2011-04-06 18:28:34

+1

此外,這兩個屬於自定義控件的類別,其中.Controls用於UI和.WebControls用於用戶界面的控件。 – 2011-04-06 18:29:52

回答

1

System.Web.UI.WebControls.Webcontrol派生自System.Web.UI.Control並增加了對樣式(BackgroundColor,Style等)的支持。

Control默認情況下不具備該支持,您必須通過創建屬性並處理Render()方法中的屬性來自行實現。 WebControls也帶有主題和工具箱支持某些共同的屬性。

+0

好點!但是我並沒有使用主題,所以我會認爲我會堅持'Control'類。 – 2011-04-12 09:37:06

1

控件沒有WebControl呈現給響應對象的用戶界面。

+0

用戶界面可以通過覆蓋Render方法在控件上呈現。 – 2011-04-06 18:23:08

+1

是的,但是您需要花費額外的不必要的開發工作。另外,WebControls類引入了我們所有人都期望從我們可見的ASP.NET控件(如Visible屬性)中獲得的所有那些流行的小功能。 – 2011-04-06 18:27:18

+0

@Ben f。檢查:http://msdn.microsoft.com/en-us/library/system.web.ui.control.visible.aspx控制也有一個可見。 – 2011-04-06 18:51:52

0

當你的控件要在呈現的頁面上顯示一個UI組件時,你應該使用System.Web.UI.WebControls.WebContro l,因爲它包含了各種管道代碼來生成一個UI(儘管仍然需要大量的工作來創建該UI)。

System.Web.UI.Controls適用於您的控件在呈現的頁面上沒有UI時(請考慮駐留在工具箱中的一些ASP.NET DataSource控件,可以將它們拖動到頁面上,不呈現任何內容並採取行動作爲獲取數據到具有UI的GridView控件的管道)。

See this MSDN article

+0

唯一的區別是UI?像BackgroundColor和類似的東西? – 2011-04-06 18:31:37

+0

區別在於WebControls有一個客戶端,在解釋.aspx頁面後在瀏覽器中呈現UI,而控件對最終用戶沒有任何可辨別的UI(它們嚴格在幕後管道代碼中) – 2011-04-06 18:35:36