210 likes | 311 Views
RAD Web Applications with ASP.NET Dynamic Data. Ingo Rammer ingo.rammer@thinktecture.com thinktecture. Ingo Rammer und thinktecture. Kleine Beratungsfirma für Softwareentwickler Unterstützung , Coaching und Beratung für Software- Architekten und - Entwickler Architektur- und Code-Reviews
E N D
RAD Web Applications withASP.NET Dynamic Data Ingo Rammer ingo.rammer@thinktecture.com thinktecture
Ingo Rammer und thinktecture • KleineBeratungsfirmafürSoftwareentwickler • Unterstützung, Coaching und Beratungfür Software-Architekten und -Entwickler • Architektur- und Code-Reviews • Prototypentwicklung und Architekturberatung • Coaching und Mentoring • Anwendungsoptimierung und Troubleshooting • http://www.thinktecture.com • ingo.rammer@thinktecture.com
ASP.NET Dynamic Data • Anpassbare, modell-/klassen-getriebene Technologie zur vollständigen oder teilweise Generierung von Web Frontends • Heute: Linq-to-SQL und Entity Framework • "Scaffolding" • Sehr anpassbar • Aber noch wichtiger • Dynamic Data Controls
Anpassbares Scaffolding • Scaffolding ("Gerüst") – Automatische Erzeugung von Forms • Anpassbares UI („No Limits“ – es ist nur .NET) • Konfigurierbares URL Routing (ähnlich ASP.NET MVC)
Erweiterbarkeit • Erweiterungsmodell für logisches Schema (Entity Framework oder Linq-to-SQL) • Validierung • Business Rules • Sortierung, Filterung, Bearbeiten, Einfügen, Löschen • .NET Framework 3.5 SP1 (+ Hotfix)
Scaffolding - Gerüstbau • "Hello World" für Dynamic Data • Null-Code Datenformulare (aber: anpassbar, wann immer Sie möchten!) • Auskommentieren der folgenden Zeile: • Aktiviert Scaffolding für alle Entities // Global.asax in Application_Start model.RegisterContext (typeof(NorthwindEntities), new ContextConfiguration() { ScaffoldAllTables = true });
Custom Routing Definition • Standardmässig: Routing per Querystring, kann aber geändert werden: • http://server/Customers • http://server/Customers/ALFKI • http://server/Customers/ALFKI/Edit • ... und viele andere Möglichkeiten routes.Add(new DynamicDataRoute("Customers/{CustomerID}") { Model = model, ViewName = "Details", Table = "Customers", Action = "Details" });
Eingeschränktes Scaffolding • Attribute auf Klassen- und Feld-Ebene • Feldebene unterstützt Metadaten-Redirection mit [MetadataType] [ScaffoldTable(true)] [MetadataType(typeof(ProductsMetaData))] public partial class Products { } public class ProductsMetaData { [ScaffoldColumn(true)] public object Name; }
Anpassung der Vorlagen • Templates • Templates für Seiten(„alle Auflistungsseiten“, „alle Detailseiten“) • Templates für Felder („alle Integer-TextBoxen“) • Spezielle/angepasste Seiten • Eine bestimmte ASP.NET Seite für Listen, Details, Bearbeiten or Einfügen • Global oder nur für einzelne Entitäten/Seiten (mit Routing) • Können DynamicField/DynamicControl mit UIHints verwenden
Erstellen einer eigenen Seite • Erstellen Sie einen Ordner unter CustomPages, der genau so heisst wie die Entität und kopieren Sie eine der verfügbaren Template-Seiten • Erstellen des Ordners (Name = TypderEntität) • Kopierendergewünschten ASPX Seite von PageTemplatesnachCustomPages/EntityName • Fertig! (KeineweitereKonfigurationnotwendig)
Beispielseite <asp:DetailsView DataSourceID="DetailsDataSource" AutoGenerateRows="false"> <Fields> <asp:DynamicField DataField="ProductName" /> <asp:DynamicField DataField="QuantityPerUnit" HeaderText ="Quantity" /> <asp:DynamicField DataField="UnitPrice" /> <asp:DynamicField DataField="UnitsInStock" /> <asp:DynamicField DataField="Categories" /> <asp:TemplateField> <HeaderTemplate>Name</HeaderTemplate> <ItemTemplate> Templated: <asp:DynamicControl runat="server" DataField="ProductName" /> </ItemTemplate> </asp:TemplateField> </Fields> <asp:DetailsView>
Anpassen des Modells • [UIHint]: Verwendeneinesbestimmten Controls füreinFeld • [DataType]: speziellerTyp (bzw. ein String als "Name" des Typs), derspätervomFieldTemplateverwendetwerdenkann („EmailAddress“, „Url“) • [Range], [Required]: Validierungen • [DisplayFormat]: SpeziellesAnzeigeformatfüreinFeld • [DisplayField]: Definition derSpalte, die fürFremdschlüsselangezeigtwerdensoll (z.B. das Feld „Name“ fürKunden) • [DisplayName]: AnzeigenamefüreineSpalte • Und mehr: Beliebigeweitereselbstdefinierte Attribute, die Siespäter in einemFieldTemplateprüfenmöchten
Angepasste Felder • Erstellen Sie ein ASCX in /FieldTemplates, abgeleitet von FieldTemplateUserControl und überschreiben Sie die Proprety DataControl • Weitere Möglichkeiten: • Überschreiben von FormatFieldValue, ExtractValues • Verwenden von MetaDataAttribute. TypeOf<T>() um Zugriff auf die Attribute zu erhalten, die im Modell für dieses Feld definiert sind
Einbinden von DD • DynamicData kann auf unabhängigen ASPX Seiten verwendet werden • Sehen wie normale PageTemplates aus • Erstellen Sie DataSource, Parameter, DetailView, GridView und ListView ... und fertig!
Weitergehende Anpassungen • Fast ohne Grenzen. DD passt sehr gut in's allgemeine ASP.NET Modell • Sie kennen bereits: FieldTemplates, PageTemplates • Fehlendes Puzzleteil: Welche Felder werden angezeigt? In welcher Reihenfolge? • IAutoFieldGenerator: Definiert die anzuzeigenden Felder
Zukunft • Preview zum Download verfügbar (ASP.NET Dynamic Data 4.0 Preview 2) • Verschiedene Datenbankzugriffsschichten • ASP.NET Data Services & eigene Datenlayer • Query Blöcke • Filtern der Daten mit LINQ Ausdrücken • Zusätzliche FieldTemplates (Enum, Email, Url)
Your MSDN resourcescheck out these websites, blogs & more! PresentationsTechDays: www.techdays.chMSDN Events: http://www.microsoft.com/switzerland/msdn/de/presentationfinder.mspxMSDN Webcasts: http://www.microsoft.com/switzerland/msdn/de/finder/default.mspx MSDN EventsMSDN Events: http://www.microsoft.com/switzerland/msdn/de/events/default.mspxSave the date: Tech•Ed 2009 Europe, 9-13 November 2009, Berlin MSDN Flash (our by weekly newsletter)Subscribe: http://www.microsoft.com/switzerland/msdn/de/flash.mspx MSDN Team BlogRSS: http://blogs.msdn.com/swiss_dpe_team/Default.aspx Developer User Groups & CommunitiesMobile Devices: http://www.pocketpc.ch/Microsoft Solutions User Group Switzerland: www.msugs.ch.NET Managed User Group of Switzerland: www.dotmugs.chFoxPro User Group Switzerland: www.fugs.ch
Your TechNet resourcescheck out these websites, blogs & more! PresentationsTechDays: www.techdays.ch TechNet EventsTechNet Events: http://technet.microsoft.com/de-ch/bb291010.aspx Save the date: Tech•Ed 2009 Europe, 9-13 November 2009, Berlin TechNet Flash (our by weekly newsletter)Subscribe: http://technet.microsoft.com/de-ch/bb898852.aspx Schweizer IT Professional und TechNet BlogRSS: http://blogs.technet.com/chitpro-de/ IT Professional User Groups & CommunitiesSwissITPro User Group: www.swissitpro.chNT Anwendergruppe Schweiz: www.nt-ag.chPASS (Professional Association for SQL Server): www.sqlpass.ch
Save the date for tech·days nextyear! 7. – 8. April 2010Congress Center Basel
Premium Sponsoring Partners Classic Sponsoring Partners Media Partner