共用方式為


ASP.NET 控制項設計工具概觀

更新:2007 年 11 月

ASP.NET 包括建立 Web 伺服器控制項之設計工具的進階支援。設計工具可以建置控制項之設計階段的使用者介面 (UI),如此開發人員便能設定控制項的屬性,以及視覺化設計工具 (例如,Visual Studio) 中的內容。如需 .NET Framework 提供之設計階段架構和功能的背景資訊,請參閱擴充設計階段支援

本簡介說明 ASP.NET 控制項設計工具的功能、基本設計工具類別和其功能,以及使用設計工具的案例。

設計工具功能

ASP.NET 在繼續支援舊版控制項設計工具架構的同時,並加入顯著的改進。

  • 區域架構編輯。區域 (Region) 是指控制項之設計階段檢視中的可編輯區域。這個功能提供在設計階段對控制項內容的 WYSIWYG (所見即所得) 編輯。

  • 動作清單。動作清單是控制項的網頁開發人員可以在設計階段 UI 中使用的工作功能表。例如,控制項的設計階段檢視可提供可用工作 (包括自動格式化控制項的工作) 的功能表。

  • 資料來源和資料繫結設計工具。資料來源控制項設計工具可讓網頁開發人員設定資料來源控制項。資料繫結控制項設計工具可讓網頁開發人員設定資料繫結控制項。這些功能可在跨資料來源和資料繫結設計工具之間的通訊中實作。如需資料來源控制項設計工具的範例,請參閱 DataSourceDesigner。如需資料繫結控制項設計工具的範例,請參閱 HierarchicalDataBoundControlDesigner

  • **簡化的樣板編輯。**為樣板化控制項 (例如,GridView) 之設計階段編輯建立 UI 的模型,已經徹底簡化和修改,如此控制項開發人員可以選擇執行其範本編輯的區域。如需範例,請參閱樣板化伺服器控制項範例

  • 簡化的物件模型。使用設計階段呈現的物件模型已簡化,如此開發人員要關心的重要問題只有產生設計階段 HTML。數個新的基底類別提供簡化之物件模型的存取:ControlDesignerContainerControlDesignerCompositeControlDesigner

  • **訂閱主機服務。**控制項設計工具可以訂閱和使用主機環境提供的各種服務。例如,控制項設計工具可以使用 Visual Studio 2005 服務提供資料的存取、提供組態的存取、在設計階段以程式設計的方式將控制項加入網頁、在設計工具中處理 Click 事件、繪製設計介面,以及存取其他服務 (例如,設計工具狀態)。

設計工具類別

藉由充當執行階段控制項和主機環境之間的傳遞者,控制項設計工具可啟用 Web 伺服器控制項的設計階段呈現。在主機環境中,設計工具提供下列功能以協助您為控制項的使用者建立設計階段 UI:

  • **設計階段呈現和內容。**控制項設計工具會啟用多個類型的呈現,包括簡單的和複雜的。區域架構編輯和樣板編輯是您可以為控制項提供之設計階段 UI 類型的範例。您還可以在控制項上提供資料行編輯或多重執行階段檢視,以便開發人員在設計階段使用控制項時,可以從一組選項中選擇控制項在執行階段呈現的方式。

  • **其他設計階段類別。**除設計工具類別之外,還有與型別或屬性關聯並執行型別轉換 (例如,字串至值) 的型別轉換子 (Type Converter) 類別。還有提供編輯屬性之特定 UI 的 UI 型別編輯器類別。例如,屬性方格中的色彩選擇器下拉式清單可讓您為 Web 控制項上的色彩屬性選取色彩。您還可以建立特定的元件編輯器,它是提供整個控制項屬性之編輯的類別。

  • 關聯控制項之資料的持續性 (Persistence)。控制項的內部屬性和內容可為持續性的,如此控制項及其子控制項就可以在設計階段環境維持狀態。這是由設定之控制項在標記中的定義方式而控制的。

當為 Web 伺服器控制項建立控制項設計工具時,有數個可能會使用的基底類別:

  • ControlDesigner

    提供 Web 伺服器控制項設計階段支援的基底類別。

  • ContainerControlDesigner

    簡單內含項目控制項的基底類別,可用來編輯控制項的子控制項集合。此設計工具免費提供一個編輯區域,且主應用程式 (例如 Visual Studio 2005) 會自動提供所有呈現內容。

  • CompositeControlDesigner

    提供設計階段支援以呈現複合 Web 伺服器控制項的基底類別。對於子控制項的呈現也提供程式設計控制的方式。

  • DataSourceDesignerBaseDataBoundControlDesignerHierarchicalDataSourceDesigner

    這些基底類別提供設計階段支援,以用於資料來源與資料繫結控制項。也設計為可以彼此通訊。

使用設計工具的案例

使用控制項設計工具有兩個常用案例:開發自訂控制項和開發視覺化設計工具。

如果您開發自訂 Web 伺服器控制項,則可以建立相關聯設計工具,以加強網頁開發人員在設計階段設定控制項的能力。許多網頁開發人員可能會重複使用控制項時,這個案例特別有用。例如,您可能建立自訂圖表控制項。如果您提供相關聯控制項設計工具,則不同的內部網路網頁開發人員會以不同的樣式,逐一設定網頁上的控制項。

如果您開發類似於 Visual Studio 2005 或 Microsoft FrontPage 的視覺化 Web 設計工具,就可以使用控制項設計工具來裝載元件。這可讓工具提供服務,並與控制項設計工具互動,為自訂控制項提供設計階段呈現。

如需 .NET Framework 設計工具架構的詳細資訊,請參閱設計階段架構。如需為自訂 Web 伺服器控制項建立自己的設計工具的詳細資料,請參閱逐步解說:建立 Web 伺服器控制項的基本控制項設計工具。如需以服務及動作清單來建立自訂控制項設計工具,以便提供設計階段使用者介面 (UI) 的詳細資訊,請參閱包含動作清單和服務的範例控制項設計工具

保護自訂控制項設計工具

當控制項位於設計檢視時,設計工具元件會處理屬性變更,並在設計主應用程式 (例如,Visual Studio) 中呈現標記。控制項的設計工具元件在設計階段會與其設計主應用程式在相同的信任層級內執行。設計工具元件可能會存取資料庫、呼叫遠端伺服器上的網站、在開發人員的電腦上建立和寫入檔案、傳送電子郵件訊息,以及在其他組件中執行程式碼。

本節中的資訊,將說明有助於改進控制項設計工具功能之安全性的最佳作法。

除了採用下列有助於改進應用程式安全性的程式設計與組態最佳做法,請確定您持續利用 Microsoft Windows 與網際網路資訊服務 (IIS) 的最新安全性更新,讓應用程式伺服器維持在最新狀態。您也應該確定安裝在電腦上的任何商用自訂控制項套件都是最新的版本。

您可以在 Michael Howard 和 David LeBlanc 所著的《Writing Secure Code》一書中,找到撰寫安全程式碼和保護應用程式之最佳做法的詳細資訊。如需其他指引,請參閱 Microsoft 典範與實例 Web 網站及方針及最佳作法

自訂控制項使用者的安全性問題

您應該留意不明來源的自訂控制項,因其可能包含將敏感性資料從電腦公開至 Web 的設計工具,或是在設計階段執行惡意程式碼。您無法使用程式碼存取組態來限制控制項設計工具的存取,因為這些設計工具在設計主應用程式中,一定都會以完全信任執行。如需信任層級的詳細資訊,請參閱 ASP.NET 信任層級和原則檔。如需程式碼存取安全性的詳細資訊,請參閱程式碼存取安全性的簡介

自訂控制項開發人員的安全性問題

對設計工具元件來說,使用類別和成員的組態屬性,將執行控制項功能所需權限限制在最低層級不足以確保安全性,因為這些元件必須在設計主應用程式中以完全信任執行。

可能的話,不要使用資料庫中的即時資料顯示用於預覽資料控制項的範例結構,例如 GridView 控制項。這樣可能會公開資料庫中的敏感性資料。反之,請使用範例資料結構來建置用於預覽的資料。

設計主應用程式開發人員的安全性問題

如果您要開發設計主應用程式 (例如 Visual Studio),在顯示設計工具傳回的 HTML 標記、文字和其他資料之前,應先檢查其安全性風險。此外,也要將 HTML 標記字串的大小和設計工具區域限制在易管理的範圍內。如需 HTML 驗證的詳細資訊,請參閱驗證 ASP.NET Web 網頁中的使用者輸入

支援多個開發工具

Microsoft Visual Web Developer 支援本主題中描述的所有功能,但是其他開發工具可能不支援。部分可能不支援的功能範例是:

請參閱

概念

設計階段架構

包含動作清單和服務的範例控制項設計工具

其他資源

ASP.NET Web 網頁的設計階段支援

擴充設計階段支援