Implementazione del rendering basato su modelli
I controlli mobili ASP. NET che supportano il rendering basato su modelli supportano anche il rendering personalizzato. Le decisioni da prendere su come utilizzare i modelli per creare un rendering variano a seconda del dispositivo di destinazione. In ASP .NET è disponibile una sequenza standard di operazioni che consentono di personalizzare il rendering basato su modelli in funzione di uno specifico dispositivo. I controlli mobili che supportano il rendering basato su modelli devono utilizzare la seguente sequenza:
Mediante la proprietà IsTemplated il controllo determina se i modelli di dispositivo sono stati definiti e selezionati. Per tale operazione utilizzare il metodo OnInit o CreateChildControls.
Se i modelli sono stati definiti, il controllo chiama il metodo CreateTemplatedUI, che il controllo eredita dalla classe base MobileControl.
Nota Non chiamare CreateTemplatedUI se il controllo non è basato su modelli.
CreateTemplatedUI chiama il metodo CreateTemplatedUI dell'adattatore del controllo. È possibile codificare gli adattatori di dispositivo che eseguono l'override di tale metodo per implementare il rendering basato su modelli specifico del dispositivo.
L'implementazione predefinita del metodo CreateTemplatedUI dell'adattatore del controllo, definita nella classe base dell'adattatore del controllo, a propria volta chiama il metodo CreateDefaultTemplatedUI del controllo. È possibile codificare i controlli che eseguono l'override di tale metodo per implementare il rendering generico basato su modelli.
Nel metodo Render dell'adattatore, il controllo esegue il rendering dei modelli mediante il rendering dell'elemento figlio del controllo, in cui vengono create le istanze dei modelli.
Inoltre, i controlli mobili devono sempre creare le istanze dei nuovi modelli in un tipo di controllo contenitore derivato da System.Web.UI.MobileControls.TemplateContainer. Si tratta di una regola più restrittiva rispetto a quella per i controlli server ASP. NET, per i quali è sufficiente che il controllo implementi l'interfaccia di segnalazione INamingContainer. Nell'esempio riportato di seguito viene mostrato come creare un'istanza di un modello in un controllo mobile.
[C#]
void CreateChildTemplate(ITemplate template)
{
TemplateContainer container = new TemplateContainer();
template.InstantiateIn(container);
container.DataBind();
Controls.Add(container);
}
Eventi ItemCommand
Con il rendering basato su modelli, il gestore eventi ItemCommand viene chiamato mediante il meccanismo di bubbling degli eventi di ASP. NET. Al gestore eventi viene passato un parametro, che fa riferimento all'elemento di origine e alla proprietà CommandName del controllo che ha generato l'evento. In questo modo è possibile eseguire il rendering di un singolo elemento dell'elenco con più interazioni associate.
Per il rendering predefinito, il controllo rende disponibile un'interfaccia utente semplice tramite la quale è possibile selezionare un elenco di elementi. Durante il postback, il controllo chiama il gestore ItemCommand con un argomento che fa riferimento all'elemento di origine. La proprietà CommandName restituisce un riferimento null (in Visual Basic Nothing).
Vedere anche
Sviluppo di un controllo basato su template | Insieme di modelli e controlli basati su modelli