ControlAdapter Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Personalizza il rendering per il controllo derivato al quale è collegato l'adattatore, per modificare il markup predefinito o il comportamento di browser specifici, ed è la classe base dalla quale ereditano tutti gli adattatori dei controlli.
public ref class ControlAdapter abstract
public abstract class ControlAdapter
type ControlAdapter = class
Public MustInherit Class ControlAdapter
- Ereditarietà
-
ControlAdapter
- Derivato
Commenti
Gli adattatori di controllo sono componenti che eseguono l'override di determinati Control metodi ed eventi di classe nel ciclo di vita dell'esecuzione per consentire la gestione specifica del browser o del markup. Il .NET Framework esegue il mapping di un singolo adattatore di controllo derivato a un Control oggetto per ogni richiesta client.
Un adattatore modifica un controllo per un browser o una classe specifica di browser o funge da filtro arbitrario per alcune funzionalità. In genere, l'adattatore è definito dal linguaggio di markup usato dal browser (ad esempio, XHTML o HTML 3.2). Gran parte dell'adattabilità nel comportamento di rendering può essere incapsulata nelle classi specializzate che derivano dalla HtmlTextWriter classe . Pertanto, è probabile che una singola scheda possa essere usata per un certo numero di comportamenti della classe del browser o che l'inclusione dell'adattabilità nelle HtmlTextWriter classi potrebbe rendere non necessario l'uso di un adattatore di controllo.
Un adattatore per una classe di controllo si applica a tutti i controlli che ereditano da tale classe, a meno che non siano presenti adattatori più specializzati. Ad esempio, un adattatore per la BaseValidator classe può essere usato per tutti gli Validator
oggetti .
Gli adattatori in genere non ereditano direttamente dalla ControlAdapter classe , ma da una delle classi di base dell'adattatore specifiche della destinazione che forniscono funzionalità aggiuntive specifiche per il tipo di controllo e il browser di destinazione o il rendering specifico richiesto.
I controlli stessi non richiedono necessariamente un adattatore. Se i controlli vengono estesi attraverso la composizione, in genere gli adattatori di controllo figlio sono sufficienti.
Ogni controllo dispone di mapping espliciti agli adapter tramite i file di definizione del browser. Pertanto, qualsiasi accesso alla Control.Adapter proprietà utilizza l'oggetto HttpBrowserCapabilities estratto dai file di definizione del browser per eseguire la ricerca per il mapping dell'adattatore al controllo.
Durante l'elaborazione, il .NET Framework intercetta le chiamate ai metodi sostituibili di un controllo che potrebbe essere specifico della destinazione. Se un adattatore di controllo è collegato, il .NET Framework chiama i metodi dell'adattatore associati.
L'adattatore esegue il rendering per il controllo tramite il Render metodo . Se sottoposto a override, Render potenzialmente non deve chiamare l'implementazione della classe di base perché esegue una chiamata al Control.Render metodo . In questo modo il rendering può verificarsi due volte, una volta dall'adattatore e una volta dal controllo .
Il Render metodo di base richiama il Control.Render metodo del controllo . Pertanto, se si esegue l'override di , non è consigliabile chiamare l'implementazione Renderdella classe di base, a meno che il rendering implementato non sia oltre a quello fornito dal Control.Render controllo .
È necessario assicurarsi che il .NET Framework esegua l'intercettazione per gli adattatori dei controlli figlio. A tale scopo, chiamare il RenderChildren metodo di base, che chiama il Control.RenderChildren metodo del controllo, dall'override Render .
I BeginRender metodi e EndRender vengono chiamati dal controllo immediatamente prima e dopo (rispettivamente) il controllo chiama il Render metodo . Se il pre-rendering e il post-rendering sono le uniche attività di elaborazione specifiche del browser necessarie, usando BeginRender e EndRender potrebbe rendere non necessario eseguire l'override Renderdi . Il comportamento predefinito dei metodi e consiste nel BeginRender chiamare i metodi corrispondenti di HtmlTextWriter.EndRender
Per mantenere le proprie informazioni sullo stato, un adattatore di controllo può eseguire l'override dei SaveAdapterControlStatemetodi , LoadAdapterControlState, SaveAdapterViewStatee LoadAdapterViewState . SaveAdapterControlState, SaveAdapterViewState, LoadAdapterControlStatee LoadAdapterViewState vengono chiamati quando i controlli privati e gli stati di visualizzazione vengono salvati e caricati, rispettivamente.
I OnInitmetodi di base , OnLoad, OnPreRendere OnUnload richiamano i metodi di classe corrispondenti Control . Pertanto, uno di questi ControlAdapter metodi sottoposti a override deve chiamare i relativi metodi di base. In caso contrario, l'evento associato Control al metodo di classe non verrà generato.
I controlli e gli adattatori implementano facoltativamente le IPostBackDataHandler interfacce e IPostBackEventHandler . Il .NET Framework determina se esiste un adattatore e se l'adattatore implementa queste interfacce. In caso affermativo, l'adattatore deve eseguire l'override dei LoadPostDatametodi , RaisePostDataChangedEvente RaisePostBackEvent in base alle esigenze. Se i dati di postback non sono riconosciuti nell'adattatore, è necessario richiamarlo sul controllo per elaborarlo. I gestori eventi successivi devono anche eseguire il callback sul controllo .
Note per gli implementatori
Quando si eredita dalla ControlAdapter classe , un controllo che richiede funzionalità generali dell'adattatore deve avere una classe di base dell'adattatore corrispondente, denominata nel modello ControlType
Adapter
( ad esempio , TextBoxAdapter
). L'adattatore deve restituire almeno un'istanza fortemente tipizzata del controllo tramite la relativa Control proprietà .
- Gli adattatori di controllo per un determinato tipo di controllo e un linguaggio di markup devono essere denominati nel modello
MarkupControlType
Adapter
(ad esempio,XhtmlTextBoxAdapter
). Gli adattatori per un controllo devono essere implementati in unoAdapters
spazio dei nomi secondari.
Gli adattatori di controllo devono ereditare dalla classe di base appropriata e seguire lo stesso modello di ereditarietà del controllo. Ad esempio, un adattatore per un controllo che eredita dalla Control classe base deve ereditare dalla ControlAdapter classe o dalla classe pertinente ControlType
Adapter
.
Qualsiasi adattatore specializzato deve essere definito per il controllo specializzato in tutti i nodi del dispositivo nei file del browser di configurazione.
Un controllo implementato correttamente non deve presupporre che un adattatore sia collegato o che l'adattatore collegato implementi un'interfaccia specifica. Prima di chiamare, deve invece verificarne la presenza.
È possibile simulare l'override dei metodi di evento protetti nel controllo, ad esempio il OnClick(EventArgs) metodo di LinkButton. Creare prima di tutto una classe adapter con un metodo OnClick
. Creare quindi un nuovo controllo derivato da LinkButton ed eseguire l'override del OnClick(EventArgs) metodo . Il metodo sottoposto a OnClick(EventArgs) override chiama il metodo OnClick
dell'adapter. L'oggetto adapter è disponibile tramite la proprietà protetta Adapter della Control classe . La Adapter proprietà del controllo è null
quando non è presente alcuna scheda associata, pertanto qualsiasi codice deve verificare la presenza di tale condizione prima di chiamare i metodi dell'adapter.
Costruttori
ControlAdapter() |
Inizializza una nuova istanza della classe ControlAdapter. |
Proprietà
Browser |
Ottiene un riferimento alle funzionalità del browser del client che effettua la richiesta HTTP corrente. |
Control |
Ottiene un riferimento al controllo a cui è collegato questo adattatore di controllo. |
Page |
Ottiene un riferimento alla pagina in cui si trova il controllo associato a questo adattatore. |
PageAdapter |
Ottiene un riferimento all'adattatore di pagina per la pagina in cui si trova il controllo associato. |
Metodi
BeginRender(HtmlTextWriter) |
Questo metodo viene chiamato prima di effettuare il rendering di un controllo. In una classe di adattatore derivata, genera i tag di apertura richiesti da una destinazione specifica ma non necessari per i browser HTML. |
CreateChildControls() |
Crea i controlli figlio specifici della destinazione per un controllo composito. |
EndRender(HtmlTextWriter) |
Questo metodo viene chiamato dopo il rendering di un controllo. In una classe di adattatore derivata, genera i tag di chiusura richiesti da una destinazione specifica ma non necessari per i browser HTML. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
LoadAdapterControlState(Object) |
Carica le informazioni sullo stato di controllo dell'adattatore salvate dal metodo SaveAdapterControlState() durante una precedente richiesta alla pagina in cui si trova il controllo associato a questo adattatore di controllo. |
LoadAdapterViewState(Object) |
Carica le informazioni sullo stato di visualizzazione dell'adattatore salvate dal metodo SaveAdapterViewState() durante una precedente richiesta alla pagina in cui si trova il controllo associato a questo adattatore di controllo. |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
OnInit(EventArgs) |
Esegue l'override del metodo OnInit(EventArgs) per il controllo associato. |
OnLoad(EventArgs) |
Esegue l'override del metodo OnLoad(EventArgs) per il controllo associato. |
OnPreRender(EventArgs) |
Esegue l'override del metodo OnPreRender(EventArgs) per il controllo associato. |
OnUnload(EventArgs) |
Esegue l'override del metodo OnUnload(EventArgs) per il controllo associato. |
Render(HtmlTextWriter) |
Genera il markup specifico della destinazione per il controllo a cui è associato l'adattatore del controllo. |
RenderChildren(HtmlTextWriter) |
Genera il markup specifico della destinazione per i controlli figlio in un controllo composito al quale è collegato l'adattatore del controllo. |
SaveAdapterControlState() |
Salva le informazioni sullo stato del controllo per l'adattatore del controllo. |
SaveAdapterViewState() |
Salva le informazioni sullo stato di visualizzazione per l'adattatore del controllo. |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |