Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

ControlAdapter-Klasse

Aktualisiert: November 2007

Passt das Rendering für das abgeleitete Steuerelement an, an das der Adapter angefügt ist, um das Standardmarkup oder Standardverhalten für bestimmte Browser zu ändern, und ist die Basisklasse, die alle Steuerelementadapter erben.

Namespace:  System.Web.UI.Adapters
Assembly:  System.Web (in System.Web.dll)
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public abstract class ControlAdapter
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal) */
public abstract class ControlAdapter
public abstract class ControlAdapter

Steuerelementadapter sind Komponenten, die bestimmte Methoden und Ereignisse der Control-Klasse in ihrem Ausführungslebenszyklus überschreiben, um eine browser- oder markupspezifische Behandlung zu ermöglichen. .NET Framework ordnet für jede Clientanforderung einem Control-Objekt einen einzelnen abgeleiteten Steuerelementadapter zu.

Ein Adapter ändert ein Steuerelement für einen bestimmten Browser bzw. eine Browserklasse oder fungiert als willkürlicher Filter für eine Funktionalität. Der Adapter wird i. d. R. durch die vom Browser verwendete Markupsprache (z. B. XHTML oder HTML 3.2) definiert. Die Anpassbarkeit des Renderingverhaltens kann weitestgehend in den von der HtmlTextWriter-Klasse abgeleiteten Spezialklassen gekapselt werden. Deshalb ist es wahrscheinlich, dass ein einziger Adapter für mehrere Browserklassenverhalten verwendet werden kann, oder aber, dass die Anpassbarkeit der HtmlTextWriter-Klassen die Verwendung eines Steuerelementadapters überflüssig macht.

Ein Adapter für eine Steuerelementklasse wird auf alle Steuerelemente angewendet, die diese Klasse erben, sofern keine spezifischeren Adapter vorhanden sind. Beispielsweise kann ein Adapter für die BaseValidator-Klasse für alle Validator-Objekte verwendet werden.

Adapter erben normalerweise nicht unmittelbar die ControlAdapter-Klasse, sondern eine der zielspezifischen Adapterbasisklassen, die zusätzliche, für den Steuerelementtyp und Zielbrowser oder das erforderliche Rendering spezifische Funktionen bereitstellen.

Die Steuerelemente selbst erfordern nicht notwendigerweise einen Adapter. Wenn Steuerelemente durch Zusammenstellung erweitert werden, reichen die untergeordneten Steuerelementadapter im Allgemeinen aus.

Jedem Steuerelement sind über die BROWSER-Definitionsdateien Adapter explizit zugeordnet. Deshalb wird bei jedem Zugriff auf die Control.Adapter-Eigenschaft das aus den BROWSER-Definitionsdateien extrahierte HttpBrowserCapabilities-Objekt zum Ausführen der Suche nach der Zuordnung des Adapters zum Steuerelement verwendet.

Während der Verarbeitung fängt .NET Framework Aufrufe der überschreibbaren Methoden eines Steuerelements ab, die spezifisch für ein bestimmtes Ziel sein könnten. Wenn ein Steuerelementadapter angefügt ist, ruft .NET Framework die zugeordneten Adaptermethoden auf.

Der Adapter führt das Rendering für das Steuerelement über die Render-Methode aus. Wenn Render überschrieben wurde, sollte diese Methode eventuell nicht die Implementierung der Basisklasse aufrufen, da hierdurch ein Rückruf für die Control.Render-Methode ausgeführt wird. Dies kann dazu führen, dass das Rendering zweimal erfolgt, einmal durch den Adapter und einmal durch das Steuerelement.

Die Render-Basismethode führt einen Rückruf für die Control.Render-Methode des Steuerelements aus. Beim Überschreiben von Render sollten Sie daher die Implementierung der Basisklasse nur aufrufen, wenn das implementierte Rendering zusätzlich zu dem von Control.Render des Steuerelements bereitgestellten Rendering erfolgt.

Sie müssen sicherstellen, dass .NET Framework Aufrufe für Adapter der untergeordneten Steuerelemente abfängt. Hierzu können Sie die RenderChildren-Basismethode aufrufen, die aus der Render-Überschreibung die Control.RenderChildren-Methode des Steuerelements aufruft.

Das Steuerelement ruft die BeginRender-Methode und EndRender-Methode unmittelbar vor bzw. nach dem Aufruf der Render-Methode auf. Wenn als browserspezifische Verarbeitung nur Pre- und Postrendering erforderlich sind, kann sich das Überschreiben von Render durch Verwendung von BeginRender und EndRender erübrigen. Das Standardverhalten der BeginRender-Methode und EndRender-Methode besteht im Aufruf der entsprechenden Methoden von HtmlTextWriter.

Um die eigenen Zustandsinformationen beizubehalten, kann ein Steuerelementadapter die SaveAdapterControlState-Methode, LoadAdapterControlState-Methode,SaveAdapterViewState-Methode und LoadAdapterViewState-Methode überschreiben. SaveAdapterControlState, SaveAdapterViewState, LoadAdapterControlState und LoadAdapterViewState werden aufgerufen, wenn der private Steuerelement- und Ansichtszustand gespeichert bzw. geladen werden.

Die OnInit-Basismethode, OnLoad-Basismethode, OnPreRender-Basismethode und OnUnload-Basismethode führen einen Rückruf für die entsprechenden Methoden der Control-Klasse aus. Daher müssen überschriebene ControlAdapter-Methoden ihre Basismethode aufrufen. Andernfalls wird das der Control-Klasse zugeordnete Ereignis nicht ausgelöst.

Steuerelemente und Adapter implementieren optional die IPostBackDataHandler-Schnittstelle und IPostBackEventHandler-Schnittstelle. .NET Framework bestimmt, ob ein Adapter vorhanden ist und ob der Adapter diese Schnittstellen implementiert. Wenn dies der Fall ist, muss der Adapter ggf. die LoadPostData-Methode, RaisePostDataChangedEvent-Methode und RaisePostBackEvent-Methode überschreiben. Wenn die Postbackdaten im Adapter nicht erkannt werden, muss er einen Rückruf für das Steuerelement ausführen, um sie zu verarbeiten. Nachfolgende Ereignishandler müssen auch einen Rückruf für das Steuerelement ausführen.

Hinweise zur Vererbung:

Beim Vererben der ControlAdapter-Klasse muss ein Steuerelement, für das allgemeine Adapterfunktionen erforderlich sind, über eine entsprechende Adapterbasisklasse verfügen, die nach dem Muster ControlTypeAdapter benannt ist (z. B. TextBoxAdapter). Der Adapter muss mindestens über seine Control-Eigenschaft eine Instanz des Steuerelements mit starker Typisierung zurückgeben.

  1. Steuerelementadapter für einen angegebenen Steuerelementtyp und eine angegebene Markupsprache sollten nach dem Muster MarkupControlTypeAdapter angegeben werden (z. B. XhtmlTextBoxAdapter). Adapter für ein Steuerelement sollten in einem untergeordneten Adapters-Namespace implementiert werden.

Steuerelementadapter müssen von der entsprechenden Basisklasse erben. Dies muss nach demselben Vererbungsmodell wie für das Steuerelement erfolgen. Beispielsweise muss ein Adapter für ein Steuerelement, das die Control-Basisklasse erbt, von der ControlAdapter-Klasse oder der ControlTypeAdapter-Klasse erben.

Spezialadapter müssen unter allen Geräteknoten in den BROWSER-Konfigurationsdateien für das Spezialsteuerelement definiert sein.

Für ein ordnungsgemäß implementiertes Steuerelement darf nicht vorausgesetzt werden, dass ein Adapter angefügt ist oder dass der angefügte Adapter eine bestimmte Schnittstelle implementiert. Stattdessen muss das Steuerelement diese Bedingungen vor dem Aufruf überprüfen.

Das Überschreiben geschützter Ereignismethoden im Steuerelement, z. B. der OnClick-Methode von LinkButton, kann simuliert werden. Erstellen Sie zunächst eine Adapterklasse mit einer OnClick-Methode. Erstellen Sie anschließend ein neues, von LinkButton abgeleitetes Steuerelement, und überschreiben Sie die OnClick-Methode. Die überschriebene OnClick-Methode ruft die OnClick-Methode des Adapters auf. Das Adapterobjekt ist über die geschützte Adapter-Eigenschaft der Control-Klasse verfügbar. Wenn kein zugeordneter Adapter vorhanden ist, ist die Adapter-Eigenschaft des Steuerelements null. Diese Bedingung kann daher vor dem Aufrufen von Methoden des Adapters von jedem Code überprüft werden.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
© 2013 Microsoft. Alle Rechte vorbehalten.