RAD Web Applications with ASP.NET Dynamic Data
-
Upload
fredericka-kelley -
Category
Documents
-
view
29 -
download
3
description
Transcript of RAD Web Applications with ASP.NET Dynamic Data
RAD Web Applications withASP.NET Dynamic DataIngo [email protected]
Ingo Rammer und thinktecture
Kleine Beratungsfirma für Softwareentwickler
Unterstützung, Coaching und Beratung für Software-Architekten und -Entwickler
Architektur- und Code-ReviewsPrototypentwicklung und ArchitekturberatungCoaching und MentoringAnwendungsoptimierung und Troubleshooting
http://[email protected]
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 wichtigerDynamic Data Controls
Anpassbares Scaffolding
Scaffolding ("Gerüst") – Automatische Erzeugung von FormsAnpassbares 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)
ValidierungBusiness Rules
Sortierung, Filterung, Bearbeiten, Einfügen, Löschen.NET Framework 3.5 SP1 (+ Hotfix)
Scaffolding - Gerüstbau
"Hello World" für Dynamic DataNull-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/Customershttp://server/Customers/ALFKIhttp://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-EbeneFeldebene 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
TemplatesTemplates für Seiten(„alle Auflistungsseiten“, „alle Detailseiten“)Templates für Felder („alle Integer-TextBoxen“)
Spezielle/angepasste SeitenEine 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 = Typ der Entität)
• Kopieren der gewünschten ASPX Seite von PageTemplates nach CustomPages/EntityName
• Fertig! (Keine weitere Konfiguration notwendig)
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]: 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 SpalteUnd mehr: Beliebige weitere selbstdefinierte Attribute, die Sie später in einem FieldTemplate prüfen möchten
Angepasste Felder
Erstellen Sie ein ASCX in /FieldTemplates, abgeleitet von FieldTemplateUserControl und überschreiben Sie die Proprety DataControlWeitere Möglichkeiten:
Überschreiben von FormatFieldValue, ExtractValuesVerwenden 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 werdenSehen wie normale PageTemplates ausErstellen Sie DataSource, Parameter, DetailView, GridView und ListView ... und fertig!
Weitergehende Anpassungen
Fast ohne Grenzen. DD passt sehr gut in's allgemeine ASP.NET ModellSie kennen bereits: FieldTemplates, PageTemplatesFehlendes 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öckeFiltern 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.ch NT Anwendergruppe Schweiz: www.nt-ag.ch PASS (Professional Association for SQL Server): www.sqlpass.ch
Save the date for tech·days next year!
7. – 8. April 2010Congress Center Basel
Classic Sponsoring Partners
Media Partner
Premium Sponsoring Partners