Übersicht über ASP.NET-Steuerelement-Designer
Aktualisiert: November 2007
ASP.NET bietet eine verbesserte Unterstützung beim Erstellen von Designern für Webserver-Steuerelemente. Mit Designern können Sie eine Entwurfszeit-Benutzeroberfläche für ein Steuerelement erstellen, sodass Entwickler die Eigenschaften und den Inhalt des Steuerelements mithilfe eines visuellen Designtools wie Visual Studio konfigurieren können. Hintergrundinformationen zu Entwurfszeitarchitektur und Features von .NET Framework finden Sie unter Erweitern der Entwurfszeitunterstützung.
In dieser Einführung werden die Features von ASP.NET-Steuerelement-Designern, grundlegende Designerklassen und ihre Funktionen sowie Szenarios für die Verwendung von Designern erläutert.
Designerfeatures
ASP.NET unterstützt auch weiterhin die Steuerelement-Designerarchitektur der vorherigen Version, enthält jedoch noch zusätzlich entscheidende Verbesserungen.
Bereichsbasierte Bearbeitung. Bereiche sind bearbeitbare Teilstücke in der Entwurfszeitansicht eines Steuerelements. Mit diesem Feature ist zur Entwurfszeit eine WYSIWYG-Bearbeitung des Steuerelementinhalts möglich.
Aktionslisten. Aktionslisten sind Menüs mit Aufgaben, die Seitenentwickler in der Entwurfszeit-Benutzeroberfläche verwenden können. In der Entwurfszeitansicht Ihres Steuerelements kann z. B. ein Menü mit verfügbaren Aufgaben bereitgestellt werden, das unter anderem auch eine Aufgabe zum automatischen Formatieren des Steuerelements enthält.
Datenquellen-Designer und datengebundene Designer. Mit Designern für Datenquellen-Steuerelemente können Seitenentwickler Datenquellen-Steuerelemente konfigurieren. Mit datengebundenen Steuerelement-Designern können Seitenentwickler datengebundene Steuerelemente konfigurieren. Es stehen Features zum Implementieren gegenseitiger Kommunikation zwischen Datenquellen-Designern und datengebundenen Designern zur Verfügung. Ein Beispiel eines Designers für Datenquellen-Steuerelemente finden Sie unter DataSourceDesigner. Ein Beispiel eines Designers für datengebundene Steuerelemente finden Sie unter HierarchicalDataBoundControlDesigner.
Vereinfachte Vorlagenbearbeitung. Das Modell zum Erstellen einer Benutzeroberfläche für das Bearbeiten vorlagenbasierter Steuerelemente (z. B. GridView) zur Entwurfszeit wurde deutlich vereinfacht und modifiziert, sodass Steuerelemententwickler ihre eigenen Vorlagen bereichsbasiert bearbeiten können. Ein Beispiel finden Sie unter Beispiel für ein vorlagenbasiertes Serversteuerelement.
Vereinfachtes Objektmodell. Das Objektmodell für das Arbeiten mit Entwurfszeitwiedergabe wurde so vereinfacht, dass sich Entwickler im Wesentlichen nur noch mit dem Erstellen von Entwurfszeit-HTML beschäftigen müssen. Die folgenden neuen Basisklassen ermöglichen Zugriff auf das vereinfachte Objektmodell: ControlDesigner, ContainerControlDesigner und CompositeControlDesigner.
Abonnement zum Hosten von Diensten. Ein Steuerelement-Designer kann verschiedene von der Hostumgebung bereitgestellte Dienste abonnieren und verwenden. Beispielsweise können Steuerelement-Designer mithilfe von Visual Studio 2005-Diensten Zugriff auf Daten sowie auf Konfigurationen bereitstellen, zur Entwurfszeit einer Seite programmgesteuert Steuerelemente hinzufügen, Klickereignisse im Designer behandeln, auf der Entwurfsoberfläche zeichnen und auf andere Dienste wie den Designerzustand zugreifen.
Designerklassen
Ein Steuerelement-Designer aktiviert die Entwurfszeitwiedergabe für ein Webserver-Steuerelement und fungiert dabei als Vermittler zwischen dem Laufzeit-Steuerelement und der Hostumgebung. Innerhalb der Hostumgebung stellen Designer die folgenden Funktionen bereit, die Sie beim Erstellen einer Entwurfszeit-Benutzeroberfläche für Benutzer Ihrer Steuerelemente unterstützen:
Entwurfszeitwiedergabe und -inhalt. Ein Steuerelement-Designer aktiviert mehrere Arten von einfacher und komplexer Wiedergabe. Bereichsbasierte Bearbeitung und Vorlagenbearbeitung sind Beispiele für Arten von Entwurfszeit-Benutzeroberflächen, die Sie für ein Steuerelement bereitstellen können. Außerdem können Sie Spaltenbearbeitung oder mehrere Laufzeitansichten für ein Steuerelement bereitstellen, damit Entwickler, die zur Entwurfszeit mit dem Steuerelement arbeiten, aus mehreren Optionen auswählen können, wie das Steuerelement zur Laufzeit dargestellt wird.
Andere Entwurfszeitklassen. Neben den Designerklassen gibt es Typkonverterklassen, die einem Typ oder einer Eigenschaft zugeordnet sind und Typkonvertierungen (z. B. von Zeichenfolgen in Werte) durchführen. Es gibt auch Editorklassen mit Benutzeroberfläche, die eine spezielle Benutzeroberfläche zum Bearbeiten einer Eigenschaft bereitstellen. Mithilfe der Dropdownliste zur Farbauswahl in einem Eigenschaftenraster können Sie z. B. eine Farbe für eine Farbeigenschaft eines Websteuerelements auswählen. Außerdem können Sie einen spezialisierten Komponenten-Editor erstellen. Dabei handelt es sich um eine Klasse, mit der Sie die Eigenschaften eines Steuerelements als Ganzes bearbeiten können.
Dauerhaftigkeit der Daten des zugeordneten Steuerelements. Die inneren Eigenschaften und der Inhalt eines Steuerelements können beibehalten werden, sodass das Steuerelement und seine untergeordneten Steuerelemente in der Entwurfszeitumgebung ihren Zustand beibehalten. Dies wird durch die Definition des konfigurierten Steuerelements im Markup gesteuert.
Zum Erstellen von Steuerelement-Designern für Ihre Webserver-Steuerelemente können Sie mehrere Basisklassen verwenden:
-
Basisklasse, die Entwurfszeitunterstützung für Webserversteuerelemente bereitstellt.
-
Basisklasse für ein einfaches Kapselungssteuerlement, mit der die Auflistung der untergeordneten Steuerelemente eines Steuerelements bearbeitet werden kann. Dieser Designer stellt einen Bereich zur freien Bearbeitung, und der Host (z. B. Visual Studio 2005) übernimmt automatisch die Wiedergabe.
-
Basisklasse, die Entwurfszeitunterstützung für das Rendering von zusammengesetzten Webserversteuerelementen bereitstellt. Sie bietet ebenfalls eine programmgesteuerte Kontrolle über das Rendering von untergeordneten Steuerelementen.
DataSourceDesigner, BaseDataBoundControlDesigner und HierarchicalDataSourceDesigner
Diese Basisklassen bieten eine Entwurfszeitunterstützung für Datenquellen-Steuerelemente und datengebundene Steuerelemente. Sie wurden so entwickelt, dass sie miteinander kommunizieren können.
Szenarios für die Verwendung von Designern
Es gibt zwei gängige Szenarios, bei denen Sie mit Steuerelement-Designern arbeiten können: beim Entwickeln benutzerdefinierter Steuerelemente und beim Entwickeln grafisch unterstützter Entwurfstools.
Wenn Sie benutzerdefinierte Webserver-Steuerelemente entwickeln, können Sie einen zugeordneten Designer erstellen und damit die Möglichkeiten eines Seitenentwicklers beim Konfigurieren des Steuerelements zur Entwurfszeit verbessern. Dieses Szenario empfiehlt sich besonders, wenn das Steuerelement von mehreren Seitenentwicklern wiederverwendet werden könnte. Sie könnten z. B. ein benutzerdefiniertes Diagrammsteuerelement erstellen. Wenn Sie einen zugeordneten Steuerelement-Designer bereitstellen, können verschiedene Entwickler von Intranetseiten auf einer Seite jeweils ein eigenes Steuerelement mit unterschiedlichem Stil erstellen.
Wenn Sie ein grafisch unterstütztes Webdesigntool in der Art von Visual Studio 2005 oder Microsoft FrontPage entwickeln, können Sie die Hostkomponenten des Steuerelement-Designers verwenden. Dadurch kann Ihr Tool bei der Bereitstellung der Entwurfszeitwiedergabe für benutzerdefinierte Steuerelemente Dienste bereitstellen und mit Steuerelement-Designern interagieren.
Weitere Informationen zur .NET Framework-Designerarchitektur finden Sie unter Architektur der Entwurfszeit. Ausführliche Informationen zum Erstellen eines eigenen Designers für ein benutzerdefiniertes Webserver-Steuerelement finden Sie unter Exemplarische Vorgehensweise: Erstellen eines einfachen Steuerelement-Designers für ein Webserver-Steuerelement. Weitere Informationen über das Erstellen eines benutzerdefinierten Steuerelement-Designers mit Diensten und Aktionslisten zur Bereitstellung einer Entwurfszeit-Benutzeroberfläche finden Sie unter Der Beispielsteuerelement-Designer für Aktionslisten und Dienste.
Sichern eines benutzerdefinierten Steuerelement-Designers
Beim Anzeigen eines Steuerelements in der Entwurfsansicht verarbeitet die Designerkomponente Änderungen an einer Eigenschaft und rendert Markup im Entwurfshost (z. B. Visual Studio). Zur Entwurfszeit wird die Designerkomponente eines Steuerelements auf derselben Vertrauensebene wie ihr Entwurfshost ausgeführt. Designerkomponenten haben potenziell Zugriff auf Datenbanken, können Websites auf einem Remoteserver aufrufen, auf dem Computer des Entwicklers Dateien erstellen und in Dateien schreiben, E-Mail-Nachrichten senden und Code in anderen Assemblys ausführen.
Die Informationen in diesem Abschnitt beschreiben bewährte Vorgehensweisen, mit denen die Sicherheit von Steuerelement-Designerfeatures erhöht werden kann.
Zusätzlich zur einer Codegenerierung und Konfiguration entsprechend den bewährten Vorgehensweisen können Sie die Sicherheit einer Anwendung auch erhöhen, indem Sie den Anwendungsserver durch die neuesten Sicherheitsupdates für Microsoft Windows und Internetinformationsdienste (IIS) stets auf dem aktuellen Stand halten. Achten Sie außerdem darauf, dass für alle kommerziell erhältlichen Produkte, die Sie für benutzerdefinierte Steuerelemente verwenden, immer die neusten Versionen auf dem Computer installiert sind.
Weitere Informationen zu bewährten Vorgehensweisen beim Schreiben von sicherem Code und bei der Sicherung von Anwendungen finden Sie in dem Buch "Writing Secure Code" von Michael Howard und David LeBlanc (auf Englisch). Zusätzliche Anleitung finden Sie auf der Website Microsoft Patterns and Practices und unter Richtlinien und empfohlene Vorgehensweisen.
Sicherheitsprobleme bei der Verwendung benutzerdefinierter Steuerelemente
Benutzerdefinierte Steuerelemente aus unbekannten Quellen können möglicherweise Designer enthalten, die vertrauliche auf Ihrem Computer gespeicherte Daten im Web offen legen oder zur Entwurfszeit bösartigen Code ausführen. Mit der Konfiguration für Codezugriff kann der Zugriff für Steuerelement-Designer nicht beschränkt werden, da diese immer mit voller Vertrauenswürdigkeit auf dem Entwurfshost ausgeführt werden müssen. Weitere Informationen über Vertrauensebenen finden Sie unter ASP.NET-Vertrauensebenen und Richtliniendateien. Weitere Informationen über die Grundlagen der Codezugriffssicherheit finden Sie unter Einführung in die Codezugriffssicherheit.
Sicherheitsprobleme bei der Entwicklung benutzerdefinierter Steuerelemente
Die Verwendung von Konfigurationsattributen für Klassen und Member, um die Berechtigungen auf ein für die Funktionalität des Steuerelements erforderliches Mindestmaß zu beschränken, ist keine ausreichende Sicherheitsmaßnahme für Designerkomponenten, da diese mit voller Vertrauenswürdigkeit auf dem Entwurfshost ausgeführt werden müssen.
Verwenden Sie nach Möglichkeit keine aktiven Daten aus einer Datenbank, um Beispielstrukturen für die Vorschau von Datensteuerelementen (z. B. dem GridView-Steuerelement) anzuzeigen. Dadurch können sensible Daten aus der Datenbank offen gelegt werden. Verwenden Sie stattdessen Beispieldatenstrukturen, um Daten für Vorschauen zu erstellen.
Sicherheitsprobleme bei der Entwicklung von Entwurfshosts
Bei der Entwicklung von Entwurfshosts (wie Visual Studio) sollten HTML-Markup, Text und andere vom Designer zurückgegebene Daten vor dem Anzeigen auf Sicherheitsrisiken überprüft werden. Beschränken Sie außerdem die Größe der Zeichenfolgen für HTML-Markup sowie die Größe der Designerbereiche auf überschaubare Dimensionen. Weitere Informationen über HTML-Validierung finden Sie unter Überprüfen der Benutzereingabe in ASP.NET-Webseiten.
Unterstützen mehrerer Entwicklungstools
Microsoft Visual Web Developer unterstützt alle in diesem Thema behandelten Features. Bei anderen Entwicklertools ist dies jedoch u. U. nicht der Fall. Folgende Features werden z. B. möglicherweise nicht unterstützt:
Bereiche. Steuerelemententwickler können die SupportsRegions-Eigenschaft überprüfen und das Verhalten des Steuerelement-Designers entsprechend ändern.
Hostdienste. Steuerelemententwickler können vor Verwendung des Diensts den Rückgabewert der GetService-Methode überprüfen. Ein Beispiel finden Sie unter Gewusst wie: Verwenden von Diensten und Aktionslisten mit Steuerelement-Designern.
Bereichssammlungen. Da manche Entwicklungstools keine Bereichssammlungen unterstützen, müssen beide Versionen der GetDesignTimeHtml-Methode überschrieben werden.
Siehe auch
Konzepte
Der Beispielsteuerelement-Designer für Aktionslisten und Dienste