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.
System.Web.UI.Adapters.ControlAdapter
System.Web.UI.Adapters.PageAdapter
System.Web.UI.WebControls.Adapters.WebControlAdapter
Spazio dei nomi: System.Web.UI.Adapters
Assembly: System.Web (in System.Web.dll)
Public MustInherit Class ControlAdapter
public abstract class ControlAdapter
public ref class ControlAdapter abstract
[<AbstractClass>] type ControlAdapter = class end
Il tipo ControlAdapter espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
ControlAdapter | Infrastruttura. Inizializza una nuova istanza della classe ControlAdapter. |
| 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 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. |
| Nome | Descrizione | |
|---|---|---|
|
BeginRender | 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 | 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 Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object) |
|
Finalize | Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object) |
|
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) |
|
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
|
LoadAdapterControlState | 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 | 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 | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) |
|
OnInit | Esegue l'override del metodo OnInit per il controllo associato. |
|
OnLoad | Esegue l'override del metodo OnLoad per il controllo associato. |
|
OnPreRender | Esegue l'override del metodo OnPreRender per il controllo associato. |
|
OnUnload | Esegue l'override del metodo OnUnload per il controllo associato. |
|
Render | Genera il markup specifico della destinazione per il controllo a cui è associato l'adattatore di controllo. |
|
RenderChildren | 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) |
Gli adattatori dei controlli sono componenti che eseguono l'override di alcuni metodi ed eventi della classe Control nella durata di esecuzione per consentire la gestione specifica del markup o del browser. .NET Framework esegue il mapping di un unico adattatore dei controlli derivato su un oggetto Control per ogni richiesta del client.
Un adattatore consente di modificare un controllo per un browser o una classe di browser specifica oppure funge da filtro arbitrario su alcune funzionalità. In genere l'adattatore è definito dal linguaggio markup utilizzato dal browser, ad esempio XHTML o HTML 3.2. È possibile incapsulare gran parte delle potenzialità di adattabilità del comportamento di rendering nelle classi specializzate che derivano dalla classe HtmlTextWriter. È pertanto probabile che un singolo adattatore possa essere utilizzato per diversi comportamenti della classe del browser o che mediante l'inclusione dell'adattabilità nelle classi HtmlTextWriter non sia necessario utilizzare un adattatore dei controlli.
Un adattatore per una classe di controlli viene applicato a tutti i controlli che ereditano da tale classe, a meno che non siano presenti adattatori più specializzati. Un adattatore per la classe BaseValidator ad esempio può essere utilizzato per tutti gli oggetti Validator.
In genere, gli adattatori non ereditano direttamente dalla classe ControlAdapter, ma da una delle classi base dell'adattatore specifiche della destinazione che forniscono funzionalità aggiuntive specifiche al tipo di controllo e browser di destinazione o al particolare rendering necessario.
I controlli stessi non richiedono necessariamente un adattatore. Se i controlli vengono estesi attraverso la composizione, di solito sono sufficienti gli adattatori dei controlli figlio.
Ogni controllo dispone di mapping espliciti agli adattatori tramite i file di definizione browser. Qualsiasi accesso alla proprietà Control.Adapter utilizza pertanto l'oggetto HttpBrowserCapabilities estratto dai file di definizione browser per eseguire la ricerca del mapping dell'adattatore al controllo.
Durante l'elaborazione, in .NET Framework vengono intercettate le chiamate ai metodi che è possibile sottoporre a override di un controllo che può essere specifico della destinazione. Se è associato un adattatore di controllo, in .NET Framework vengono chiamati i metodi dell'adattatore associato.
L'adattatore esegue il rendering per il controllo attraverso il metodo Render. Se sottoposto a override, il metodo Render potenzialmente non deve chiamare l'implementazione della classe base poiché in questo modo viene richiamato il metodo Control.Render. In questo modo il rendering potrebbe avvenire due volte, una volta tramite l'adattatore e una volta tramite il controllo.
Il metodo base Render richiama il metodo Control.Render del controllo. Pertanto, se si esegue l'override del metodo Render, è opportuno non chiamare l'implementazione della classe base a meno che il rendering da implementare non sia in aggiunta a quello fornito dal metodo Control.Render del controllo.
È necessario accertarsi che .NET Framework esegua l'intercettazione per gli adattatori dei controlli figlio. È possibile eseguire questa operazione chiamando il metodo base RenderChildren, che chiama il metodo Control.RenderChildren del controllo, dall'override di Render.
I metodi BeginRender e EndRender vengono chiamati dal controllo immediatamente prima e dopo, rispettivamente, che il controllo chiami il metodo Render. Se le uniche attività di elaborazione specifiche del browser richieste sono quelle prima e dopo il rendering, l'utilizzo di BeginRender e EndRender potrebbe rendere inutile l'override del metodo Render. Il comportamento predefinito dei metodi BeginRender e EndRender consiste nel chiamare i metodi corrispondenti di HtmlTextWriter.
Per mantenere le proprie informazioni sullo stato, un adattatore di controllo può eseguire l'override dei metodi SaveAdapterControlState, LoadAdapterControlState, SaveAdapterViewState e LoadAdapterViewState. I metodi SaveAdapterControlState, SaveAdapterViewState, LoadAdapterControlState e LoadAdapterViewState vengono chiamati quando il controllo privato e gli stati di visualizzazione vengono rispettivamente salvati e caricati.
I metodi base OnInit, OnLoad, OnPreRender e OnUnload richiamano i metodi corrispondenti della classe Control. Ognuno di questi metodi ControlAdapter sottoposti a override, pertanto, devono chiamare i propri metodi base; in caso contrario, l'evento associato al metodo della classe Control non verrà generato.
I controlli e gli adattatori implementano facoltativamente le interfacce IPostBackDataHandler e IPostBackEventHandler. In .NET Framework viene determinato se un adattatore esiste e se implementa queste interfacce. In caso positivo, l'adattatore deve eseguire l'override dei metodi LoadPostData, RaisePostDataChangedEvent e RaisePostBackEvent, secondo le esigenze. Se i dati di postback non vengono riconosciuti nell'adattatore, è necessario richiamare il controllo per elaborarli. Anche i gestori eventi successivi devono richiamare il controllo.
Note per gli eredi
Quando si eredita dalla classe ControlAdapter, un controllo che richiede funzionalità di adattatore generale deve avere una classe base adapter corrispondente, denominata nel modello ControlTypeAdapter, ad esempio TextBoxAdapter. L'adattatore deve restituire almeno un'istanza fortemente tipizzata del controllo tramite la proprietà Control.
-
Agli adattatori di controllo per un determinato tipo di controllo e linguaggio di markup deve essere attribuito un nome nello schema MarkupControlTypeAdapter, ad esempio XhtmlTextBoxAdapter. Gli adattatori per un controllo devono essere implementati in un sottospazio dei nomi Adapters.
Gli adattatori di controllo devono ereditare dalla classe base appropriata e seguire lo stesso modello di ereditarietà del controllo. Un adattatore per un controllo che eredita dalla classe base Control, ad esempio, deve ereditare dalla classe ControlAdapter o dalla classe ControlTypeAdapter corrispondente.
Tutti gli adattatori specializzati devono essere definiti per il controllo specializzato in tutti i nodi del dispositivo nei file browser di configurazione.
Per l'implementazione corretta di un controllo non si deve supporre il collegamento di un adattatore o che l'adattatore collegato implementi un'interfaccia specifica. Al contrario, è necessario verificare tali condizioni prima della chiamata.
È possibile simulare l'override di metodi di eventi protetti nel controllo, ad esempio del metodo OnClick dell'oggetto LinkButton. In primo luogo creare una classe adattatore con un metodo OnClick. Creare, quindi, un nuovo controllo derivato da LinkButton ed eseguire l'override del metodo OnClick. Il metodo OnClick sottoposto a override chiama il metodo OnClick dell'adattatore. L'oggetto adattatore è disponibile tramite la proprietà Adapter protetta della classe Control. La proprietà Adapter del controllo è null quando non è vi associato alcun adattatore, quindi il codice deve verificare tale condizione prima di chiamare i metodi dell'adattatore.
.NET Framework
Supportato in: 4, 3.5, 3.0, 2.0Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.