Ingo Rammer thinktecture
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
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
Scaffolding ("Gerüst") – Automatische Erzeugung von Forms Anpassbares UI („No Limits“ – es ist nur.NET) Konfigurierbares URL Routing (ähnlich ASP.NET MVC)
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)
"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 });
Standardmässig: Routing per Querystring, kann aber geändert werden: 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" });
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; }
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 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)
<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" />
[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 („ Address“, „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
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
DynamicData kann auf unabhängigen ASPX Seiten verwendet werden Sehen wie normale PageTemplates aus Erstellen Sie DataSource, Parameter, DetailView, GridView und ListView... und fertig!
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
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, , Url)
Presentations TechDays: MSDN Events: MSDN Webcasts: MSDN Events MSDN Events: Save the date: TechEd 2009 Europe, 9-13 November 2009, Berlinhttp:// MSDN Flash (our by weekly newsletter) Subscribe: MSDN Team Blog RSS: Developer User Groups & Communities Mobile Devices: Microsoft Solutions User Group Switzerland: Managed User Group of Switzerland: FoxPro User Group Switzerland:
Presentations TechDays: TechNet Events TechNet Events: Save the date: TechEd 2009 Europe, 9-13 November 2009, Berlinhttp://technet.microsoft.com/de-ch/bb aspx TechNet Flash (our by weekly newsletter) Subscribe: Schweizer IT Professional und TechNet Blog RSS: IT Professional User Groups & Communities SwissITPro User Group: NT Anwendergruppe Schweiz: PASS (Professional Association for SQL Server):
7. – 8. April 2010 Congress Center Basel
Classic Sponsoring Partners Media Partner Premium Sponsoring Partners