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 a cui è collegato l'adattatore, per modificare il markup o il comportamento predefinito per browser specifici ed è la classe base da cui ereditano tutti gli adattatori di controllo.
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. .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 superfluo 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 necessario.
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 ha 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, .NET Framework intercetta le chiamate ai metodi sostituibili di un controllo che potrebbe essere specifico della destinazione. Se un adattatore di controllo è collegato, .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 è necessario 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 .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, l'uso BeginRender di e EndRender potrebbe rendere superfluo 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 , LoadAdapterControlStateSaveAdapterViewState, e 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 , OnLoadOnPreRender, e OnUnload richiamano i metodi di classe corrispondentiControl. Pertanto, uno di questi ControlAdapter metodi sottoposti a override deve chiamare i relativi metodi di base. In caso contrario, l'evento associato al metodo di Control classe non verrà generato.
I controlli e gli adattatori implementano facoltativamente le IPostBackDataHandler interfacce e IPostBackEventHandler . .NET Framework determina se esiste un adattatore e se l'adattatore implementa queste interfacce. In caso affermativo, l'adapter deve eseguire l'override dei LoadPostDatametodi , RaisePostDataChangedEvente RaisePostBackEvent in base alle esigenze. Se i dati di postback non sono riconosciuti nell'adattatore, è necessario richiamare il controllo per elaborarli. Anche i gestori eventi successivi devono richiamare sul controllo .
Note per gli implementatori
Quando si eredita dalla ControlAdapter classe , un controllo che richiede la funzionalità dell'adattatore generale deve avere una classe di base dell'adattatore corrispondente, denominata nel modello ControlTypeAdapter , 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 linguaggio di markup devono essere denominati nel modello
MarkupControlTypeAdapter, ad esempioXhtmlTextBoxAdapter. Gli adattatori per un controllo devono essere implementati in unAdapterssubnamespace.
Gli adattatori di controllo devono ereditare dalla classe 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 ControlTypeAdapter .
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 dell'oggetto LinkButton. Creare prima di tutto una classe adapter con un OnClick metodo . 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 OnClick metodo 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'adattatore.
Costruttori
| Nome | Descrizione |
|---|---|
| ControlAdapter() |
Inizializza una nuova istanza della classe ControlAdapter. |
Proprietà
| Nome | Descrizione |
|---|---|
| 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 l'adattatore di controllo. |
| Page |
Ottiene un riferimento alla pagina in cui risiede il controllo associato all'adattatore. |
| PageAdapter |
Ottiene un riferimento all'adattatore di pagina per la pagina in cui risiede il controllo associato. |
Metodi
| Nome | Descrizione |
|---|---|
| BeginRender(HtmlTextWriter) |
Chiamato prima del rendering di un controllo. In una classe adapter derivata genera 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) |
Chiamato dopo il rendering di un controllo. In una classe adapter derivata genera 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 il Type dell'istanza corrente. (Ereditato da Object) |
| LoadAdapterControlState(Object) |
Carica le informazioni sullo stato del controllo adattatore salvate da SaveAdapterControlState() durante una richiesta precedente alla pagina in cui risiede il controllo associato a questo adattatore di controllo. |
| LoadAdapterViewState(Object) |
Carica le informazioni sullo stato di visualizzazione dell'adattatore salvate da SaveAdapterViewState() durante una richiesta precedente alla pagina in cui risiede il controllo associato a questo adattatore di controllo. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| OnInit(EventArgs) |
Esegue l'override del OnInit(EventArgs) metodo per il controllo associato. |
| OnLoad(EventArgs) |
Esegue l'override del OnLoad(EventArgs) metodo per il controllo associato. |
| OnPreRender(EventArgs) |
Esegue l'override del OnPreRender(EventArgs) metodo per il controllo associato. |
| OnUnload(EventArgs) |
Esegue l'override del OnUnload(EventArgs) metodo per il controllo associato. |
| Render(HtmlTextWriter) |
Genera il markup specifico della destinazione per il controllo a cui è collegato l'adattatore di controllo. |
| RenderChildren(HtmlTextWriter) |
Genera il markup specifico della destinazione per i controlli figlio in un controllo composito a cui è collegato l'adattatore di controllo. |
| SaveAdapterControlState() |
Salva le informazioni sullo stato del controllo per l'adattatore di controllo. |
| SaveAdapterViewState() |
Salva le informazioni sullo stato di visualizzazione per l'adattatore di controllo. |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |