Cenni preliminari sui modelli di campo di ASP.NET Dynamic Data
Aggiornamento: novembre 2007
I modelli di campo di ASP.NET Dynamic Data rappresentano controlli utente ASP.NET che eseguono il mapping dei controlli dati ai tipi di dati in un modello di dati. I modelli di campo derivano da FieldTemplateUserControl, classe che consente l'accesso ai campi dati, alle colonne di dati e ai metadati nei modelli di dati. Per impostazione predefinita, i progetti di Dynamic Data forniscono alcuni modelli di campo predefiniti, ma è possibile modificarli o creare modelli di campo personalizzati. In questo argomento relativo ai cenni preliminari viene illustrato quanto segue:
Funzionalità.
Informazioni di supporto.
Modelli di campo predefiniti.
Utilizzo dei modelli di campo.
Modalità di rendering dei modelli di campo.
Funzionalità
In Dynamic Data vengono utilizzati modelli di campo per eseguire il rendering di singoli campi dati in un modello di dati.
Dynamic Data consente di:
Modificare i modelli di campo predefiniti.
Creare modelli di campo personalizzati.
Informazioni di supporto
Dynamic Data supporta le applicazioni Web basate sui dati. Rispetto all'accesso ai dati con i controlli origine dati di ASP.NET e con controlli dati esistenti, quali i controlli GridView e ListView, Dynamic Data può richiedere una quantità notevolmente inferiore di codice. Ad esempio, la tabella Products nel database Northwind dispone di chiavi esterne nelle tabelle Categories e Suppliers. La visualizzazione di una relazione come questa mediante il controllo GridView o ListView richiede la comprensione dello schema del database e la configurazione manuale dei controlli nonché, eventualmente, la scrittura di codice.
Tuttavia, leggendo lo schema del database, Dynamic Data può ottenere informazioni su tipi di dati e sulle chiavi esterne. Dynamic Data fornisce controlli dati ASP.NET in grado di riconoscere lo schema del database e configurati per semplificare l'accesso ai dati e la relativa modifica. Per sostituire il rendering predefinito dei controlli GridView e DetailsView, è necessario fornire manualmente il codice per il rendering in ogni pagina. I modelli di campo forniscono un modo più semplice per modificare il rendering predefinito dei controlli GridView e DetailsView a livello globale.
I modelli di campo vengono utilizzati nei controlli Dynamic Data per visualizzare singoli campi dati. Dynamic Data utilizza modelli di campo predefiniti per creare il rendering predefinito per la visualizzazione e la modifica dei dati. È possibile personalizzare i modelli di campo predefiniti o crearne di nuovi.
Ad esempio, utilizzando i modelli di campo con la tabella Products nel database Northwind, è possibile visualizzare il nome di categoria anziché l'ID di categoria, fornire un elenco a discesa in modalità di modifica e collegarsi ad altre pagine, ad esempio alle pagine di dettagli in cui vengono mostrati dati correlati.
Per informazioni sulla creazione di controlli dati complessi in grado di riconoscere lo schema del database, vedere Aggiunta di un comportamento dinamico ai controlli ASP.NET con associazione a dati.
Controlli Dynamic Data che utilizzano modelli di campo
I controlli Dynamic Data che utilizzano modelli di campo per eseguire il rendering automatico dei dati in base al tipo di dati includono:
DynamicControl - Utilizzato in FormView, ListView e in controlli quali GridView e DetailsView che supportano l'utilizzo di modelli per visualizzare e modificare i dati nel modello di dati. Questo controllo consente anche l'utilizzo di modelli nelle colonne di dati. Per ulteriori informazioni, vedere la classe Procedura: utilizzare ASP.NET Dynamic Data nei controlli con associazione a dati e basati su modelli.
ForeignKey.ascx – Modello di campo predefinito utilizzato per la visualizzazione delle colonne di chiave esterna. L'oggetto href può essere esposto ed è accessibile tramite gli oggetti DynamicField e DynamicControl.
Children.ascx – Modello di campo predefinito utilizzato per la visualizzazione delle colonne di chiave esterna. Le proprietà href e AllowNavigation possono essere impostate tramite DynamicField e DynamicControl.
DynamicField - Anche se DynamicField è DataControlField, viene menzionato in questo contesto poiché viene utilizzato nei controlli dati GridView e DetailsView per visualizzare, modificare e aggiungere la logica di convalida al modello di dati. Per ulteriori informazioni, vedere la classe Procedura: aggiungere un comportamento Dynamic Data a controlli con associazione a dati mediante l'utilizzo di un campo DynamicField.
Modelli di campo predefiniti
I modelli di campo predefiniti rappresentano modelli di campo incorporati in un'applicazione Web Dynamic Data. Tra gli esempi di questi modelli di campo predefiniti sono inclusi:
ForeignKey.ascx - Visualizza i campi con una relazione molti-a-uno.
ForeignKey_Edit.ascx - Utilizzato per modificare i campi con una relazione molti-a-uno.
DateTime.ascx - Visualizza il tipo di dati DateTime come testo.
Dynamic Data fornisce modelli di campo predefiniti che eseguono il rendering di tipi di dati quali Boolean, Decimal, Integer e testo.
Per ulteriori informazioni sui modelli di campo predefiniti, vedere Modelli di campo predefiniti di ASP.NET Dynamic Data.
Utilizzo dei modelli di campo
Per implementare un modello di campo, è necessario ottenere valori dal database e visualizzarli, recuperare tali valori mediante il metodo IBindableControl.ExtractValues e fornire accesso al controllo DataControl.
Dynamic Data consente di personalizzare i modelli di campo predefiniti o di creare nuovi modelli di campo. Se si personalizza un modello di campo predefinito, Dynamic Data utilizza tale modello personalizzato.
Personalizzazione della modalità di visualizzazione dei dati nei modelli di campo predefiniti
I modelli di campo predefiniti rappresentano controlli utente ASP.NET di cui viene eseguito il mapping ai tipi di dati in un modello di dati. Questi controlli sono derivati dalla classe FieldTemplateUserControl, che consente l'accesso ai campi dati, alle colonne di database e ai metadati.
È possibile modificare i modelli di campo predefiniti per modificare la modalità con cui i controlli dati eseguono il rendering dei dati. Ad esempio, è possibile modificare i colori di sfondo e di primo piano del testo visualizzato in un controllo dati che utilizza i modelli di campo predefiniti. Per ulteriori informazioni, vedere la classe Procedura: personalizzare i modelli di campo predefiniti di ASP.NET Dynamic Data.
Creazione di modelli di campo personalizzati
È anche possibile creare modelli di campo personalizzati. A tale scopo, si crea un controllo utente ASP.NET che deriva dalla classe FieldTemplateUserControl. Si aggiunge una proprietà UIHint che esegue il mapping del campo dati al nuovo controllo creato in modo che venga utilizzato al posto del modello di campo predefinito.
Per informazioni sulla creazione di un modello di campo personalizzato, vedere Procedura: personalizzare la visualizzazione dei campi dati nel modello di dati. Per informazioni sull'utilizzo della proprietà UIHint, vedere Procedura: personalizzare l'aspetto e il comportamento dei campi dati di un controllo Dynamic Data.
Modalità di rendering dei modelli di campo
Dynamic Data esegue il rendering dei modelli di campo predefiniti e personalizzati in modalità di visualizzazione, di modifica e di inserimento. Utilizza, inoltre, regole di ricerca per determinare il modello di campo di cui eseguire il rendering. La regola di ricerca utilizzata da Dynamic Data varia a seconda che il controllo sia in modalità di visualizzazione, di modifica o di inserimento. Ad esempio, se i dati nella colonna rappresentano un valore Boolean e il controllo dati è in modalità di visualizzazione, Dynamic Data esegue il rendering di Boolean.ascx, modello di campo predefinito che visualizza tipi di dati Boolean. Tuttavia, se il controllo dati è in modalità di modifica, Dynamic Data esegue il rendering di Boolean_Edit.ascx, modello di campo che consente la modifica dei tipi di dati Boolean. Se il controllo dati è in modalità di inserimento, Dynamic Data esegue il rendering di Boolean_Insert.ascx, modello di campo che consente agli utenti di inserire tipi di dati Boolean.
Se a un campo dati nel modello di dati è associato un attributo UIHint, ovvero se è specificato un modello di campo personalizzato, Dynamic Data cerca un controllo in base al nome UIHint. Ad esempio, se l'attributo UIHint specifica MyTemplate, Dynamic Data cerca il modello di campo denominato MyTemplate.ascx o MyTemplate_Edit.ascx se il controllo è in modalità di modifica oppure MyTemplate_Insert.ascx se il controllo è in modalità di inserimento. Se non viene trovato nessuno di tali controlli, Dynamic Data utilizza i modelli di campo predefiniti.
Regole di ricerca
Dynamic Data avvia la ricerca determinando la modalità dei modelli di campo. Per ogni modalità, Dynamic Data applica un insieme di regole di ricerca.
Ricerca della modalità di visualizzazione
Di seguito vengono elencate le regole di ricerca utilizzate da Dynamic Data per eseguire il rendering dei modelli di campo in modalità di visualizzazione:
Se esistono metadati UIHint (ovvero, un modello di campo personalizzato), Dynamic Data cerca un controllo in base al nome del controllo utente e all'oggetto DataTypeAttribute definito nelle proprietà UIHint e DataTypeAttribute. Per impostazione predefinita, Dynamic Data non visualizza tutti i tipi di dati. Ad esempio, per impostazione predefinita non viene eseguito il rendering dei tipi di dati Byte[] quali i tipi binary, timestamp e image. Per ulteriori informazioni sui tipi di dati visualizzati da Dynamic Data per impostazione predefinita, vedere Modelli di campo predefiniti di ASP.NET Dynamic Data. Per informazioni sulla visualizzazione di tipi di dati personalizzati, vedere DataTypeAttribute.
Dynamic Data determina il tipo di dati della colonna del database e cerca un controllo in base a tale tipo di dati. Il nome del tipo di dati viene determinato e utilizzato nell'ordine seguente:
Viene ricercato il nome completo del tipo di dati, ad esempio System.Int32.
Se il nome completo non viene trovato, Dynamic Data cerca il nome semplice del tipo di dati, ad esempio int32.
Se anche tale nome non viene trovato, Dynamic Data cerca i casi speciali definiti nella tabella dati. Ad esempio, se un tipo di dati semplice quale Int32 non viene trovato, Dynamic Data cerca Integer, caso speciale definito nella tabella dati. Se non viene trovato il tipo di dati semplice String, Dynamic Data cerca Text, caso speciale di String.
Se un caso speciale non viene trovato ed esiste un tipo di dati di fallback, Dynamic Data cerca il tipo di dati di fallback e utilizza questo tipo di dati per eseguire la ricerca dall'inizio.
Se non esiste un tipo di dati di fallback, Dynamic Data non visualizza alcun dato.
Se il campo rappresenta un campo di chiave esterna, Dynamic Data esegue il rendering di ForeignKey.ascx**,** modello di campo predefinito utilizzato per una relazione molti-a-uno, o di Children.ascx**,** modello di campo predefinito utilizzato per una relazione uno-a-molti.
Se non viene trovato alcun controllo dei modelli di campo, in Dynamic Data viene visualizzato un messaggio di errore che indica che non è stato trovato alcun modello di campo e non viene visualizzato alcun dato.
Ricerca della modalità di modifica
Le regole di ricerca della modalità di modifica sono identiche a quelle della modalità di visualizzazione, con l'eccezione riportata di seguito. Se il modello di campo è in modalità di modifica, Dynamic Data cerca un modello di campo "_Edit" (ad esempio, MyTemplate_Edit) e applica le regole; in caso contrario, utilizza la modalità di visualizzazione (di sola lettura) come impostazione predefinita.
Ricerca della modalità di inserimento
Le regole di ricerca della modalità di modifica sono identiche a quelle della modalità di visualizzazione, con l'eccezione riportata di seguito. Se il modello di campo è in modalità di inserimento, Dynamic Data cerca un modello di campo _Insert (ad esempio, MyTemplate_Insert) e applica le regole; in caso contrario, cerca un modello di campo _Edit.
Nota: |
---|
Per impostazione predefinita, non vengono forniti controlli utente "_Insert.ascx". |
Tipo di dati di fallback |
Tipo di dati |
---|---|
Decimale |
Float e Double. |
Int |
Int16, byte e Long. |
Stringa |
Char, Int, Decimal, GUID, DateTime, DateTimeOffset e TimeSpan. |
Riferimento alle classi
Classe |
Descrizione |
---|---|
Classe base per tutti i controlli FieldTemplateUser. |
Ulteriori argomenti
Aggiunta di un comportamento dinamico ai controlli ASP.NET con associazione a dati