Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

ASP.Net Dynamic Data, scaffolding per Web Form

Generare automaticamente pagine per operazioni CRUD sui dati, grazie ai meccanismi del Framework .Net 3.5
Generare automaticamente pagine per operazioni CRUD sui dati, grazie ai meccanismi del Framework .Net 3.5
Link copiato negli appunti

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#.

Figura 1. Creazione del nuovo progetto
Creazione del nuovo progetto

Premendo su OK, Visual Studio creerà il nuovo progetto, identico ad una Web Application normale fatta eccezione per la cartella DynamicData:

Figura 2. Struttura delle cartelle
Struttura delle cartelle

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:

Figura 3. Creazione della classe LINQ To SQL
Creazione della classe LINQ To SQL

Passiamo quindi ad aggiungere le tabelle: Categories, Orders, Products, Order_Details.

Figura 4. Aggiunta delle tabelle
Aggiunta delle tabelle

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:

Figura 5. Home page dell'applicazione
Home page dell'applicazione
Figura 6. Vista della tabella Categories
Vista della tabella Categories
Figura 7. Modifica di un elemento della tabella Categories
Modifica di un elemento della tabella Categories

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.

Ti consigliamo anche