Dieser Artikel wurde maschinell übersetzt.

ASP.NET Dynamic Data

Erstellen Sie eine datengesteuerte Unternehmenswebsite in fünf Minuten.

James e. Henry

Jahrelang haben Entwickler mit den mühsamen Aufgaben beim Erstellen von Datenschichten erstellen, lesen, aktualisieren und löschen (CRUD) Funktionen, die von der Benutzeroberfläche verwendet werden wrestled. Ich kann persönlich ein Projekt aus mehr als 10 Jahren, die mir, Code zu schreiben, die Unternehmen automatisch generiert und Datenschichten aus einem Rational Rose-Objektmodell zu merken. Es wurde viel Arbeit.

Ein paar Jahre später Microsoft eingeführt, Microsoft .NET Framework und das DataSet-Objekt. Mit dem DataSet-Designer können Sie ein stark typisiertes DataSet mit einem Back-End-Datenbank, wie z. B. SQL Server verbinden und dann mit dem DataSet in der gesamten Anwendung arbeiten. Dies minimiert die Notwendigkeit, die direkt mit SQL, aber es noch die manuelle Erstellung von Webseiten zum Anzeigen von Daten aus der Datenbank benötigt.

Schnellen Vorlauf ein paar weitere Jahre und Microsoft führte das Entity Framework. Dieses Framework Object Relational Mapping (ORM) verwendet LINQ, um ein Datenbankschema zu abstrahieren und zeigt Sie an eine Anwendung als konzeptionelles Schema. Wie das DataSet minimiert diese Technologie auch direkt mit SQL arbeiten müssen. Es muss jedoch immer noch die manuelle Erstellung von Webseiten zum Anzeigen von Daten.

Nachdem Microsoft ASP.NET Dynamic Data eingeführt hat – eine Kombination von Entity Framework und ASP.NET Routing –, so dass eine Anwendung auf URLs zu reagieren, die physisch nicht vorhanden. Mit diesen Features können Sie in wenigen Minuten eine Produktion einsetzbaren, datengesteuerte Website erstellen. In diesem Artikel werde ich Sie wie zeigen.

Erste Schritte

Um das Szenario einzurichten, let’s sagen ich eine Intranetwebsite für ein fiktives Unternehmen namens Adventure Works erstellt habe. Diese Website kann das Unternehmen die Mitarbeiterdaten verwalten.

Das Unternehmen Daten werden in einer Microsoft SQL Server 2008-Datenbank gespeichert. (Sie können downloaden und installieren Sie die Datenbank von msftdbprodsamples.codeplex.com-.)

Nun öffnen Sie Microsoft Visual Studio 2010, und erstellen Sie ein neues ASP.NET Dynamic Data Entities Website C#-Projekt.

Der Projekttyp Website für ASP.NET Dynamic Data Entities nutzt ASP.NET Routing und Entity Framework zum Erstellen datengesteuerter Websites ermöglicht. Um diese Funktionalität zu erhalten, müssen Sie ein Modell von Entity Framework Daten zum Projekt hinzuzufügen. Zu diesem Zweck wählen Sie Neues Element hinzufügen im Menü Website. Wählen Sie im Dialogfeld Neues Element hinzufügen ADO.NET Entity Data Model. Nennen Sie HumanResources.edmx.

Visual Studio fordert dann das Modell in den Ordner App_Code hinzufügen. Wählen Sie Ja aus, und erlauben Sie, diese Änderung vorzunehmen. Beim Erstellen von Website-Projekten kompiliert Visual Studio dynamisch Code, der im Ordner App_Code abgelegt wird. Im Fall von der Entity Data Model generiert Visual Studio automatisch eine partielle Klasse für den Datenkontext und partielle Klassen für die Entitäten. In diesem Beispiel wird den Code in einer Datei namens HumanResources.Designer.cs.

Als Nächstes der Entity Data Model-Assistent wird angezeigt, wie in der Abbildung 1 . Wählen Sie aus der Datenbank erstellen, und klicken Sie auf Weiter.

image: Starting the Entity Data Model Wizard

Abbildung 1 der Entity Data Model-Assistent wird gestartet.

Wählen Sie jetzt eine Verbindung mit der Adventure Works-Datenbank. Wenn bereits eine Verbindung vorhanden ist, müssen Sie eine neue zu erstellen. Abbildung 2 zeigt eine Verbindung zur AdventureWorks auf einer SQL Server-Instanz mit dem Namen Dev\BlueVision.

image: Configuring the Data Connection

Abbildung 2 Konfigurieren der Datenverbindung

Auf der nächsten Seite können Sie alle Tabellen im Personalwesen Schema auswählen. Der Name des Schemas wird in Klammern angezeigt. Abbildung 3 zeigt einige der Tabellen, die ausgewählt sind.

image: Selecting Tables for the Human Resources Schema in Visual Studio

Abbildung 3 Auswählen der Tabellen für das Personalwesen Schema in Visual Studio

Wenn Sie auf "Fertig stellen" klicken, generiert Visual Studio automatisch Entitäten aus den Tabellen, die Sie für das Projekt ausgewählt haben. Abbildung 4 enthält sieben Entitäten, die aus dem Datenbankschema Visual Studio generiert. Visual Studio verwendet die foreign Key-Einschränkungen in der Datenbank zum Erstellen von Beziehungen zwischen Entitäten. Eine 1: n-Beziehung mit der Entität JobCandidate, z. B. die Mitarbeiter Entität beteiligt. Dies bedeutet, dass ein Mitarbeiter ein Kandidat für mehrere Aufträge innerhalb des Unternehmens sein kann.

iamge: Entities Generated from Database Tables in Visual Studio

Abbildung 4 Entitäten aus Datenbanktabellen in Visual Studio erstellte

Beachten Sie außerdem, dass die Entität EmployeeDepartmentHistory Mitarbeiter und Abteilung Entitäten verknüpft. Die EmployeeDepartmentHistory Tabelle nur die Felder enthalten war, die für die Teilnahme an die Tabellen Employee und Abteilung erforderlich waren, würde Visual Studio einfach die Entität EmployeeDepartmentHistory weggelassen haben. Dies würde direkte Navigation zwischen den Entitäten Mitarbeiter und Abteilung zulässig sind.

Mithilfe von ASP.NET Routing

Routing von ASP.NET ermöglicht einer Anwendung auf URLs zu reagieren, die physisch nicht vorhanden sind. Wenn z. B. zwei URLs – http: / / MeineSite/Mitarbeiter und http://mysite/Department—could an einer Seite am http://mysite/Template.aspx geleitet werden. Die Seite selbst könnte dann Informationen aus dem URL, um festzustellen, ob eine Liste von Mitarbeitern oder eine Liste von Abteilungen, mit beiden Ansichten unter Verwendung der gleichen Vorlage für die Anzeige anzeigen extrahieren.

Eine Route ist einfach ein URL-Muster, das ein ASP.NET-HTTP-Handler zugeordnet ist. Ist der Handler zuständig, um zu bestimmen, wie die tatsächliche URL interpretierte Muster zugeordnet. ASP.NET Dynamic Data verwendet ein Routenhandler DynamicDataRouteHandler, die Platzhalter, die mit dem Namen {-Tabelle} und {Aktion} interpretiert Namens im URL-Muster. Beispielsweise könnte ein Handler dieser URL-Muster verwenden:

    http://mysite/{table}/{action}.aspx

Dieses Muster kann dann zum Interpretieren der URL http://mysite/Employee/List.aspx verwendet werden.

Mitarbeiter ist als des Platzhalters {-Tabelle} verarbeitet und die Liste wird als Platzhalter für die Aktion {'} ' verarbeitet. Der Handler könnte dann eine Liste der Mitarbeiter Entitätsinstanzen anzeigen. Mithilfe des Platzhalters {-Tabelle} DynamicDataRouteHandler bestimmt, der Name der Entität angezeigt, und der Aktion {'} '-Parameter verwendet, bestimmen die Seitenvorlage, die zum Anzeigen der Entität verwendet.

Die Datei Global.asax enthält eine statische Methode namens RegisterRoutes, die beim ersten der Anwendung starten aufgerufen wird wie im folgenden dargestellt:

public static void RegisterRoutes(RouteCollection routes) {
  // DefaultModel.RegisterContext(typeof(YourDataContextType), 
  //   new ContextConfiguration() { ScaffoldAllTables = false });
  routes.Add(new DynamicDataRoute("{table}/{action}.aspx") {
    Constraints = new RouteValueDictionary(
    new { action = "List|Details|Edit|Insert" }),
    Model = DefaultModel
  });
}

Als Erstes müssen Sie ist, heben Sie die Auskommentierung des Codes, der Methodenaufrufe RegisterContext DefaultModel-Instanz. Diese Methode registriert den Datenkontext Entity Framework für ASP.NET Dynamic Data. Sie müssen die Codezeile wie folgt ändern:

DefaultModel.RegisterContext(
    typeof(AdventureWorksModel.AdventureWorksEntities), 
    new ContextConfiguration() { ScaffoldAllTables = true });

Der erste Parameter gibt den Typ des Datenkontexts AdventureWorksEntities in diesem Beispiel ist. Die ScaffoldAllTables-Eigenschaft auf True festlegen, können Sie alle Entitäten auf der Website angezeigt werden. Sie diese Eigenschaft auf False festgelegt wurde, müssen Sie das Attribut ScaffoldTable(true) jede Entität zuweisen, die auf der Website angezeigt werden soll. (In der Praxis sollten Sie die ScaffoldAllTables-Eigenschaft auf False, um die versehentliche Gefährdung der gesamten Datenbank an Endbenutzer zu verhindern, dass festlegen.)

Die Add-Methode der RouteCollection-Klasse fügt eine neue Instanz der Route zu der Routentabelle hinzu. Mit ASP.NET Dynamic Data ist die Route-Instanz tatsächlich eine DynamicDataRoute-Instanz. Intern verwendet die Klasse DynamicDataRoute DynamicDataRouteHandler als seinen Ereignishandler. Der an den Konstruktor des DynamicDataRoute übergebene Parameter stellt das Muster, das der Ereignishandler verwenden soll, um physische URLs verarbeitet. Zur Beschränkung der Aktion {'} ' Werte, Liste, Details, bearbeiten oder einfügen, wird auch eine Einschränkung festgelegt.

Theoretisch ist dies müssen Sie tun, um ASP.NET Dynamic Data verwenden. Wenn Sie zu erstellen, führen Sie die Anwendung sollte im Abbildung 5 angezeigte Seite angezeigt werden.

image: A Basic ASP.NET Dynamic Data Site

Abbildung 5 A Basic ASP.NET Dynamic Data-Site

Unterstützung von Metadaten

Was Sie feststellen sollten, dass ist, dass die Entitätsnamen der für die Tabellennamen identisch sind, die Sie darstellen. Im Code und in der Datenbank möglicherweise kein Problem, jedoch in der Regel ist dies nicht in der Benutzeroberfläche der Fall.

ASP.NET Dynamic Data makes it easy to change the name of a displayed entity by applying the DisplayName attribute to the class that represents that entity. Da die Entitätsklassen in einer Datei enthalten sind, die von Visual Studio automatisch neu generiert wird, sollten Sie mit partiellen Klassen in einer separaten Codedatei Codeänderungen vornehmen. Fügen Sie daher eine neue Codedatei mit dem Namen Metadata.cs in den Ordner App_Code. Fügen Sie dann den folgenden Code in die Datei:

using System;
  using System.Web;
  using System.ComponentModel;
  using System.ComponentModel.DataAnnotations;

  namespace AdventureWorksModel {
    [DisplayName("Employee Addresses")]
    public partial class EmployeeAddress { }
  }

Anschließend neu zu erstellen Sie, und führen Sie die Anwendung. Stellen Sie fest, dass EmployeeAddresses jetzt Mitarbeiter-Adressen ist.

Auf ähnliche Weise können Sie die Namen der EmployeeDepartmentHistories, EmployeePayHistories und JobCandidates um geeignetere Namen ändern.

Klicken Sie anschließend auf den Link Schichten. Dies zeigt eine Liste der Mitarbeiter Schichten. Ich werde die Namen Startzeit und Endzeit, Startzeit und Endzeit, bzw. ändern.

Ein weiteres Problem ist, dass die Startzeit und Endzeit Werte sowohl das Datum und die Uhrzeit angezeigt. In diesem Kontext, der Benutzer muss eigentlich nur die Zeit angezeigt, damit ich der Startzeit formatieren und Endzeit, Werte damit Sie nur die Uhrzeit angezeigt. Ein Attribut mit dem Namen Datentyp können Sie einen spezifischeren Datentyp für ein Feld wie z. B. EmailAddress oder Zeit angeben. Das DataType-Attribut wird angewendet, auf das Feld, auf das es angewendet wird.

Zunächst öffnen Sie die Datei Metadata.cs und zufügen Sie die folgenden Klassendefinitionen hinzu:

[MetadataType(typeof(ShiftMetadata))]
public partial class Shift { }
public partial class ShiftMetadata { }

Beachten Sie, dass der Shift-Klasse ein Attribut mit dem Namen MetadataType angewendet wird. Dieses Attribut können Sie eine separate Klasse definieren, die zusätzliche Metadaten für eine Entität Felder enthält. Zusätzliche Metadaten können nicht direkt auf die Member der Klasse UMSCHALT angewendet werden, weil die gleichen Klassenmember auf mehr als eine partielle Klasse hinzugefügt werden kann. Die Shift-Klasse HumanResources.Designer.cs bereits definiert hat z. B. eine Feld mit dem Namen "StartTime". Sie können nicht so das gleiche Feld im Metadata.cs definierte Shift-Klasse hinzufügen. Sie sollten nicht HumanResources.Designer.cs auch manuell ändern, da die Datei von Visual Studio neu generiert.

Das Attribut MetadataType können Sie eine völlig andere Klasse angeben, sodass Sie Metadaten für ein Feld übernehmen können. Fügen Sie den folgenden Code, um die ShiftMetadata-Klasse:

[DataType(DataType.Time)]
  [Display(Name = "Start Time")]
  public DateTime StartTime { get; set; }

DataType-Attribut gibt den Wert Uhrzeit aufgelistet, um anzugeben, dass das Feld "StartTime" als einen Zeitwert formatiert werden sollen. Andere aufgezählten Werte enthalten, Telefonnummer, Kennwort, Währung und EmailAddress, um nur einige zu nennen. Das Anzeige-Attribut gibt den Text, der als Spalte für das Feld angezeigt werden soll, wenn das Feld in einer Liste als auch im Feld Beschriftung angezeigt wird, wenn Sie im Bearbeitungsmodus oder nur-Lese-Modus angezeigt wird.

Neu erstellen Sie, und führen Sie die Anwendung. Abbildung 6 zeigt das Ergebnis auf den Link Schichten.

image: Revised Shifts Page Using MetadataType Definitions

Abbildung 6 überarbeitet Umschalttasten-Seite mithilfe von Definitionen MetadataType

Sie können ähnlichen Code zum Ändern der Darstellung des Feldes Endzeit hinzufügen.

Jetzt let’s werfen Sie einen Blick auf die Verknüpfung JobCandidates. Die Mitarbeiter-Spalte enthält Werte für das Feld NationalIDNumber. Dies könnte nicht hilfreich sein. Zwar die Tabelle Employee Datenbank ein Feld für den Namen des Mitarbeiters, verfügt er ein Feld für die Anmeldung des Mitarbeiters, der Benutzername ist. In diesem Feld kann nützlichen Informationen an einen Benutzer von dieser Site bereitgestellt.

Zu diesem Zweck werde ich den Metadaten-Code erneut ändern, so dass Spalten für alle Mitarbeiter der Wert im Feld Benutzername angezeigt. Öffnen Sie die Datei Metadata.cs, und fügen Sie die folgende Klassendefinition für die:

[DisplayColumn("LoginID")]
public partial class Employee { }

DisplayColumn-Attribut gibt den Namen des Felds aus einer Entität, die zur Darstellung von Instanzen dieser Entität verwendet werden soll. Abbildung 7 zeigt die neue Liste mit LoginIDs.

image: Identifying Employees with LoginIDs

Abbildung 7 Identifizieren Sie Personal mit LoginIDs

Am Rande: Attribut-Änderungen in .NET Framework 4

Mit Microsoft .NET Framework 4 starten, empfehlen wir, das Display-Attribut zu, anstatt das DisplayName-Attribut von .NET Framework 3.5 verwenden. DisplayName ist offensichtlich noch im Framework, aber wir empfehlen, bei jedem anzeigen-Attribut verwendet werden kann.

Es gibt zwei Gründe für die Anzeige anstelle von "DisplayName" bevorzugen. Erstens unterstützt das Attribut Display Lokalisierung das DisplayName-Attribut jedoch nicht.

Zweitens ermöglicht das Attribut anzeigen alle Arten von Aktionen zu steuern. Beispielsweise können Sie den Text steuern für die verschiedenen Möglichkeiten, ein Feld kann sein (Eingabeaufforderung Kopfzeile, sodass auf), angezeigt, ob ein Feld als Filter angezeigt wird, oder ob das Feld in der Gerüstansicht angezeigt wird (AutoGenerate = False wird deaktiviert).

Also während der in den Beispielen in diesem Artikel gezeigte Code vollständig gültig ist, empfehlen wir, dass Sie mit dem Display-Attribut DisplayName und ScaffoldColumn ersetzen. Sie müssen dennoch ScaffoldTable und das DisplayName-Attribut auf Klassenebene verwenden.

Es empfiehlt sich, befolgen dieser Empfehlungen, da andere Teams bei Microsoft den DataAnnotations-Namespace (WCF-Diensten RIA unterstützen) und folgen dieser Verfahren wird sicherstellen, dass mit diesen Code funktioniert.

Das Feld KontaktID der Employee-Entität bezieht sich tatsächlich auf eine Zeile in der Tabelle "Kontakt", der Teil der Person Schema in der Datenbank ist. Da ich keine Tabellen aus dem Schema Person hinzugefügt haben, können in Visual Studio für das direkte Bearbeiten des Feldes KontaktID. Relationale Integrität erzwungen wird, werde ich verhindern, dass dieses Feldes bearbeiten, während dennoch er zu Referenzzwecken angezeigt werden. Öffnen Sie die Datei Metadata.cs, und ändern Sie die Employee-Klasse durch die Anwendung des Attributs MetadataType:

[DisplayColumn("LoginID")]
[MetadataType(typeof(EmployeeMetadata))]
public partial class Employee { }

Dann definieren Sie die EmployeeMetadata-Klasse wie folgt:

public partial class EmployeeMetadata {
  [Editable(false)]
  public int ContactID { get; set; }
}

Das bearbeitbare-Attribut gibt unabhängig davon, ob ein Feld in der Benutzeroberfläche bearbeitet werden kann.

Anschließend werde ich Metadaten hinzufügen, um die EmployeePayHistory Entität, die das Feld als Stundensatz anzeigen sowie den Wert des Felds als Währung formatieren. Fügen Sie die folgenden Klassendefinitionen Metadata.cs die Datei:

[MetadataType(typeof(EmployeePayHistoryMetadata))]
public partial class EmployeePayHistory { }
public partial class EmployeePayHistoryMetadata {
  [DisplayFormat(DataFormatString="{0:c}")]
  [Display(Name = "Hourly Rate")]
  public decimal Rate { get; set; }
}

Anpassen von Vorlagen

Visual Studio-Projekt enthält einen Ordner namens FieldTemplates. Dieser Ordner enthält die Benutzersteuerelemente für die Bearbeitung von Feldern verschiedener Datentypen. Standardmäßig ordnet ASP.NET Dynamic Data ein Benutzersteuerelement, das denselben Namen hat wie das Feld Datentyp zusammenhängen, die ein Feld. Das Benutzersteuerelement Boolean.ascx enthält z. B. die Benutzeroberfläche für das boolesche Felder anzeigen, während das Benutzersteuerelement Boolean_Edit.ascx die Benutzeroberfläche für die Bearbeitung der boolesche Felder enthält.

Alternativ können Sie das Attribut UIHint anwenden, an ein Feld, um sicherzustellen, dass ein anderes Benutzersteuerelement verwendet wird. Ich werde eine benutzerdefinierte Feldvorlage ein Calendar-Steuerelement zum Bearbeiten der Employee-Entität BirthDate Feldes anzeigen hinzufügen.

In Visual Studio dem Projekt fügen Sie ein neues Dynamic Data Field-Element hinzu, und nennen Sie Sie Date.ascx. Visual Studio fügt automatisch eine zweite Datei mit dem Namen Date_Edit.ascx FieldTemplates Ordner. Ich werde zunächst den Inhalt der Seite Date_Edit.ascx durch das folgende Markup ersetzen:

<asp:Calendar ID="DateCalendar" runat="server"></asp:Calendar>

Ich werde die Date_Edit.ascx.cs-Datei anschließend mit der vollständige Klassendefinition in Abbildung 8 dargestellt ändern.

Abbildung 8 benutzerdefinierten Date_EditField Klasse

public partial class Date_EditField : System.Web.DynamicData.FieldTemplateUserControl {
  protected void Page_Load(object sender, EventArgs e) {
    DateCalendar.ToolTip = Column.Description;
  }

  protected override void OnDataBinding(EventArgs e) {
    base.OnDataBinding(e);

    if (Mode == DataBoundControlMode.Edit && 
        FieldValue != null) {
      DateTime date = DateTime.MinValue;
      DateTime.TryParse(FieldValue.ToString(), out date);
      DateCalendar.SelectedDate = 
        DateCalendar.VisibleDate = date;
    }
  }
    
  protected override void ExtractValues(
    IOrderedDictionary dictionary) {
    dictionary[Column.Name] = ConvertEditedValue(
      DateCalendar.SelectedDate.ToShortDateString());
  }

  public override Control DataControl {
    get {
      return DateCalendar;
    }
  }
}

I override the OnDataBinding method to set the SelectedDate and VisibleDate properties of the Calendar control to the value of the FieldValue field. Das Feld FieldValue von FieldTemplateUserControl geerbt wird, und den Wert des Datenfelds wiedergegebene darstellt. I also modify the ExtractValues overridden method to save any changes to the SelectedDate property to a dictionary of field name-value pairs. ASP.NET Dynamic Data verwendet die Werte in diesem Wörterbuch die zugrunde liegenden Datenquelle zu aktualisieren.

Als Nächstes muss ASP.NET Dynamic Data Feldvorlagen Date.ascx und Date_Edit.ascx für das Feld Geburtstag verwenden informieren. Ich erreichen dies auf zwei Arten. Zunächst das Attribut UIHint werden wie folgt anwenden:

[UIHint("Date")]
public DateTime BirthDate { get; set; }

Alternatively, I can apply the DateType attribute as follows:

[DataType(DataType.Date)]
public DateTime BirthDate { get; set; }

Das DataType-Attribut stellt automatische Zuordnung durch Vergleichen der Datentypname auf den Namen des Benutzersteuerelements. Das Attribut UIHint ermöglicht eine bessere Kontrolle in Situationen, in denen der Feldtyp nicht den Namen des Benutzersteuerelements entspricht. Abbildung 9 zeigt das Ergebnis der Bearbeitung eines Mitarbeiters.

image: Customized Employee Edit Form

Abbildung 9 benutzerdefinierten Mitarbeiter Edit Form

Wenn Sie das Geburtsdatum des ausgewählten Mitarbeiters zu ändern, und klicken Sie auf aktualisieren, werden die neuen Daten in der Datenbank gespeichert.

PageTemplates Seitenvorlagen enthält, die die entsprechenden Ansichten für Entitäten zu rendern. In der Standardeinstellung werden fünf Seitenvorlagen unterstützt: List.aspx, Edit.aspx, Details.aspx, Insert.aspx und ListDetails.aspx. Die Seitenvorlage List.aspx rendert eine Benutzeroberfläche für die Anzeige von Entitäten als Tabellendaten. Die Seitenvorlage Details.aspx rendert eine schreibgeschützte Ansicht einer Entität während die Seitenvorlage Edit.aspx eine bearbeitbare Ansicht einer Entität angezeigt. Die Seite Insert.aspx rendert einen bearbeitbaren Ansicht mit Standard-Feldwerte. Die Seitenvorlage ListDetails.aspx können Sie eine Liste der Entitäten sowie Details für die ausgewählte Entität auf einer einzigen Seite anzeigen.

Wie weiter oben im Artikel bereits erwähnt, leitet ASP.NET Dynamic Data URL-Anforderungen auf die entsprechende Seite durch untersuchen den Wert des Parameters {Aktion} für den Arbeitsplan definiert. Beispielsweise wenn einen {Aktion} Parameter als Liste von ASP.NET Dynamic Data ausgewertet wird, wird die Seitenvorlage List.aspx zum Anzeigen einer Liste von Entitäten. Ändern die vorhandene Seitenvorlagen, oder fügen Sie einen neuen Ordner. Wenn Sie eine neue Datei hinzufügen, müssen Sie sicherstellen, dass Sie es in der Datei Global.asax der Routentabelle hinzufügen.

Die EntityTemplates zum Anzeigen von Entitätsinstanzen im Nur-Lese-Vorlagen enthält, bearbeiten und Modi einfügen. Dieser Ordner enthält standardmäßig drei Vorlagen Default.ascx, Default_Edit.ascx und Default_Insert.ascx, die Entitätsinstanzen der im Nur-Lese-anzeigen, bearbeiten und Einfügemodus. Um nur für eine bestimmte Entität gilt eine Vorlage zu erstellen, fügen Sie ein neues Benutzersteuerelement zum Ordner und ihm den Namen der Entität 
set. Wenn Sie ein neues Benutzersteuerelement mit dem Namen des Ordners Shifts.ascx hinzufügen, verwendet ASP.NET Dynamic Data dieses Benutzersteuerelement z. B. um den Nur-Lese-Modus für eine Entität UMSCHALT (Schichten Entität festgelegt) zu rendern. In ähnlicher Weise Shifts_Edit.ascx Shifts_Insert.ascx Rendern die Bearbeitung und Modi der Shift-Entität bzw. einfügen.

Für jede Liste von Entitäten verwendet ASP.NET Dynamic Data Fremdschlüsselfelder, boolesche Felder und Felder für die Enumeration der Entität, um eine Filterliste zu erstellen. Die Filter werden als DropDown-Steuerelemente auf der Listenseite hinzugefügt, wie in Abbildung 10 .

image: Including Data Filters on the Page

Abbildung 10 Data-Filter auf der Seite einschließlich

Für boolesche Filter enthält das DropDownList-Steuerelement einfach drei Werte: Alle, True und false. Enumeration-Filter enthält das DropDownList-Steuerelement alle aufgelisteten Werte. Für foreign Key-Filter enthält das DropDownList-Steuerelement alle unterschiedlichen Fremdschlüsselwerte. Die Filter werden als Benutzersteuerelemente im Ordner Filter definiert. Standardmäßig gibt es nur drei Steuerelemente: Boolean.ascx Enumeration.ascx und ForeignKey.ascx.

Veröffentlichen Sie!

Obwohl dies ein fiktives Szenario war, haben Sie gesehen, dass es durchaus möglich, erstellen Sie eine voll funktionstüchtig Personalwesen-Website in ein paar Minuten ist. Ich verlaufen dann die Benutzeroberfläche verbessern, indem Sie Metadaten und eine Vorlage für benutzerdefiniertes Feld hinzufügen.

ASP.NET Dynamic Data bietet Out of Box-Funktion, um eine Website einrichten und schnell in Betrieb nehmen können. Es ist jedoch auch vollständig anpassbar, ermöglicht es die Anforderungen der einzelnen Entwickler und Unternehmen. ASP.NET Dynamic Data-Unterstützung für das Routing von ASP.NET können Sie Wiederverwenden von Seitenvorlagen für CRUD-Operationen. Sie müssen ständig die mühsame CRUD-Seiten auf jeder Webanwendungsprojekt implementieren Aufgaben eines frustriert angezeigt haben, sollten Sie dann ASP.NET Dynamic Data Ihr Leben entscheidend vereinfachen.

James Henry ist ein unabhängiger Softwareentwickler für BlueVision LLC, einem Unternehmen, das sich auf Microsoft-Technologien spezialisiert hat Beratung. Er ist Autor von “ Entwickeln von Business Intelligence-Lösungen mithilfe von Information Bridge und Visual Studio .NET ” (blauer Vision, 2005) und “ Entwickeln von .NET benutzerdefinierte Steuerelemente und Designer mithilfe von c# ” (blauer Vision, 2003). Er kann unter msdnmag@bluevisionsoftware.com-erreicht werden.

Dank an den folgenden technischen Experten für die Überprüfung der in diesem Artikel: Scott Hunter