Gewusst wie: Anpassen des Layouts einer einzelnen Tabelle mit einer benutzerdefinierten Seitenvorlage
Aktualisiert: November 2007
Wenn Sie ASP.NET Dynamic Data verwenden, gibt es zwei allgemeine Ansätze zum Definieren benutzerdefinierter Vorlagen. Feldvorlagen können für feldspezifisches Verhalten und Seitenvorlagen können für tabellenspezifisches Verhalten angepasst werden.
Der erste Ansatz besteht darin, Datenfelder in einer Tabelle anzupassen, indem benutzerdefinierte Feldvorlagen erstellt werden. Anschließend erstellen Sie eine partielle Klasse, deren Name mit der Entitätsklasse übereinstimmt, die die Tabelle darstellt. In der partiellen Klasse können sie den Namen der für die Anzeige verwendeten benutzerdefinierten Feldvorlage mit dem UIHintAttribute-Attribut angeben. Weitere Informationen hierzu finden Sie unter Gewusst wie: Anpassen der Darstellung und des Verhaltens von Datenfeldern in einem Dynamic Data-Steuerelement.
Der zweite Ansatz besteht darin, einen Unterordner im Ordner DynamicData\CustomPages zu erstellen. Der Name des Unterordners stimmt mit dem Tabellenaccessor in der Datenkontextklasse der Tabelle überein, die Sie anpassen möchten. Anschließend erstellen Sie im Ordner eine benutzerdefinierte Seitenvorlage. In diesem Thema wird erläutert, wie Sie diesen zweiten Ansatz verwenden.
Die Standardseitenvorlagen können für alle Tabellen eingesetzt werden und verwenden keine schemaspezifischen Informationen. Sie können jedoch Schemainformationen verwenden, um bestimmte Felder anzuzeigen, wenn Sie benutzerdefinierte Seitenvorlagen für bestimmte Tabellen verwenden.
So erstellen Sie eine benutzerdefinierte Seitenvorlage
Stellen Sie sicher, dass der Gerüstbau aktiviert ist. Legen Sie in der Datei Global.asax die ContextConfiguration.ScaffoldAllTables-Eigenschaft in der MetaModelRegisterContext()-Methode auf true fest.
Das folgende Beispiel veranschaulicht die RegisterRoutes-Methode, die einen Aufruf zum Aktivieren des Gerüstbaus und zum Aktivieren der Listenaktion enthält.
Public Shared Sub RegisterRoutes(ByVal routes As RouteCollection) Dim model As New MetaModel model.RegisterContext(GetType(AdventureWorksLTDataContext), _ New ContextConfiguration() With {.ScaffoldAllTables = True}) routes.Add(New DynamicDataRoute("{table}/{action}.aspx") With { _ .Constraints = New RouteValueDictionary(New With _ {.Action = "List|Details|Edit|Insert"}), _ .Model = model}) End Sub
public static void RegisterRoutes(RouteCollection routes) { MetaModel model = new MetaModel(); model.RegisterContext(typeof(AdventureWorksLTDataContext), new ContextConfiguration() { ScaffoldAllTables = true }); routes.Add(new DynamicDataRoute("{table}/{action}.aspx") { Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }), Model = model }); }
Weitere Informationen zum Aktivieren des Gerüstbaus finden Sie unter Exemplarische Vorgehensweise: Erstellen einer neuen Dynamic Data-Website mithilfe des Gerüstbaus.
Erstellen Sie im Ordner DynamicData\CustomPages einen Unterordner. Verwenden Sie für den Ordnernamen die folgenden Richtlinien:
Wenn das Datenmodell auf LINQ to SQL basiert, verwenden Sie den Tabellennamen im Datenkontext als Ordnernamen. Um z. B. eine benutzerdefinierte Seite für die Tabelle Product in der Datenbank AdventureWorksLT zu erstellen, erstellen Sie das Verzeichnis DynamicData\CustomPages\Products.
Wenn das Datenmodell auf dem ADO.NET Entity Framework basiert, verwenden Sie den Tabellennamen im Objektkontext als Ordnernamen. Um z. B. eine benutzerdefinierte Seite für die Tabelle Product in der Datenbank AdventureWorksLT zu erstellen, erstellen Sie das Verzeichnis DynamicData\CustomPages\Product.
Kopieren Sie eine vorhandene Seitenvorlage aus dem Ordner DynamicData\PageTemplates in den Unterordner unter DynamicData\CustomPages, der den Namen des Tabellenaccessors hat.
Kopieren Sie z. B. DynamicData\PageTemplates\List.aspx in DynamicData\CustomPages\Products (für LINQ to SQL) oder in DynamicData\CustomPages\Product (für das Entity Framework).
Fügen Sie die Anpassungen der Seitenvorlage hinzu, die Sie im vorherigen Schritt kopiert haben.
Im folgenden Beispiel wird Markup für eine Überschrift veranschaulicht, die geändert wurde.
<h2> Custom Pages Demo <%= table.DisplayName%></h2>
Um die benutzerdefinierte Vorlage zu testen, navigieren Sie zur Tabelle in einem Browser und bestätigen, dass die Vorlage Ihre Änderungen enthält.
Navigieren Sie z. B. zur Tabelle Product. Sie sehen "Benutzerdefinierte Seiten - Demoprodukt" (LINQ to SQL) und "Benutzerdefinierte Seiten – Demoprodukt" (Entity Framework).
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Erstellen einer neuen Dynamic Data-Website mithilfe des Gerüstbaus
Konzepte
Übersicht über den ASP.NET Dynamic Data-Gerüstbau und Seitenvorlagen