Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ingo Rammer thinktecture.

Ähnliche Präsentationen


Präsentation zum Thema: "Ingo Rammer thinktecture."—  Präsentation transkript:

1 Ingo Rammer ingo.rammer@thinktecture.com thinktecture

2 Kleine Beratungsfirma für Softwareentwickler Unterstützung, Coaching und Beratung fü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

3 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

4 Scaffolding ("Gerüst") – Automatische Erzeugung von Forms Anpassbares UI („No Limits“ – es ist nur.NET) Konfigurierbares URL Routing (ähnlich ASP.NET MVC)

5 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)

6 "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 }); // Global.asax in Application_Start model.RegisterContext (typeof(NorthwindEntities), new ContextConfiguration() { ScaffoldAllTables = true });

7 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" }); routes.Add(new DynamicDataRoute("Customers/{CustomerID}") { Model = model, ViewName = "Details", Table = "Customers", Action = "Details" });

8 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; } [ScaffoldTable(true)] [MetadataType(typeof(ProductsMetaData))] public partial class Products { } public class ProductsMetaData { [ScaffoldColumn(true)] public object Name; }

9 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

10 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 = Typ der Entität) Kopieren der gewünschten ASPX Seite von PageTemplates nach CustomPages/EntityName Fertig! (Keine weitere Konfiguration notwendig)

11 <asp:DetailsView DataSourceID="DetailsDataSource" AutoGenerateRows="false"> <asp:DynamicField DataField="QuantityPerUnit" HeaderText ="Quantity" /> Name Templated: <asp:DynamicControl runat="server" DataField="ProductName" /> <asp:DetailsView DataSourceID="DetailsDataSource" AutoGenerateRows="false"> <asp:DynamicField DataField="QuantityPerUnit" HeaderText ="Quantity" /> Name Templated: <asp:DynamicControl runat="server" DataField="ProductName" />

12 [UIHint]: Verwenden eines bestimmten Controls für ein Feld [DataType]: spezieller Typ (bzw. ein String als "Name" des Typs), der später vom FieldTemplate verwendet werden kann („EmailAddress“, „Url“) [Range], [Required]: Validierungen [DisplayFormat]: Spezielles Anzeigeformat für ein Feld [DisplayField]: Definition der Spalte, die für Fremdschlüssel angezeigt werden soll (z.B. das Feld „Name“ für Kunden) [DisplayName]: Anzeigename für eine Spalte Und mehr: Beliebige weitere selbstdefinierte Attribute, die Sie später in einem FieldTemplate prüfen möchten

13 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 () um Zugriff auf die Attribute zu erhalten, die im Modell für dieses Feld definiert sind

14 DynamicData kann auf unabhängigen ASPX Seiten verwendet werden Sehen wie normale PageTemplates aus Erstellen Sie DataSource, Parameter, DetailView, GridView und ListView... und fertig!

15 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

16 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)

17 Presentations TechDays: www.techdays.ch MSDN Events: http://www.microsoft.com/switzerland/msdn/de/presentationfinder.mspx MSDN Webcasts: http://www.microsoft.com/switzerland/msdn/de/finder/default.mspxwww.techdays.chhttp://www.microsoft.com/switzerland/msdn/de/presentationfinder.mspxhttp://www.microsoft.com/switzerland/msdn/de/finder/default.mspx MSDN Events MSDN Events: http://www.microsoft.com/switzerland/msdn/de/events/default.mspx Save the date: TechEd 2009 Europe, 9-13 November 2009, Berlinhttp://www.microsoft.com/switzerland/msdn/de/events/default.mspx MSDN Flash (our by weekly newsletter) Subscribe: http://www.microsoft.com/switzerland/msdn/de/flash.mspxhttp://www.microsoft.com/switzerland/msdn/de/flash.mspx MSDN Team Blog RSS: http://blogs.msdn.com/swiss_dpe_team/Default.aspxhttp://blogs.msdn.com/swiss_dpe_team/Default.aspx Developer User Groups & Communities Mobile Devices: http://www.pocketpc.ch/ Microsoft Solutions User Group Switzerland: www.msugs.ch.NET Managed User Group of Switzerland: www.dotmugs.ch FoxPro User Group Switzerland: www.fugs.chhttp://www.pocketpc.ch/www.msugs.chwww.dotmugs.chwww.fugs.ch

18 Presentations TechDays: www.techdays.chwww.techdays.ch TechNet Events TechNet Events: http://technet.microsoft.com/de-ch/bb291010.aspx Save the date: TechEd 2009 Europe, 9-13 November 2009, Berlinhttp://technet.microsoft.com/de-ch/bb291010.aspx TechNet Flash (our by weekly newsletter) Subscribe: http://technet.microsoft.com/de-ch/bb898852.aspxhttp://technet.microsoft.com/de-ch/bb898852.aspx Schweizer IT Professional und TechNet Blog RSS: http://blogs.technet.com/chitpro-de/http://blogs.technet.com/chitpro-de/ IT Professional User Groups & Communities SwissITPro User Group: www.swissitpro.ch NT Anwendergruppe Schweiz: www.nt-ag.ch PASS (Professional Association for SQL Server): www.sqlpass.chwww.swissitpro.chwww.nt-ag.chwww.sqlpass.ch

19 7. – 8. April 2010 Congress Center Basel

20 Classic Sponsoring Partners Media Partner Premium Sponsoring Partners

21


Herunterladen ppt "Ingo Rammer thinktecture."

Ähnliche Präsentationen


Google-Anzeigen