Infrastruttura ASP.NET Dynamic Data
Aggiornamento: novembre 2007
In questo argomento viene descritto il layout di un sito Web di ASP.NET Dynamic Data e vengono fornite informazioni sulle cartelle e i file creati per impostazione predefinita.
È possibile creare siti Web ASP.NET Dynamic Data in Visual Studio 2008 utilizzando il modello di sito Web Dynamic Data. Questo modello genera i controlli utente, i modelli di pagina e file Web ASP.NET utilizzati da Dynamic Data per creare l’interfaccia utente per l'elaborazione di dati.
Classe di contesto dati
Un’applicazione Web Dynamic Data necessita di un oggetto MetaModel e di un contesto dati registrato. Il contesto dati può essere una classe LINQ to SQL (un'istanza della classe System.Data.Linq.DataContext) oppure una classe ADO.NET Entity Framework. La classe del contesto dati deve trovarsi nella cartella App_Code nella directory principale dell'applicazione. Per ulteriori informazioni, vedere la classe Cenni preliminari sul modello di ASP.NET Dynamic Data.
Cartelle e file
La tabella seguente descrive i file e le cartelle creati al livello principale in un sito Web di ASP.NET Dynamic Data.
File o cartella |
Descrizione |
---|---|
Dynamic Data |
Contiene le cartelle per i controlli personalizzati e per le pagine di visualizzazione dei dati. Per ulteriori informazioni sulle sottocartelle della cartella Dynamic Data, vedere Struttura della cartella DynamicData più avanti in questo argomento. |
Default.aspx |
Una pagina ASP.NET che presenta le tabelle e le visualizzazioni registrate nell'istanza di MetaModel. Per ogni nome di tabella viene eseguito il rendering come controllo HyperLink che visualizza il contenuto della tabella selezionata. |
Global.asax |
Contiene un metodo per registrare un’istanza della classe MetaModel e per aggiungere route all’oggetto RouteCollection. Per ulteriori informazioni, vedere Configurazione del sito Web più avanti in questo argomento. |
Site.css |
Un foglio di stile CSS utilizzato dai modelli di pagina e dai controlli Dynamic Data. |
Site.master |
La pagina master del sito. La pagina Default.aspx e i modelli di pagina Dynamic Data utilizzano la pagina master. |
Web.config |
Il file di configurazione del sito. Per ulteriori informazioni, vedere Configurazione del sito Web più avanti in questo argomento. |
Configurazione del sito Web
Per impostazione predefinita, un sito Web Dynamic Data include i file tipici dei siti Web ASP.NET. Comunque, i file contengono codice o dati specifici di Dynamic Data. Questa sezione fornisce informazioni in merito ai file utilizzati da Dynamic Data.
File Global.asax
In un Sito Web Dynamic Data, il file Global.asax contiene un gestore per l'evento Application_Start generato quando l'applicazione Web si avvia. All’interno del gestore viene chiamato il metodo RegisterRoutes. Il metodo RegisterRoutes contiene un’istanza dell’oggetto MetaModel e una chiamata al metodo RegisterContext impostata come commento. Per abilitare le funzioni di Dynamic Data, è necessario attivare il metodo RegisterContext passando un contesto dati valido come argomento, come ad esempio un’istanza di DataContext o un contesto ADO.NET Entity Framework.
Per impostazione predefinita, in un Sito Web Dynamic Data il file Global.asax chiama il metodo Add(Type) per aggiungere il routing per le pagine List.aspx, Details.aspx, Edit.aspx e Insert.aspx per ciascuna azione.
Modello di pagina ListDetails.aspx
Un modello di pagina è un file .aspx che include i controlli utilizzati da Dynamic Data per creare l’interfaccia utente per la visualizzazione e la modifica di dati. Le route definite nel file Global.asax determinano quali modelli di pagina sono utilizzati da Dynamic Data per eseguire operazioni di creazione di un elenco, visualizzazione dei dettagli, modifica e inserimento. Per ulteriori informazioni, vedere la classe Cenni preliminari sulle pagine di supporto temporaneo e sui modelli di pagina di ASP.NET Dynamic Data.
È possibile modificare il routing sui modelli di pagina aggiungendo e rimuovendo definizioni di route nel file Global.asax. Nel file Global.asax sono incluse route alternative predefinite, impostate come commenti. Per ulteriori informazioni, vedere i commenti presenti nel file Global.asax.
Per rendere visualizzabili tutte le tabelle mediante Dynamic Data, è necessario impostare la proprietà ScaffoldAllTables dell'oggetto ContextConfiguration su true. In alternativa, è possibile impostare l'attributo ScaffoldTableAttribute su true nella classe parziale che rappresenta la tabella da visualizzare. L'attributo ScaffoldTableAttribute permette di visualizzare in modo selettivo le tabelle tramite Dynamic Data.
File Site.master
Il file Site.master costituisce la pagina master del sito Web Dynamic Data. È utilizzato da tutti i modelli di pagina Dynamic Data. Il file Site.master contiene un controllo System.Web.UI.ScriptManager la cui proprietà EnablePartialRendering è impostata su true. Per ulteriori informazioni, vedere la classe Informazioni generali sulle pagine master ASP.NET.
- Nota Quando la proprietà EnablePartialRendering è impostata a true, le eccezioni generate dal server del database producono un errore di runtime nel browser. Ad esempio, se si tenta di aggiornare una riga caratterizzata da un vincolo su una colonna definita nel database e i dati dell'aggiornamento violano tale vincolo, il browser visualizzerà un errore di runtime. Quando la proprietà EnablePartialRendering è impostata su false, il browser non visualizza un messaggio dettagliato sull'eccezione generata. Al contrario, il browser visualizzerà un errore HTTP 500 che indica che si è verificato un problema durante l'elaborazione del server. Per ulteriori informazioni, vedere la classe Aggiunta di funzionalità AJAX e client.
File Web.config
Il modello Sito Web Dynamic Data Visual Studio genera un file Web.config contenente gli elementi specifici di Dynamic Data oltre a quelli utilizzati da tutti i siti Web ASP.NET. Nella sezione assemblies, vengono aggiunte le DLL seguenti:
System.Web.Abstractions
System.Web.Routing
System.ComponentModel.DataAnnotations
System.Web.DynamicData
System.Data.Linq
Per lo spazio dei nomi e per l’assembly System.Web.DynamicData viene registrato il prefisso di tag "asp:".
I seguenti controlli derivati dall'assembly System.Web.DynamicData sono utilizzati dai controlli contenuti nella cartella FieldTemplates.
Il modulo di routing degli URL UrlRoutingModule è aggiunto all’elemento httpModules e alla sezione system.webServer.
Struttura della cartella DynamicData
La tabella seguente descrive le sottocartelle della cartella DynamicData.
File o cartella |
Descrizione |
---|---|
Contenuto |
Per impostazione predefinita, contiene la cartella Images e due controlli (GridViewPager.ascx e FilterUserControl.ascx). La cartella Immagini contiene file grafici utilizzati come icone per il controllo pager. FilterUserControl.ascx è un controllo utente ASP.NET utilizzato per filtrare le colonne di chiave esterna. Per ulteriori informazioni, vedere Controlli server Web Dynamic Data in questo documento. |
CustomPages |
Cartella contenitore per i modelli di pagina personalizzati. I modelli di pagina personalizzati sono utilizzati per eseguire l'override dei modelli di pagina definiti in DynamicData\\PageTemplates. Ad esempio, se il contesto dati contiene una tabella denominata Products, è possibile creare una cartella denominata DynamicData\CustomPages\Products e aggiungere nella nuova cartella le pagine aspx utilizzate per visualizzare i dati dei prodotti. Un modo semplice per iniziare consiste nel copiare le pagine dalla cartella DynamicData\PageTemplates nella nuova cartella DynamicData\CustomPages\Products e quindi modificare i modelli. Per ulteriori informazioni sui modelli di pagina personalizzati, vedere Procedura: personalizzare il layout di una singola tabella mediante un modello di pagina personalizzato. |
FieldTemplates |
Contiene i controlli utente Dynamic Data che effettuano il mapping ai tipi di dati sulla base del modello dati. Per ulteriori informazioni, vedere°Cenni preliminari sui modelli di campo di ASP.NET Dynamic Data e Cenni preliminari sui modelli di campo di ASP.NET Dynamic Data. |
PageTemplates |
Cartella contenitore per i modelli di pagina per la generazione dell’interfaccia utente utilizzata per la visualizzazione e la modifica dei dati. Per ulteriori informazioni, vedere la classe Cenni preliminari sulle pagine di supporto temporaneo e sui modelli di pagina di ASP.NET Dynamic Data. |
Controllo GridViewPager
Il file GridViewPager.ascx rappresenta un controllo utente che deriva da WebControl. Tale controllo è utilizzato per migliorare il paging quando sono presenti più pagine di dati per una tabella. Il controllo utente GridViewPager viene utilizzato nei modelli di pagina List.aspx e ListDetails.aspx.
Controllo FilterUserControl
Il file FilterUserControl.ascx rappresenta un controllo utente ASP.NET utilizzato per filtrare le colonne di chiave esterna e le colonne booleane. Il controllo FilterUserControl viene utilizzato nei modelli di pagina List.aspx e ListDetails.aspx. Viene inizializzato una volta per ogni chiave esterna e per ogni colonna booleana definite nella tabella.
Ad esempio, in un sito Web Dynamic Data che utilizza il database AdventureWorksLT, è possibile richiedere una pagina che visualizza dati dalla tabella Product. La tabella Product contiene la colonna di chiave esterna ProductCategoryID che fa riferimento alla tabella ProductCategory. Dynamic Data determina la corrispondenza tra la chiave esterna ProductCategoryID e il campo Name nella tabella ProductCategory. Sostituisce quindi il campo Name delle tabelle ProductCategory per il campo ProductCategoryID.
Quando è visualizzata la tabella Product del database AdventureWorksLT, il controllo FilterUserControl è utilizzato per creare un controllo DropDownList per la chiave esterna ProductCategoryID, utilizzando il nome derivato dal campo ProductCategoryID. È possibile selezionare una categoria di prodotto allo scopo di visualizzare solo le righe nella tabella che contengono la categoria di prodotto selezionata. Ad esempio, selezionando Mountain Bikes, vengono visualizzate solo le righe corrispondenti alla categoria di prodotto Mountain Bikes.
Per ogni colonna Booleana presente in una tabella, viene inoltre aggiunto un controllo FilterUserControl. Per le colonne Booleane, è possibile selezionare tutti i campi o solo quelli che sono impostati su true o false.
Limitazioni del controllo FilterUserControl
Il controllo FilterUserControl è molto utile per colonne Booleane e colonne di chiave esterna che contengono un numero di righe relativamente basso nella tabella a cui si fa riferimento.
Vedere anche
Concetti
Cenni preliminari su ASP.NET Dynamic Data
Cenni preliminari sul modello di ASP.NET Dynamic Data