Accedere ai dati con i Dynamic Data Controls di ASP.NET 3.5 SP1

di Riccardo Golia, in ASP.NET 3.5 SP 1, Dynamic Data Controls, DataBinding,

I Dynamic Data Control e il relativo modello di sviluppo incluso nella service pack 1 del .NET Framework 3.5 consentono di realizzare applicazioni web per la pubblicazione e la gestione dei dati presenti in un database in modo pressochè automatico tramite un meccanismo di templating denominato "scaffolding".

Sfruttando il meccanismo di routing incluso in ASP.NET 3.5 SP1, il nuovo modello di sviluppo permette infatti di creare in modo dinamico le pagine web necessarie per la visualizzazione, l'inserimento, la modifica e la cancellazione dei dati a partire da un oggetto DataContext (per esempio, LINQ to SQL o LINQ to Entity).

Le pagine vengono generate in funzione di un insieme di template facilmente personalizzabili che internamente utilizzano i Dynamic Data Control. Le nuove classi e i controlli sono contenuti nell'assembly System.Web.DynamicData.

Per poter utilizzare il modello Dynamic Data occorre creare in Visual Studio 2008 SP1 un nuovo Web Site utilizzando il template di progetto "Dynamic Data Web Site". Il sito generato include una serie di file specifici presenti nella cartella "DynamicData", contenente in particolare i template delle pagine e dei campi e altre risorse.

Per poter attivare il meccanismo di generazione automatica delle pagine occorre disporre di un modello di dati sottostante. A tale scopo va creato un DataContext a partire dallo schema contenente i dati da visualizzare e gestire nel sito.

Nel file Global.asax, nell'event-handler dell'evento OnStart dell'applicazione web, occorre associare il DataContext all'engine Dynamic Data, impostando il parametro ScaffoldAllTables al valore true se si desidera che le pagine di visualizzazione e gestione dei dati vengano generate automaticamente per ciascuna tabella mappata nel DataContext. Nell'event-handler vanno infine definite le eventuali regole aggiuntive di routing valide per gli URL.

public static void RegisterRoutes(RouteCollection routes)
{
  MetaModel model = new MetaModel();
  model.RegisterContext(typeof(NorthwindDataContext), new ContextConfiguration() { ScaffoldAllTables = true });

  routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx") {
    Action = PageAction.List,
    ViewName = "ListDetails",
    Model = model
    });

  routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx") {
    Action = PageAction.Details,
    ViewName = "ListDetails",
    Model = model
    });
}

void Application_Start(object sender, EventArgs e)
{
  RegisterRoutes(RouteTable.Routes);
}

A questo punto il gioco è fatto!

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi