21
RAD Web Applications with ASP.NET Dynamic Data Ingo Rammer [email protected] thinktecture

RAD Web Applications with ASP.NET Dynamic Data

Embed Size (px)

DESCRIPTION

RAD Web Applications with ASP.NET Dynamic Data. Ingo Rammer [email protected] 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 - PowerPoint PPT Presentation

Citation preview

Page 1: RAD Web Applications with ASP.NET Dynamic Data

RAD Web Applications withASP.NET Dynamic DataIngo [email protected]

Page 2: RAD Web Applications with ASP.NET Dynamic Data

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]

Page 3: RAD Web Applications with ASP.NET Dynamic Data

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

Page 4: RAD Web Applications with ASP.NET Dynamic Data

Anpassbares Scaffolding

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

Page 5: RAD Web Applications with ASP.NET Dynamic Data

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)

Page 6: RAD Web Applications with ASP.NET Dynamic Data

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 });

Page 7: RAD Web Applications with ASP.NET Dynamic Data

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"});

Page 8: RAD Web Applications with ASP.NET Dynamic Data

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;}

Page 9: RAD Web Applications with ASP.NET Dynamic Data

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

Page 10: RAD Web Applications with ASP.NET Dynamic Data

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)

Page 11: RAD Web Applications with ASP.NET Dynamic Data

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>

Page 12: RAD Web Applications with ASP.NET Dynamic Data

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

Page 13: RAD Web Applications with ASP.NET Dynamic Data

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

Page 14: RAD Web Applications with ASP.NET Dynamic Data

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!

Page 15: RAD Web Applications with ASP.NET Dynamic Data

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

Page 16: RAD Web Applications with ASP.NET Dynamic Data

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)

Page 17: RAD Web Applications with ASP.NET Dynamic Data

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

Page 18: RAD Web Applications with ASP.NET Dynamic Data

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

Page 19: RAD Web Applications with ASP.NET Dynamic Data

Save the date for tech·days next year!

7. – 8. April 2010Congress Center Basel

Page 20: RAD Web Applications with ASP.NET Dynamic Data

Classic Sponsoring Partners

Media Partner

Premium Sponsoring Partners

Page 21: RAD Web Applications with ASP.NET Dynamic Data