La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

ASP.NET Dynamic Data »Andrea Dottor – Microsoft MVP ASP/ASP.NET.

Presentazioni simili


Presentazione sul tema: "ASP.NET Dynamic Data »Andrea Dottor – Microsoft MVP ASP/ASP.NET."— Transcript della presentazione:

1 ASP.NET Dynamic Data »Andrea Dottor – Microsoft MVP ASP/ASP.NET

2 27/03/2009www.xedotnet.org2 »Cosa sono gli ASP.NET Dynamic Data? Permettono di creare una Web Application per l'accesso e la gestione dati utilizzando un meccanismo chiamato scaffolding.

3 27/03/2009www.xedotnet.org3 »[WIKIPEDIA] Scaffolding: Wikipedia Scaffolding Il termine scaffolding, introdotto in psicologia da Jerome Bruner e altri nel 1976, significa letteralmente "impalcatura". Indica quelle strategie di sostegno e quella guida ai processi di apprendimento che consentono di svolgere un compito sebbene non si abbiano ancora le competenze per farlo in autonomia, riuscendovi grazie all'aiuto di un esperto, di un adulto o di un pari più preparato che fornisce indicazioni e suggerimenti, nell'attesa che si riesca a maturare una piena autonomia nello svolgimento del compito. Le componenti generali dello scaffolding sono: a) reclutare il bambino al compito b) mantenere la direzione dell'attività verso il problema da risolvere c) semplificare le componenti del compito d) mostrare le possibili soluzioni e) ridurre i gradi di libertà della situazione

4 17/01/2008www.xedotnet.org4 »[FLICKR] Scaffolding: FLICKR Scaffolding

5 27/03/2009www.xedotnet.org5 »Concetti dei Dynamic Data Permettono di creare facilmente siti per laccesso ai dati (operazioni di CRUD) Linterfaccia è creata partendo dal Data Model Data Model fa uso dei metadati per descrivere tutta la struttura e le relazioni Le regole di validazione vengono create automaticamente Le pagine vengono crete automaticamente, utilizzando dei template URL Routing è utilizzato per mappare gli url sulle pagine Concetti base

6 27/03/2009www.xedotnet.org6 »Architettura Architettura Data SourceData Model (LINQ to SQL – Entity Framework) Data Model (Meta-data) Page e Field Templates

7 27/03/2009www.xedotnet.org7 »Creazione di un progetto Dynamic Data – passo 1 Creazione progetto Utilizzare il template DynamicData Web Site Il WebSite conterrà la cartella DynamicData

8 27/03/2009www.xedotnet.org8 »Creazione di un progetto Dynamic Data – passo 2 Creazione progetto Aggiungere classi LINQ toSQL oppure Entity Data Model

9 27/03/2009www.xedotnet.org9 »Creazione di un progetto Dynamic Data – passo 3 Creazione progetto Popoliamo il Data Model (LINQ to SQL oppure Entity Framework) Drag & Drop delle tabelle da utilizzare.

10 27/03/2009www.xedotnet.org10 »Creazione di un progetto Dynamic Data – passo 4 Creazione progetto Configurazione del DataModel nel Global.asax per la registrazione del DataContext necessario per la creazione del Meta Model e delle regole di routing. MetaModelmodel = new MetaModel(); model.RegisterContext(typeof(NorthwindDataContext), new ContextConfiguration() { ScaffoldAllTables = true });

11 27/03/2009www.xedotnet.org11 »Page Templates Page Templates Contenute in DynamicData\Page Templates Page Uses Controls: DynamicDataManager DynamicValidator FilterRepeater DynamicControl DynamicField GridView utilizzata per visualizzare i dati.

12 27/03/2009www.xedotnet.org12 »Page Modes Separate-Page Mode(default) Vengono utilizzate pagine distinte per la lista, ledit, il dettaglio e linserimento di nuovi dati. Combined-Page Mode I dati vengono manipolati nella stessa pagina (Master-Dteails) Differenti Page Modes possono essere associati a differenti tabelle Page Modes

13 27/03/2009www.xedotnet.org13 »Separate-Page Mode Utilizzo del seguente route nel Global.asax {table}/{action}. La {action} può avere i seguenti valori: Edit List Details Insert Ogni operazione viene fatta in una pagina differente Separate-Page Mode routes.Add( new DynamicDataRoute("{table}/{action}.aspx") { Constraints = new RouteValueDictionary( new { action = "List|Details|Edit|Insert" }), Model = model });

14 27/03/2009www.xedotnet.org14 »Combined Page Mode Utilizzo del seguente route nel Global.asax {table}/ListDetails.aspx La pagina ListDetails è utilizzata per manipolare i dati e per visualizzarne il dettaglio. Combined Page Mode 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});

15 27/03/2009www.xedotnet.org15 »Combinazioni di Page Modes Ogni entità/tabella può far uso di un suo specifico Page Mode Nel definire le regole di routing, lordine di inserimento è importante. Combinazioni di Page Modes routes.Add( new DynamicDataRoute(Products/{action}.aspx") {Constraints = new RouteValueDictionary( new { action= "List|Details|Edit|Insert" }), Model = model, Table= Products }); 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}); Non verrà eseguito in quanto ha lo stesso routing di quello precedente

16 27/03/2009www.xedotnet.org16 »Fields Template Le pagine fanno uso dei FieldTemplates per visualizzare ed editare le informazioni I controlli vengono iniettati a runtime I field templates sono specializzati per tipo di dato che devono visualizzare Boolean checkbox Relationship dropdownlist Textshow TextBox o Literal Fields Template

17 27/03/2009www.xedotnet.org17 »Fields Template Se non esiste un Field per un specifico tipo di dato, questo non verrà visualizzato {tipoDato}.ascx {tipoDato}_Edit.ascx Tramite lattributo UHint è possibile specificare quale Field Utilizzare Per sostituire il Field di default Per assegnare un Field per un tipo sconosiuto Fields Template

18 27/03/2009www.xedotnet.org18 »Custom Pages Template Si possono creare dei nuovi template di pagina Devono seguire la seguente regola DynamicData\CustomPages\{entity_name}\PageName.aspx Per associare una pagina ListDetails.aspx alla classe Suppliers DynamicData\CustomPages\Suppliers\ListDetails.aspx Custom Pages Template

19 27/03/2009www.xedotnet.org19 »Custom Pages Template Custom Pages Template Le pagine contengono DynamicField Permettono di iniettare a runtime il controllo corretto per visualizzare/editare il dato Le pagine cusomizzate devono mantenere lo stesso nome di quelle orignali ListDetails.aspx, Edit.aspx, List.aspx,... Lo stesso URL viene utilizzato per accedere sia alle pagine customizzate, che ai template originali

20 27/03/2009www.xedotnet.org20 »Custom Field Template Custom Field Template

21 27/03/2009www.xedotnet.org21 »MetaData application MetaData application using System; using System.ComponentModel.DataAnnotations; [MetadataType(typeof(EmployeeMetadata))] public partial class Employee { } public class EmployeeMetadata { [UIHint("DateTimeCalendar")] public objectHireDate{ get; set; } } I Dynamic Data utilizzano i MetaData per descrivere il Data Model. Tramite i MetaData possiamo andare ad aggiungere caratteristiche al nostro Data Model Si deve aggiungere i MetaData tramite una partial class

22 27/03/2009www.xedotnet.org22 »Validazione Validazione Public partial class Customer { partial void OnTitleChanging(string value) { if(!Char.IsUpper(value[0])) throw new ValidationException("Title must start with an upper case letter."); } E possibili specifacare alcune validazioni tramite alcuni attributi inseriti nella classe dei MetaData [Required()] [Range(0,100)] E possibile utilizzare gli eventi allinterno della partial class Pattern On Changing, On Changed public class CustomerMetadata { [Required()] public object Title; }

23 27/03/2009www.xedotnet.org23 »Validazione Validazione Public partial class Employee { partial void OnValidate(System.Data.Linq.ChangeAction action) { if(action == System.Data.Linq.ChangeAction.Insert) { if(this._BirthDate.Value.CompareTo(DateTime.Now) > 0) throw new ValidationException(The birth date cannot be in the future); } E possibile utilizzare levento OnValidate (globale, della classe) Si è in grado di filtrare la validazione anche per ChangeAction Le eccezzioni vengono gestite nella pagina e visualizzate in un SummaryValidator (allinterno della pagina)

24 27/03/2009www.xedotnet.org24 »Conclusioni I Dynamic Data facilitano la creazione di data-driven website (che fanno uso di CRUD) Aumentano la produttività in fase di sviluppo Semplica la manutenzione dellapplicazione Ampia possibilità di customizzazione »Aspetti negativi Non coprono tutte le casistiche di sviluppo, ma solo una minima parte In alcune applicazioni, ci si scontra con parecchi vincoli by design (è la prima release) Conclusioni

25 3 Aprile 2009 Test Driven Development – Mauro Servienti Novotel Venezia - Mestre 30 Aprile 2009.NET Micro Framework – Mirco Vanini Online – Live Meeting 8 Maggio 2009 NetTiers & code Generation – Davide Senatore Novotel Venezia - Mestre 5 Giugno 2009 Programming C# 3.0 – Andrea Dottor Novotel Venezia - Mestre Prossimi Eventi In collaborazione con

26 27/03/2009www.xedotnet.org26 Links blog:blog.dottor.net live community:http://www.xedotnet.org Andrea Dottor


Scaricare ppt "ASP.NET Dynamic Data »Andrea Dottor – Microsoft MVP ASP/ASP.NET."

Presentazioni simili


Annunci Google