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

Slides:



Advertisements
Presentazioni simili
Memoria Virtuale in Linux
Advertisements

UNO STRUMENTO PER INTERAGIRE CON GLI UTENTI DELLE PAGINE WEB
Elaborazione di Franco Grivet Chin
DBMS (DataBase Management System)
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
ASP .NET & Web Service: Introduzione
Crea il tuo sito con Web Matrix e il Web Hosting su ASP.NET
Consumare Web Service Andrea Saltarello
Strumenti di sviluppo Microsoft Campagna incentivi per Software Assurance Opportunità di vendita.
ITIS “E. Divini” corso di formazione sul concept mapping
Rifiuti in Cementeria o Rifiuti Zero ? Rete Donne Brianza.
Soccorsi e sopravvivenza
1 Presentazione di InemarWiki Trento 30 settembre 2008 Ing. Antognazza Federico.
Connessione con MySQL.
Università degli Studi di Modena e Reggio Emilia
Sviluppo servizi su rete, banche datiCorso di formazioneDicembre Strumenti via WEB per la gestione dinamica dei siti.
3° Workshop "Accessibilità: primi passi per un mondo fruibile da tutti" Alessandro Olivi Modellazione di pagine WEB e accessibilità
TW Analisi dei documenti n Classificazione dei componenti n Selezione dei componenti, costruzione della gerarchia, dei blocchi informativi e degli elementi.
Modulo o Form in Html.
1 Anatomia di una pagina Un insieme di pagine web hanno generalmente una parte invariante (o poco): header, navigazione, footer una parte variabile: contenuti.
Esercitazione 5 MySQL Laboratorio di Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Architettura del World Wide Web
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
XML e la generazione di cataloghi multimediali F. Garzotto, L. Mainetti, P. Paolini Politecnico di Milano HOC - Hypermedia Open Center Dipartimento di.
Cos’è un CMS? Content Management System
Daniel Stoilov Tesi di Laurea
Università degli Studi di Modena e Reggio Emilia Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Utilizzo di ASP.NET.
Il linguaggio ASP Lezione 4 Manipolare i database con ASP Lutilizzo dei FORM per laggiunta dei dati.
Elaborazione di Franco Grivet Chin
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ASP. Net Web Part e controlli di login Elaborazione di Franco Grivet Chin.
Intent e Intent Filters. Intents Un Intent può contenere dati che possono essere utilizzati dalla componente che riceve. Ad esempio, un'Activity chiama.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Progettare siti con ASP.net
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
A cura di Laura Prosdocimi Biblioteca del Dip.to di Filosofia La Biblioteca e le sue risorse - 27 novembre 2009 R EF W ORKS.
Corso di PHP.
Ing. Enrico Lecchini BetaTre S.r.l.
e per generare Bibliografie
Gestione sito Dario Zucchini 29/02/2012.
Guida IIS 6 A cura di Nicola Del Re.
ASP.NET MVC Framework Simone Chiaretta Solution Developer, Avanade 27 Giugno 2008.
Fare clic per modificare lo stile del titolo Fare clic per modificare stili del testo dello schema – Secondo livello Terzo livello – Quarto livello » Quinto.
Who the hell am I? Simone Chiaretta Lavoro per Avanade Italy
Progettare un database
Fabrizio Grossi Verifica delle attività. L'operato degli amministratori di sistema deve essere oggetto, con cadenza almeno annuale, di un'attività
Server Web in una rete Windows Sommario Meccanismi di accesso remoto Meccanismi di accesso remoto Introduzione ai Server Web Introduzione ai Server.
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.
ASP.NET MVC Framework Simone Chiaretta Solution Developer, Avanade 24 Ottobre 2008.
14/06/2008 – Matteo Baglini Mail: Blog:
Lavorare con le query Federica Scarrione 18/05/2009 fonte:
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
Diventa blogger Analisi degli obiettivi Piattaforma Wordpress Francesca Sanzo -
Pagine ASP parte 3 I data base Stefano Schacherl.
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
Real World data access layers DataSet vs. Custom entities Pierre Greborio Software Architect – PEWay SrL Microsoft MVP – Solutions Architect.
Esercizio ODBC. Configurare il driver ODBC Start  Control Panel  Administrative Tools Aprire: Data Source(ODBC) User DSN  Add…. Selezionare il driver.
MySQL Database Management System
Processi e Privacy Indirizzi di riferimento: processi e privacy autorizzazioni di accesso e malfunzionamenti dell'applicativo.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Microsoft Access Chiavi, struttura delle tabelle.
Reti di calcolatori LS1 Service Middleware Reti di calcolatori LS progetto di Andrea Belardi Infrastruttura dedicata alla gestione di servizi disponibili.
E Windows SharePoint Services 2.0 Ivan Renesto Document Library how to use Windows SharePoint Services.
GUIDA ALL’UTILIZZO DEL
Istituto Tecnico Industriale Don Orione Fano
Manuale Utente – i-Sisen Questionario dei Consumi
Il software Aleph caratteristiche e funzionalità Aleph500 v ersione seminario a cura di Libera Marinelli Università di Genova - Centro di servizi.
Un sito con Wordpress Includere Digital-mente – Corso livello 4 docente: prof.ssa MANUELA MARSILI.
SISTEMA GESTIONE TOMBINI
+ Geolocalizzazione Nicolò Sordoni. + Servizi di localizzazione In Windows Phone, la posizione dell’utente può essere rilevata in 3 differenti modi: GPS:
28/06/2016Francesco Serafini INDICO Parte 2. 28/06/2016Francesco Serafini CREAZIONE EVENTI Gli eventi possono essere creati in qualsiasi categoria, che.
Transcript della presentazione:

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

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. 27/03/2009 www.xedotnet.org

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 27/03/2009 www.xedotnet.org

[FLICKR] Scaffolding: 17/01/2008 www.xedotnet.org

Concetti dei Dynamic Data Concetti base Concetti dei Dynamic Data Permettono di creare facilmente siti per l’accesso ai dati (operazioni di CRUD) L’interfaccia è 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 27/03/2009 www.xedotnet.org

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

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

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

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

Creazione di un progetto Dynamic Data – passo 4 Creazione progetto Creazione di un progetto Dynamic Data – passo 4 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 }); 27/03/2009 www.xedotnet.org

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

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

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 routes.Add( new DynamicDataRoute("{table}/{action}.aspx") { Constraints = new RouteValueDictionary( new { action = "List|Details|Edit|Insert" }), Model = model }); 27/03/2009 www.xedotnet.org

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. routes.Add( new DynamicDataRoute("{table}/ListDetails.aspx") { Action = PageAction.List, ViewName = "ListDetails", Model = model}); Action = PageAction.Details, 27/03/2009 www.xedotnet.org

Combinazioni di Page Modes Ogni entità/tabella può far uso di un suo specifico Page Mode Nel definire le regole di routing, l’ordine di inserimento è importante. routes.Add( new DynamicDataRoute(“Products/{action}.aspx") { Constraints = new RouteValueDictionary( new { action= "List|Details|Edit|Insert" }), Model = model, Table= “Products” }); new DynamicDataRoute("{table}/ListDetails.aspx") { Action = PageAction.List, ViewName = "ListDetails", Model = model}); { Action = PageAction.Details, ViewName= "ListDetails", Non verrà eseguito in quanto ha lo stesso routing di quello precedente 27/03/2009 www.xedotnet.org

Fields Template 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 27/03/2009 www.xedotnet.org

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

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 27/03/2009 www.xedotnet.org

Custom Pages Template Le pagine contengono DynamicField Permettono di iniettare a runtime il controllo corretto per visualizzare/editare il dato <Columns> <asp:DynamicField DataField="CompanyName" /> <asp:DynamicField DataField="Phone" /> <asp:DynamicField DataField="Fax" /> <asp:DynamicField DataField="Products" /> </Columns> 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 27/03/2009 www.xedotnet.org

Custom Field Template Custom Field Template Oltre alle pagine è possibile modificare anche i FieldTemplate, in modo da poter editare dei tipi custom, oppure per modificare il comportamento o aspetto di quelli già presenti I nuovi FieldTemplate devono estendere la classe FieldTemplate UserControl <asp:CalendarID="Calendar1" runat="server“ SelectedDate="<%# (FieldValue!=null)? FieldValue : DateTime.Now%>" VisibleDate="<%# (FieldValue!=null)? FieldValue : DateTime.Now%>" </asp:Calendar> Utilizzare FieldValue per recuperare il valore da visualizzare Utilizzare l’override di ExtractValues() per scrivere i valori nel DB protected override void ExtractValues(IOrderedDictionary dictionary) { dictionary[Column.Name] = ConvertEditedValue(Calendar1.SelectedDate.ToShortDateString()); } 27/03/2009 www.xedotnet.org

MetaData application MetaData application 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 using System; using System.ComponentModel.DataAnnotations; [MetadataType(typeof(EmployeeMetadata))] public partial class Employee { } public class EmployeeMetadata [UIHint("DateTimeCalendar")] public objectHireDate{ get; set; } 27/03/2009 www.xedotnet.org

Validazione Validazione E’ possibili specifacare alcune validazioni tramite alcuni attributi inseriti nella classe dei MetaData [Required()] [Range(0,100)] E’ possibile utilizzare gli eventi all’interno della partial class Pattern On<Field>Changing, On<Field>Changed public class CustomerMetadata { [Required()] public object Title; } 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."); } 27/03/2009 www.xedotnet.org

Validazione Validazione E’ possibile utilizzare l’evento 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 (all’interno della pagina) 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”); } 27/03/2009 www.xedotnet.org

Conclusioni Aspetti negativi 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 dell’applicazione 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) 27/03/2009 www.xedotnet.org

Prossimi Eventi 3 Aprile 2009 30 Aprile 2009 8 Maggio 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 In collaborazione con

Andrea Dottor Links blog: blog.dottor.net email: andrea@dottor.net live messenger: community: http://www.xedotnet.org 27/03/2009 www.xedotnet.org