如果現有的 ASP.NET 服務(wù)器控件都不符合應用程序的特定要求,則可以創(chuàng )建封裝所需功能的 Web 用戶(hù)控件或 Web 自定義控件。這兩種控件之間的主要區別在于設計時(shí)的易創(chuàng )建性與易用性。
Web 用戶(hù)控件易于創(chuàng )建,但它們在高級方案中使用起來(lái)可能不太方便。開(kāi)發(fā) Web 用戶(hù)控件的方式與開(kāi)發(fā) Web 窗體頁(yè)的方式幾乎完全相同。與 Web 窗體相似,用戶(hù)控件可以在可視化設計器中創(chuàng )建,可以使用與 HTML 隔離的代碼來(lái)編寫(xiě),并且可以處理執行事件。但是,由于 Web 用戶(hù)控件在運行時(shí)動(dòng)態(tài)地進(jìn)行編譯,所以不能將它們添加到工具箱中,而且它們在添加到頁(yè)面上時(shí)由簡(jiǎn)單的占位符標志符號來(lái)表示。如果您習慣于完全的 Visual Studio .NET 設計時(shí)支持(包括“屬性”窗口和“設計”視圖預覽),這將會(huì )使 Web 用戶(hù)控件使用起來(lái)更不方便。此外,在應用程序之間共享用戶(hù)控件的唯一方式是將一個(gè)單獨的副本放入每個(gè)應用程序,因此如果對該控件作出了更改,將需要進(jìn)行比較多的維護。
Web 自定義控件是編譯的代碼,這使得 Web 自定義控件更易于使用但更難于創(chuàng )建;Web 自定義控件必須使用代碼來(lái)創(chuàng )建。一旦創(chuàng )建該控件,那么,您就可以將其添加到工具箱中,并在具有完全“屬性”窗口支持和 ASP.NET 服務(wù)器控件的其他所有設計時(shí)功能的可視化設計器中顯示該控件。此外,還可以在全局程序集緩存中安裝 Web 自定義控件的單個(gè)副本,并在應用程序之間共享該副本,這將使維護變得更容易。有關(guān)更多信息,請參見(jiàn)全局程序集緩存。
如果您的控件包含大量靜態(tài)布局,用戶(hù)控件則可能是較佳的選擇。如果您的控件主要是動(dòng)態(tài)生成的(例如數據綁定表的行、樹(shù)視圖的節點(diǎn)或選項卡控件的選項卡),自定義控件則可能是較佳的選擇。
下表概述了這兩種類(lèi)型之間的主要區別:
| Web 用戶(hù)控件 | Web 自定義控件 |
|---|---|
| 易于創(chuàng )建 | 難于創(chuàng )建 |
| 為使用可視化設計工具的使用者提供有限的支持 | 為使用者提供完全的可視化設計工具支持 |
| 每個(gè)應用程序中需要控件的一個(gè)單獨副本 | 僅在全局程序集緩存中需要控件的單個(gè)副本 |
| 不能添加到 Visual Studio 中的工具箱 | 可以添加到 Visual Studio 中的工具箱 |
| 適用于靜態(tài)布局 | 適用于動(dòng)態(tài)布局 |
聯(lián)系客服