Übung: Anpassen des Projekts
Ihr Team hat die Arbeit für die Pizzasortenverwaltungs-App aufgeteilt. Ihre Teamkolleg*innen haben bereits die ASP.NET Core-Web-App sowie einen Dienst zum Anzeigen von Pizzasorten sowie Hinzufügen neuer Daten zu einer Datenbank erstellt. Sie sollen sich um die Pizza List-Seite kümmern, auf der eine Liste der Pizzas angezeigt wird und die das Hinzufügen neuer Pizzas zur Datenbank ermöglicht. Wir machen uns zunächst mit dem Ablauf des Projekts vertraut.
Hinweis
In diesem Modul wird die .NET-CLI (Befehlszeilenschnittstelle) und Visual Studio Code für die lokale Entwicklung verwendet. Nach Abschluss dieses Moduls können Sie die Konzepte mit Visual Studio (Windows) oder bei der Weiterentwicklung mit Visual Studio Code (Windows, Linux und macOS) anwenden.
Abrufen der Projektdateien
Wenn Sie GitHub Codespaces verwenden, öffnen Sie einfach das Repository im Browser, wählen Sie Code aus, und erstellen Sie dann einen neuen Codespace im Branch main
.
Wenn Sie GitHub Codespaces nicht verwenden, rufen Sie die Projektdateien ab, und öffnen Sie sie in Visual Studio Code mit den folgenden Schritten:
Öffnen Sie eine Befehlsshell, und klonen Sie das Projekt aus GitHub mithilfe der Befehlszeile:
git clone https://github.com/MicrosoftDocs/mslearn-create-razor-pages-aspnet-core
Navigieren Sie zum Verzeichnis
mslearn-create-razor-pages-aspnet-core
, und öffnen Sie das Projekt in Visual Studio Code:cd mslearn-create-razor-pages-aspnet-core code .
Tipp
Wenn Sie eine kompatible Containerruntime installiert haben, können Sie die Erweiterung Dev Containers verwenden, um das Repository in einem Container mit vorinstallierten Tools zu öffnen.
Überprüfen der Arbeit Ihrer Teamkollegen
Nehmen Sie sich einen Moment Zeit, um sich mit dem vorhandenen Code im Ordner „ContosoPizza“ vertraut zu machen. Das Projekt ist eine ASP.NET Core-Web-App, die mit dem Befehl dotnet new webapp
erstellt wurde. Die Änderungen Ihrer Teamkollegen werden unten beschrieben.
Tipp
Wenden Sie nicht zu viel Zeit für die Überprüfung dieser Änderungen auf. Ihre Teamkollegen haben bereits die Datenbank und den Dienst zum Anzeigen und Hinzufügen von Pizzasorten zur Datenbank erstellt, aber sie haben keine Änderungen an der Benutzeroberfläche vorgenommen. In der nächsten Lerneinheit erstellen Sie eine Benutzeroberfläche, die ihren Dienst nutzt.
- Dem Projekt wurde der Ordner Models hinzugefügt.
- Der Ordner „Models“ enthält eine
Pizza
-Klasse, die eine Pizza darstellt.
- Der Ordner „Models“ enthält eine
- Dem Projekt wurde der Ordner Data hinzugefügt.
- Der Ordner „Data“ enthält eine
PizzaContext
-Klasse, die den Datenbankkontext darstellt. Sie erbt von derDbContext
-Klasse in Entity Framework Core. Entity Framework Core ist ein objektrelationaler Mapper (ORM), der die Arbeit mit Datenbanken vereinfacht.
- Der Ordner „Data“ enthält eine
- Dem Projekt wurde der Ordner Services hinzugefügt.
- Der Ordner „Services“ enthält eine
PizzaService
-Klasse, die Methoden zum Anzeigen und Hinzufügen von Pizzas verfügbar macht. - Die
PizzaService
-Klasse verwendet diePizzaContext
-Klasse zum Anzeigen und Hinzufügen von Pizzasorten zur Datenbank. - Die Klasse wird für die Abhängigkeitsinjektion in Program.cs (Zeile 10) registriert.
- Der Ordner „Services“ enthält eine
Entity Framework Core hat auch einige Elemente generiert:
- Der Ordner Migrations wurde generiert.
- Der Ordner „Migrations“ enthält Code zum Erstellen des Datenbankschemas.
- Die SQLite-Datenbankdatei ContosoPizza.db wurde generiert.
- Wenn Sie die SQLite-Erweiterung installiert haben (oder GitHub Codespaces verwenden), können Sie die Datenbank anzeigen, indem Sie mit der rechten Maustaste auf die Datei klicken und Datenbank öffnen auswählen. Das Datenbankschema wird im Bereich „Explorer“ auf der Registerkarte SQLite Explorer angezeigt.
Überprüfen der Razor Pages-Projektstruktur
Alle anderen Komponenten des Projekts wurden seit der Erstellung nicht geändert. In der folgenden Tabelle wird die Projektstruktur beschrieben, die vom Befehl dotnet new webapp
generiert wurde.
Name | Beschreibung |
---|---|
Pages/ | Enthält die Razor-Seiten und Hilfsdateien. Jede Razor-Seite umfasst eine .cshtml-Datei und eine .cshtml.cs-PageModel -Klassendatei. |
wwwroot/ | Dieses Element enthält statische Ressourcendateien (z. B. HTML, JavaScript und CSS). |
ContosoPizza.csproj | Dieses Element enthält Projektkonfigurationsmetadaten (z. B. Abhängigkeiten). |
Program.cs | Dieses Element dient als Einstiegspunkt der App und konfiguriert das App-Verhalten (z. B. Routing). |
Weitere bemerkenswerte Beobachtungen:
Dateien für Razor-Seiten und zugehörige
PageModel
-KlassendateiRazor-Seiten werden Pages-Verzeichnis gespeichert. Wie zuvor erwähnt umfasst jede Razor-Seite eine .cshtml-Datei und eine .cshtml.cs-
PageModel
-Klassendatei. DiePageModel
-Klasse ermöglicht die Trennung von Logik und Darstellung einer Razor-Seite, definiert Seitenhandler für Anforderungen und kapselt Dateneigenschaften und Logik, die auf die Razor-Seite ausgerichtet sind.Pages--Verzeichnisstruktur und Routinganforderungen
Razor Pages verwendet die Pages-Verzeichnisstruktur als Konvention für Routinganforderungen. Die folgende Tabelle zeigt, wie URLs Dateinamen zugeordnet werden:
URL Zuordnung zu Razor-Seite www.domain.com
Pages/Index.cshtml www.domain.com/Index
Pages/Index.cshtml www.domain.com/Privacy
Pages/Privacy.cshtml www.domain.com/Error
Pages/Error.cshtml Unterordner im Pages-Verzeichnis werden verwendet, um Razor-Seiten zu organisieren. Wenn beispielsweise ein Pages/Products-Verzeichnis vorhanden ist, würden die URLs diese Struktur widerspiegeln:
URL Zuordnung zu Razor-Seite www.domain.com/Products
Pages/Products/Index.cshtml www.domain.com/Products/Index
Pages/Products/Index.cshtml www.domain.com/Products/Create
Pages/Products/Create.cshtml Layout und andere freigegebene Dateien
Es gibt einige Dateien, die auf mehreren Seiten verwendet werden. Diese Dateien bestimmen gängige Layoutelemente und Seitenimporte. In der folgenden Tabelle ist der Zweck der einzelnen Dateien beschrieben.
Datei Beschreibung _ViewImports.cshtml Diese Datei importiert Namespaces und Klassen, die auf mehreren Seiten verwendet werden. _ViewStart.cshtml Hiermit wird das Standardlayout für alle Razor-Seiten angegeben. Pages/Shared/_Layout.cshtml Dies ist das Layout, das durch die _ViewStart.cshtml
-Datei festgelegt wird. Diese Komponente implementiert allgemeine Layoutelemente für mehrere Seiten.Pages/Shared/_ValidationScriptsPartial.cshtml Diese Datei bietet Gültigkeitsprüfungsfunktionalität für alle Seiten.
Erstmaliges Ausführen des Projekts
Führen Sie das Projekt aus, um es in Aktion zu erleben.
Klicken Sie im Explorer mit der rechten Maustaste auf den Ordner ContosoPizza, und wählen Sie In integriertem Terminal öffnen aus. Dadurch wird ein Terminalfenster im Kontext des Projektordners geöffnet.
Geben Sie im Terminalfenster den folgenden Befehl ein:
dotnet watch
Dieser Befehl:
- Erstellt das Projekt.
- Starten der App
- Überwachen auf Dateiänderungen und Neustarten der App beim Erkennen von Änderungen
Die IDE fordert Sie auf, die App in einem Browser zu öffnen. Klicken Sie auf In Browser öffnen.
Tipp
Sie können die App auch öffnen, indem Sie die URL im Terminalfenster suchen. Halten Sie STRG gedrückt, und klicken Sie auf die URL, um sie in einem Browser zu öffnen.
Vergleichen Sie die gerenderte Startseite mit Pages/Index.cshtml in der IDE:
- Beachten Sie die Kombination von HTML-, Razor-Syntax- und C#-Code in der Datei.
- Die Razor-Syntax wird durch
@
-Zeichen gekennzeichnet. - C#-Code ist in
@{ }
-Blöcken eingeschlossen. Beachten Sie die Anweisungen am Anfang der Datei: - Die
@page
-Anweisung gibt an, dass es sich bei dieser Datei um eine Razor-Seite handelt. - Die
@model
-Anweisung gibt den Modelltyp für die Seite an (in diesem FallIndexModel
, der in Pages/Index.cshtml.cs definiert ist).
- Die Razor-Syntax wird durch
- Überprüfen Sie den C#-Codeblock.
- Der Code legt den Wert des
Title
-Elements imViewData
-Wörterbuch auf „Home page“ fest. - Das
ViewData
-Wörterbuch wird verwendet, um Daten zwischen der Razor-Seite und derIndexModel
-Klasse zu übergeben. - Zur Laufzeit wird der
Title
-Wert verwendet, um das<title>
-Element der Seite festzulegen.
- Der Code legt den Wert des
- Beachten Sie die Kombination von HTML-, Razor-Syntax- und C#-Code in der Datei.
Führen Sie die App im Terminalfenster weiterhin aus. Sie werden sie in den kommenden Lerneinheiten verwenden. Lassen Sie zudem die Browserregisterkarte mit der ausgeführten Contoso Pizza-App geöffnet. Sie nehmen Änderungen an der App vor, und der Browser wird automatisch aktualisiert, um die Änderungen anzuzeigen.
Anpassen der Landing Page
Nehmen Sie einige Änderungen an der Landing Page vor, um sie für die Pizza-App relevanter zu machen.
Ersetzen Sie in Pages/Index.cshtml den Code im C#-Codeblock durch den folgenden Code:
ViewData["Title"] = "The Home for Pizza Lovers"; TimeSpan timeInBusiness = DateTime.Now - new DateTime(2018, 8, 14);
Der vorangehende Code:
- Der Wert des
Title
-Elements imViewData
-Wörterbuch wird auf "The Home for Pizza Lovers" festgelegt. - Die Zeit wird berechnet, die seit der Eröffnung des Geschäfts verstrichen ist.
- Der Wert des
Ändern Sie den HTML-Code wie folgt:
Ersetzen Sie das
<h1>
-Element durch den folgenden Code:<h1 class="display-4">Welcome to Contoso Pizza</h1>
Ersetzen Sie das
<p>
-Element durch den folgenden Code:<p class="lead">The best pizza in town for @Convert.ToInt32(timeInBusiness.TotalDays) days!</p>
Der vorangehende Code:
- Die Überschrift wird in „Welcome to Contoso Pizza“ geändert.
- Die Anzahl der Tage wird angezeigt, die seit der Eröffnung des Geschäfts vergangen sind.
- Das
@
-Zeichen wird verwendet, um von HTML zur Razor-Syntax zu wechseln. - Die Methode
Convert.ToInt32
wird verwendet, um dieTotalDays
-Eigenschaft dertimeInBusiness
-Variablen in eine ganze Zahl zu konvertieren. - Die
Convert
-Klasse ist Teil desSystem
-Namespace, der automatisch vom<ImplicitUsings>
-Element in der Datei ContosoPizza.csproj importiert wird.
- Das
Speichern Sie die Datei . Die Browserregisterkarte mit der App wird automatisch aktualisiert, um die Änderungen anzuzeigen. Wenn Sie GitHub Codespaces verwenden, wird die Datei automatisch gespeichert, aber Sie müssen die Browserregisterkarte manuell aktualisieren.
Wichtig
Behalten Sie das Terminalfenster mit dotnet watch
bei jedem Speichern Ihrer Datei genau im Auge. Manchmal enthält Ihr Code möglicherweise eine sogenannte nicht unterstützte Bearbeitung. Dies bedeutet, dass der geänderte Code nicht neu kompiliert werden kann, ohne die Anwendung neu zu starten. Wenn Sie zum Neustarten der App aufgefordert werden, drücken Sie y
(ja) oder a
(immer). Sie können die Anwendung immer durch Drücken von STRG+C im Terminalfenster beenden und dann neu starten, indem Sie dotnet watch
erneut ausführen.
Sie haben Ihre ersten Änderungen an einer Razor-Seite vorgenommen. In der nächsten Lerneinheit fügen Sie der App eine neue Seite hinzu, um eine Liste mit Pizzas anzuzeigen.