Architektonische Übersicht über das adaptive Steuerelementverhalten
Aktualisiert: November 2007
Dieses Thema enthält einen Überblick über die Architektur des adaptiven Steuerelementverhaltens von ASP.NET. Mit dieser Architektur können Sie das Rendering von Steuerelementen in Bezug auf die Anforderungen verschiedener Browsertypen erweitern, u. a. für Browser auf mobilen Geräten.
Das adaptive Steuerelementverhalten ist das für Zielgeräte angepasste Steuerelementverhalten. ASP.NET 2.0 stellt eine adaptive Architektur bereit, die es ermöglicht, Schlüsselphasen im Lebenszyklus eines Steuerelements abzufangen und durch benutzerdefiniertes Verhalten zu ersetzen. Standardmäßig ordnet das ASP.NET-Seitenframework jedem Steuerelement für jede Anforderung eine einzelne Instanz eines Adapters zu. Normalerweise ist diese Standardzuordnung flexibel genug, um die meisten Entwicklerbedürfnisse zu erfüllen. In besonderen Fällen kann ein benutzerdefinierter Adapter abgeleitet und einem Steuerelement zugeordnet werden, um für ein bestimmtes Gerät oder eine Gerätefamilie zusätzliche Anforderungen an das Steuerelementverhalten zu erfüllen.
Ein gängiges Beispiel für adaptives Steuerelementverhalten ist die adaptive Wiedergabe einer ASP.NET-Webseite in Abhängigkeit von Browser oder Markup. Dies ist besonders nützlich zum Schreiben von Anwendungen für Browser, die andere Markupsprachen verwenden. Sie können die adaptive Wiedergabe einer Webseite in ASP.NET auf mehrere Arten steuern, z. B. durch Festlegen der XHTML-Standardwiedergabe der Anwendung oder durch Bereitstellen eines benutzerdefinierten ControlAdapter-Objekts. Das Bereitstellen eines benutzerdefinierten ControlAdapter-Objekts stellt eine fortgeschrittene Aufgabe dar und ist in den meisten Benutzerszenarios nicht erforderlich.
Die adaptive Wiedergabe kann auf folgende Weise gesteuert werden:
Konfigurieren der Anwendung für die Wiedergabe mehrerer Markups
Verwenden der XhtmlTextWriter-Klasse oder der ChtmlTextWriter-Klasse zum Anpassen von Steuerelementtags und Attributen
Erstellen einer benutzerdefinierten TextWriter-Klasse für die Wiedergabe von Ausgabedaten
Verwenden von deklarativem Gerätemarkup oder Browserfilterung, um zu beinflussen, wie Eigenschaften von Steuerelementen auf Grundlage der Gerätefilterdefinitionen festgelegt werden
Bereitstellen eines benutzerdefinierten Steuerelementadapters, mit dem eine Standard-Lebenszyklusmethode für ein Steuerelement durch eine Adapter-Lebenszyklusmethode ersetzt wird
Neben der adaptiven Wiedergabe stehen u. a. folgende weitere Verhaltensweisen für Steuerelemente zur Verfügung, die abhängig vom Zielgerät angepasst oder festgelegt werden können:
Verarbeiten von Postback-Daten
Verwalten des Ansichtszustands
Verhindern, dass ein Benutzersteuerelement angepasst wird
ASP.NET-Wiedergabe für Seiten und Steuerelemente
Standardwiedergabe
In der Standardwiedergabe der ASP.NET-Webseite wird eine Instanz der HtmlTextWriter-Klasse erstellt, und die RenderControl-Methode wird mit dem auf die Instanz der HtmlTextWriter-Klasse festgelegten Parameter rekursiv aufgerufen. Jedes Steuerelement in der Steuerelementhierarchie der Seite fügt sein Markup an das Ende des HtmlTextWriter-Objekts an. Der Inhalt des resultierenden HtmlTextWriter entspricht der Wiedergabe im resultierenden Browser.
Beim Wiedergeben von HTML 3.2-Inhalten für Clients verwendet ASP.NET automatisch die Html32TextWriter-Klasse. Um den Typ von TextWriter-Objekt zu bestimmen, der verwendet werden soll, fragt das ASP.NET-Seitenframework die TagWriter-Eigenschaft des Browser-Objekts ab.
Wenn Sie mit Browsern arbeiten, die HTML 4.0 oder höher unterstützen, geben ASP.NET-Seiten und -Steuerelemente Markup wieder, das dem XHMTL 1.0-Transitional-Standard entspricht. Um anzugeben, ob ASP.NET Markup wiedergibt, das mit XHTML-Standards übereinstimmt, konfigurieren Sie in der Datei Web.config für die Anwendung das xhtmlConformance-Element (ASP.NET-Einstellungsschema). Weitere Informationen zu ASP.NET und XHTML finden Sie unter ASP.NET und XHTML. Weitere Informationen zum Lebenszyklus einer Seite finden Sie unter Übersicht über den Lebenszyklus von ASP.NET-Seiten.
Verwenden eines benutzerdefinierten TextWriter-Objekts
Standardmäßig verwendet ASP.NET das entsprechende TextWriter-Objekt für das anfordernde Gerät. Wenn Sie mehr Kontrolle über den TextWriter benötigen, können Sie eine bestehende Klasse verwenden, die von der HtmlTextWriter-Klasse erbt, oder Sie können einen benutzerdefinierten Textwriter erstellen.
Die XhtmlTextWriter-Klasse und die ChtmlTextWriter-Klasse sind zwei Klassen im ASP.NET-Seitenframework, die jeweils von der HtmlTextWriter-Klasse und der Html32TextWriter erben. Die XhtmlTextWriter-Klasse und die ChtmlTextWriter-Klasse stellen zusätzliche Funktionen für die adaptive Wiedergabe bereit. Beispiel:
Die XhtmlTextWriter-Klasse ist hilfreich für die Wiedergabe von XHTML-Markup auf Mobilgeräten und stellt Methoden zum Anpassen von Attributen der wiedergegebenen XHTML-Elemente bereit.
Die ChtmlTextWriter-Klasse ist hilfreich für die Wiedergabe von cHTML (kompaktes HTML) auf Geräten mit wenig Speicherplatz und Prozessorleistung, kleinen Anzeigebildschirmen, eingeschränkten Formatierungsfähigkeiten und einer begrenzten Anzahl von Eingabeoptionen wie bei Touchpads von Mobiltelefonen.
Wenn Sie einen benutzerdefinierten Textwriter erstellen möchten, oder wenn Sie einen bestimmten Textwriter für die Wiedergabe von Ausgabedaten für ein bestimmtes Gerät angeben möchten, müssen Sie den Textwriter dem Gerät zuordnen, das das markupTextWriterType-Attribut des controlAdapters-Elements in einer BROWSER-Datei für die Anwendung verwendet.
Gerätefilterung
Mit der Gerätefilterung können Sie die Wiedergabe von Ausgabedaten einer Eigenschaft eines Webserver-Steuerelements deklarativ anpassen. Sie können nach Steuerelementeigenschaften, benutzerdefinierten Attributen und Vorlagen filtern. Außerdem können Sie die Gerätefilterung für einige Attribute der @ Page-Direktive und der @ Control-Direktive verwenden. Wenn für eine Eigenschaft oder ein Attribut mehrere Gerätefilter angegeben werden, hat der spezifischste Filter Vorrang.
- Gerätefilterdefinitionen zum Filtern von Ausgabedaten basieren auf der Definition von Browsertypen, wie in der Anwendung definiert. Die Standard-Browserdefinitionsdateien befinden sich im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\versionNumber\CONFIG\Browsers. Browserdefinitionsdateien, die im Ordner App_Browsers für die Anwendung angegeben sind, werden mit den Standarddefinitionsdateien zusammengeführt.
Weitere Informationen zur Gerätefilterung finden Sie unter Übersicht über die Gerätefilterung in ASP.NET. Weitere Informationen zum Dateiformat .browser finden Sie unter Schema der Browserdefinitionsdatei (browsers-Element).
Steuerelementadapter
Übersicht
Zum Anpassen des Verhaltens einer Seite oder eines Steuerelements können Sie unter ASP.NET ein ControlAdapter-Objekt angeben, das das Verhalten an Schlüsselpunkten im Lebenszyklus des Steuerelements anpasst oder ändert. In jeder Lebenszyklusphase, in der ein Aufruf einer Lebenszyklusmethode erfolgt, prüft das ASP.NET-Seitenframework, ob ein zugeordneter Adapter für das Steuerelement vorhanden ist, und ruft anstelle der Steuerelementmethode die dem Adapter zugeordnete Methode auf. In vielen Fällen greift die Adaptermethode möglicherweise einfach auf die Steuerelementmethode zurück. Eine Ausnahme von diesem Verhalten bilden Adapter für die Zustandsverwaltung, da für diese das adaptive Verhalten ein zusätzliches Verhalten des Steuerelements darstellt.
In den folgenden Situationen können Sie das Verhalten für Steuerelemente durch Steuerelementadapter überschreiben:
Um zielspezifische Verarbeitung in einer bestimmten Phase des Lebenszyklus des Steuerelements bereitzustellen.
Sie können z. B. die OnInit-Methode der ControlAdapter-Klasse zum Ausführen von Initialisierungsaufgaben verwenden, die für das Steuerelement spezifisch sind, dem der Adapter angefügt ist, und die für das Zielgerät spezifisch sind, das das Steuerelement wiedergibt.
Zum Anpassen der zielspezifischen Wiedergabe.
Sie können z. B. mit der Render-Methode und der RenderChildren-Methode zielspezifisches Markup generieren.
Das WebControlAdapter-Steuerelement und das PageAdapter-Steuerelement
Die ControlAdapter-Klasse ist eine abstrakte Klasse, die die grundlegenden Funktionen für alle Adapter definiert. Sie dient als Basisklasse für die WebControlAdapter-Klasse und die PageAdapter-Klasse.
Die WebControlAdapter-Klasse ist der Ausgangspunkt für die Wiedergabe von Steuerelementen, die adaptiv von der WebControl-Klasse erben. Außer ControlAdapter-Klassenmethoden fügt die WebControlAdapter-Klasse mehrere Methoden hinzu, die für die Wiedergabe von Tags bestimmt sind.
Die abstrakte PageAdapter-Klasse ist der Ausgangspunkt für die adaptive Wiedergabe einer Webseite.
Zusätzlich definiert die PageAdapter-Klasse Eigenschaften und Methoden, die die adaptive Wiedergabe im Rahmen typischer Aufgaben auf Seitenebene wie Zwischenspeichern oder Verwalten der Dauerhaftigkeit des Seitenzustands aktiviert. Zusätzlich zum Zwischenspeichern von Seiten auf der Grundlage zielunabhängiger Parameter müssen Sie z. B. möglicherweise eine Zwischenspeicherung anhand des Zielbrowsertyps ausführen. In diesem Szenario wird die CacheVaryByParams-Eigenschaft der PageAdapter-Klasse überschrieben und eine Liste zusätzlicher GET- oder POST-Parameter zum Steuern der zielspezifischen Zwischenspeicherung zurückgegeben.
Damit benutzerdefinierte Steuerelementadapter vom ASP.NET-Seitenframework erkannt werden, müssen diese ähnlich wie bei benutzerdefinierten Textwritern im controlAdapters-Element in der BROWSER-Datei für die Anwendung definiert werden. Weitere Informationen zum Dateiformat .browser finden Sie unter Schema der Browserdefinitionsdatei (browsers-Element).
Entwurfsmuster zum Erstellen von Adaptern beinhalten die folgenden Richtlinien:
Ein von der Control-Klasse erbendes Steuerelement muss über einen Adapter verfügen, der von der ControlAdapter-Klasse erbt.
Ein von der WebControl-Klasse erbendes Steuerelement muss über einen Adapter verfügen, der von der WebControlAdapter-Klasse erbt.
Entwickler, die Benutzersteuerelemente erstellen, die Adapterfunktionen erweitern müssen, müssen Basisklassenadapter für ihre Steuerelemente erstellen.
Siehe auch
Konzepte
Übersicht über den Lebenszyklus von ASP.NET-Seiten
Übersicht über die Gerätefilterung in ASP.NET
Referenz
xhtmlConformance-Element (ASP.NET-Einstellungsschema)
Schema der Browserdefinitionsdatei (browsers-Element)
Weitere Ressourcen
Entwickeln von benutzerdefinierten ASP.NET-Serversteuerelementen