ASP.Net Dynamic Data, incluso nel Framework .Net 3.5 Service Pack 1, è un nuovo sistema concepito per costruire in modo rapido e fortemente automatizzato applicazioni Web che fanno largo uso di database.
Dynamic Data è infatti in grado generare automaticamente l'interfaccia utente basandosi sulle informazioni estratte dalla fonte di dati: avremo quindi, ad esempio, una pagina contenente la lista delle tabelle presenti in un database, a cui potremo accedere per vedere o aggiornare i dati.
La visualizzazione delle informazioni si basa su un meccanismo di template, soluzione che rende di fatto possibile modificare nel dettaglio la rappresentazione delle informazioni.
ASP.Net Dynamic Data è una tecnologia che si va ad affiancare alla classiche pagine WebForm senza tuttavia sostituirle (si fonda, anzi, proprio su di esse), e che svolge un compito molto specifico e adatto soltanto a determinati scenari: è quindi molto importante analizzare i requisiti dell'applicazione Web che stiamo realizzando per essere in grado di scegliere la soluzione che più si adatta alle nostre esigenze.
In questo breve tutorial vedremo come realizzare una prima, e rudimentale, applicazione con ASP.Net Dynamic Data utilizzando l'apposito template di Visual Studio, molto utile per prendere confidenza con il nuovo strumento.
Prima di continuare, è necessario scaricare il database Northwind che utilizzeremo come fonte dati nel nostro esempio. Una volta scaricato, lanciamo il file di installazione e recuperiamo il database dalla cartella C:SQL Server 2000 Sample Databases
.
Creare un progetto Dynamic Data
Apriamo Visual Studio, scegliamo Nuovo Progetto
dal menu File
e selezioniamo Dynamic Data Web Application
dalla lista dei progetti C#.
Premendo su OK, Visual Studio creerà il nuovo progetto, identico ad una Web Application normale fatta eccezione per la cartella DynamicData
:
Questa cartella ha al suo interno quattro sottocartelle, in cui sono contenuti i template (realizzati tramite User Control e normali pagine ASP.Net) e gli altri file necessari per visualizzare i dati.
I nomi delle cartelle sono abbastanza esplicativi:
- in Content ci saranno tutti i file utili alla creazione dell'interfaccia utente
- in CustomPages verranno memorizzati i template personalizzati
- in FieldTemplates sono presenti i controlli necessari a visualizzare un determinato campo di una tabella (ad esempio
DateTime.ascx
visualizza un campo data,Text.ascx
un campo testo e così via) con i rispettivi controlli per la modifica dei dati - in PageTemplates, infine, sono presenti i template delle pagine generiche che ASP.Net Dynamic Data utilizza, in assenza di template personalizzati, per visualizzare le informazioni
Configurazione del database
Dopo aver aggiunto il file .mdf del database Northwind al progetto, creiamo una nuova classe LINQ To SQL
chiamata Northwind.dbml
aggiungendola come nuovo elemento dal Solution Explorer:
Passiamo quindi ad aggiungere le tabelle: Categories
, Orders
, Products
, Order_Details
.
Configurazione dell'applicazione
L'ultimo passo prima di poter utilizzare l'applicazione consiste nel modificare il file Global.asax. ASP.Net Dynamic Data viene infatti inizializzato nel metodo RegisterRoutes()
attraverso il seguente codice:
MetaModel model = new MetaModel(); model.RegisterContext(typeof(NorthwindDataContext), new ContextConfiguration() { ScaffoldAllTables = true });
che sarà richiamato da Application_Start
.
Per prima cosa viene creato un oggetto MetaModel che viene "riempito" con le informazioni presenti nel NorthwindDataContext
, cioè la classe LINQ to SQL creata in precedenza.
Un proprietà fondamentale, che al momento imposteremo su true
, è ScaffoldAllTables, che ordina al nostro MetaModel
di caricare le informazioni per tutte le tabelle presenti nel DataContext
. Nella costruzione di una applicazione Web vera e propria è buona norma lasciare questa proprietà su false
e selezionare manualmente le tabelle a cui si vuole che ASP.Net abbia accesso.
URL Rewriting
Sempre nel file Global.asax
sono specificate le informazioni riguardanti la costruzione degli URL. ASP.Net Dynamic Data utilizza lo stesso meccanismo di routing di ASP.Net MVC e disponibile di fatto per qualsiasi applicazione ASP.Net a partire dalla versione 3.5 SP1 del framework .Net.
Di default la regola generale utilizzata è la seguente:
RouteTable.Routes.Add(new DynamicDataRoute("{table}/{action}.aspx") { Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }), Model = model });
Per questa breve introduzione ci accontenteremo di utilizzare le impostazioni predefinite, rimandando ad altri approfondimenti la personalizzazione dei template per la visualizzazione dei dati, e la modifica gli URL della nostra applicazione.
Esecuzione dell'esempio
A questo punto la nostra applicazione è pronta. Lanciamo quindi il debug per far partire il server Web interno di Visual Studio e vediamo il risultato:
Dalle immagini è possibile vedere come, con pochi e semplici passaggi, è stato possibile realizzare una semplice applicazione Web, ma completa di tutte le caratteristiche necessarie alla visualizzazione, creazione, modifica e cancellazione dei dati contenuti nel database.