Erkunden des Razor Pages-Projekts

Abgeschlossen

In dieser Lerneinheit verwenden Sie die .NET-CLI zum Kompilieren und Ausführen einer Web-API. Sie erkunden die laufende App, um die von ihr gebotene Benutzeroberfläche zu verstehen.

Überprüfen des Projekts

Das RazorPagesPizza-Projektverzeichnis ist derzeit im Visual Studio Code-Editor geöffnet. In der folgenden Tabelle werden wichtige Projektdateien und Verzeichnisse erläutert. Sehen Sie sich diese im Fenster des Visual Studio Code-Editors genauer an.

Name BESCHREIBUNG
Pages/ Enthält die Razor-Seiten und Hilfsdateien. Jede Razor-Seite besteht aus zwei Dateien:
* Eine .cshtml-Datei, die Markup und C#-Code enthält und die Razor-Syntax nutzt.
* Eine .cshtml.csPageModel-Klassendatei, die Seitenhandlermethoden und Daten definiert, die zum Rendern der Seite verwendet werden.
wwwroot/ Enthält statische Ressourcendateien, z. B. HTML, JavaScript und CSS.
RazorPagesPizza.csproj Enthält Konfigurationsmetadaten wie Abhängigkeiten für das Projekt.
Program.cs Dient als verwalteter Einstiegspunkt der App und konfiguriert das App-Verhalten, z. B. Routing zwischen Seiten.

Dateien für Razor-Seiten und zugehörige PageModel-Klassendatei

Laut Konvention werden im Verzeichnis Pages alle Razor Pages in einer ASP.NET Core-App gespeichert und verwaltet.

Als Erweiterung für Razor-Dateien wird .cshtml verwendet. Für die zugehörige C#-Klassendatei PageModel wird konventionsgemäß derselbe Name verwendet, wobei jedoch .cs angefügt wird. Die Razor-Seite Index.cshtml verfügt beispielsweise über eine zugehörige PageModel-Klassendatei für Index.cshtml.cs.

Ein Modellobjekt definiert Dateneigenschaften und umfasst die Logik oder die Vorgänge, die mit diesen Dateneigenschaften in Verbindung stehen. Ein PageModel hat prinzipiell dieselbe Aufgabe. Der Gültigkeitsbereich der Dateneigenschaften und Logikvorgänge für das Modell beschränkt sich jedoch auf die zugehörige Razor-Seite. Die PageModel-Klasse:

  • Das Trennen der Logik einer Razor-Seite von ihrer Darstellung
  • Das Definieren von Seitenhandlern für Anforderungen, die an die Seite gesendet werden, und für Daten, die zum Rendern der Seite genutzt werden

Ein Seitenhandler ist die Methode, die als Ergebnis einer HTTP-Anforderung ausgeführt wird. Eine OnGet-Methode in der PageModel-Klasse der Razor-Seite wird z. B. bei einer HTTP GET-Anforderung automatisch ausgeführt.

Das Verzeichnis Pages/Shared

Markupteilelemente, die auf mehreren Razor-Seiten gemeinsam verwendet werden, befinden sich konventionsgemäß im Verzeichnis Pages/Shared. In der RazorPagesPizza-App werden zwei gemeinsam genutzte Teilansichten verwendet, die beim Erstellen eines neuen ASP.NET Core Web-Application-Projekts inbegriffen sind:

  • _Layout.cshtml: Stellt allgemeine Layoutelemente für mehrere Seiten bereit.
  • _ValidationScriptsPartial.cshtml: Stellt Validierungsfunktionen bereit, mit denen sich beispielsweise Formulareingaben clientseitig überprüfen oder CSRF-Angriffe abwehren lassen. Diese Teilansicht ist für alle Seiten im Projekt verfügbar.

Dateien für Layouts und Teilansichten

  • Layouts: Diese bestehen in ASP.NET Core aus .cshtml-Dateien, in denen eine übergeordnete Vorlage für App-Ansichten definiert wird. Für Apps ist kein Layout erforderlich. Sie können allerdings mehrere Layouts mit unterschiedlichen Ansichten aufweisen. Die meisten Web-Apps verfügen über ein gemeinsames Layout, das eine einheitliche Benutzeroberfläche gewährleistet. Das Layout umfasst in der Regel gängige Benutzeroberflächenelemente wie die Kopf- und Fußzeile sowie Navigations- oder Menüelemente. Oft verwendete HTML-Strukturen wie Skripts und Stylesheets werden auch häufig von vielen Seiten in einer App genutzt. Alle diese gemeinsam verwendeten Elemente können in einer Layoutdatei definiert werden, auf die anschließend jede App-Ansicht verweisen kann. Layouts verringern Codeduplikate in Ansichten.

  • Teilansicht: Eine Teilansicht ist eine Razor-Markupdatei (.cshtml), die die HTML-Ausgabe innerhalb der gerenderten Ausgabe einer anderen Markupdatei rendert. Teilansichten werden verwendet, um große Markupdateien in kleinere Komponenten zu zerlegen. Außerdem werden durch sie Duplikate häufig verwendeter Markupinhalte in Markupdateien vermieden. Teilansichten werden nicht zur Verwaltung gemeinsam verwendeter Layoutelemente genutzt. Gängige Layoutelemente werden in einer _Layout.cshtml-Datei angegeben.

Layouts und Teilansichten werden in diesem Modul nicht behandelt. Am Ende des Moduls finden Sie Links zu Inhalten, die ausführlichere Informationen zu den hier genannten Features und Konzepten bieten.

Die Struktur des Verzeichnisses Pages und Routing von Anforderungen

Razor Pages verwendet konventionsgemäß die Verzeichnisstruktur im Verzeichnis Pages für das Standardrouting von Anforderungen. Im Stammverzeichnis des Pages-Verzeichnisses befindet sich beispielsweise die Indexseite. Dabei handelt es sich um die Standardseite für die Website der App. Im Verzeichnis Pages/Products des Projekts RazorPagesPizza finden Sie eine Sammlung von Razor-Seiten, einschließlich einer Seite Index.cshtml. Anforderungen, die an /Product/ geleitet werden, werden beispielsweise angewiesen, die Standardseite Index.cshtml zu verwenden, die sich physisch unter Products/Index.cshtml befindet. Die Razor-Seiten des Projekts (.cshtml) und die begleitenden PageModel-Klassen (.cshtml.cs) sind bequem in Pages/Products gruppiert. Alle übergebenen Parameterwerte für Routen werden über eine Eigenschaft zugänglich gemacht. ASP.NET Core stellt stabile Routingfeatures bereit.

Die folgende Tabelle enthält die Routen, die im abgeschlossenen Projekt dieses Moduls verwendet werden können.

URL Zugeordnete Razor-Seite
www.domain.com Pages/Index.cshtml
www.domain.com/index Pages/Index.cshtml
www.domain.com/products Pages/Products/Index.cshtml
www.domain.com/products/create Pages/Products/Create.cshtml

Überprüfen Sie Ihr Wissen

1.

Welche Aussage beschreibt ein PageModel am besten?