Cvičení – přizpůsobení projektu
Váš tým rozdělil práci pro aplikaci pro správu inventáře pizzy. Vaši spolužáci vytvořili webovou aplikaci ASP.NET Core za vás a už vytvořili službu pro čtení a zápis dat pizzy do databáze. Dostali jste přiřazenou práci na stránce Seznam pizz, která zobrazí seznam pizz a umožní vám přidat do databáze nové pizzy. Začneme prohlídkou projektu, abychom pochopili, jak je uspořádaná.
Poznámka:
Tento modul používá rozhraní příkazového řádku .NET (rozhraní příkazového řádku) a Visual Studio Code pro místní vývoj. Po dokončení tohoto modulu můžete použít koncepty pomocí sady Visual Studio (Windows) nebo pokračovat ve vývoji pomocí editoru Visual Studio Code (Windows, Linux a macOS).
Získání souborů projektu
Pokud používáte GitHub Codespaces, stačí otevřít úložiště v prohlížeči, vybrat Code a pak ve větvi vytvořit nový prostor main
kódu.
Pokud nepoužíváte GitHub Codespaces, získejte soubory projektu a otevřete je v editoru Visual Studio Code pomocí následujících kroků:
Otevřete příkazové prostředí a naklonujte projekt z GitHubu pomocí příkazového řádku:
git clone https://github.com/MicrosoftDocs/mslearn-create-razor-pages-aspnet-core
Přejděte do
mslearn-create-razor-pages-aspnet-core
adresáře a otevřete projekt v editoru Visual Studio Code:cd mslearn-create-razor-pages-aspnet-core code .
Tip
Pokud máte nainstalovaný kompatibilní modul runtime kontejneru, můžete pomocí rozšíření Dev Containers otevřít úložiště v kontejneru s předinstalovanými nástroji.
Kontrola práce členů týmu
Chvíli se seznámíme s existujícím kódem ve složce ContosoPizza. Projekt je webová aplikace ASP.NET Core vytvořená pomocí dotnet new webapp
příkazu. Změny provedené členy týmu jsou popsány níže.
Tip
Netrávit příliš mnoho času kontrolou těchto změn. Vaši kolegové už udělali práci na vytvoření databáze a služby pro čtení a zápis pizz do databáze, ale neudělali žádné změny uživatelského rozhraní. V další lekci vytvoříte uživatelské rozhraní, které využívá jejich službu.
- Do projektu byla přidána složka Models.
- Složka modelu obsahuje
Pizza
třídu, která představuje pizzu.
- Složka modelu obsahuje
- Do projektu byla přidána složka Data.
- Datová složka obsahuje
PizzaContext
třídu, která představuje kontext databáze. Dědí zDbContext
třídy v Entity Framework Core. Entity Framework Core je objektově-relační mapovač (ORM), který usnadňuje práci s databázemi.
- Datová složka obsahuje
- Do projektu byla přidána složka Services.
- Složka služeb obsahuje
PizzaService
třídu, která zveřejňuje metody pro výpis a přidání pizzy. - Třída
PizzaService
používáPizzaContext
třídu ke čtení a zápisu pizz do databáze. - Třída je registrována pro injektáž závislostí v Program.cs (řádek 10).
- Složka služeb obsahuje
Entity Framework Core také vygeneroval několik věcí:
- Vygenerovala se složka Migrace.
- Složka migrace obsahuje kód pro vytvoření schématu databáze.
- Vygeneroval se soubor databáze SQLite ContosoPizza.db .
- Pokud máte nainstalované rozšíření SQLite (nebo používáte GitHub Codespaces), můžete databázi zobrazit tak, že na soubor kliknete pravým tlačítkem a vyberete Otevřít databázi. Schéma databáze je zobrazeno na kartě Průzkumník SQLite v podokně Průzkumník.
Kontrola struktury projektu Razor Pages
Všechno ostatní v projektu se nezmění od vytvoření projektu. Následující tabulka popisuje strukturu projektu vygenerovanou příkazem dotnet new webapp
.
Název | Popis |
---|---|
Stránky/ | Obsahuje Razor Pages a podpůrné soubory. Každá stránka Razor má soubor .cshtml a soubor třídy .cshtml.csPageModel . |
wwwroot/ | Obsahuje statické soubory prostředků, jako jsou HTML, JavaScript a CSS. |
ContosoPizza.csproj | Obsahuje metadata konfigurace projektu, například závislosti. |
Program.cs | Slouží jako vstupní bod aplikace a konfiguruje chování aplikace, jako je směrování. |
Další důležité pozorování:
Soubory stránky Razor a jejich spárovaný
PageModel
soubor třídyStránky Razor jsou uloženy v adresáři Pages . Jak je uvedeno výše, každá stránka Razor má soubor .cshtml a soubor třídy .cshtml.cs
PageModel
. TřídaPageModel
umožňuje oddělení logiky a prezentace stránky Razor Page, definuje obslužné rutiny stránek pro požadavky a zapouzdřuje vlastnosti dat a logiku vymezenou na stránku Razor Page.Adresářová struktura stránek a žádosti o směrování
Razor Pages používá adresářovou strukturu Pages jako konvenci pro požadavky směrování. Následující tabulka ukazuje, jak se adresy URL mapují na názvy souborů:
Adresa URL Mapy na stránku Razor Page 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 Podsložky v adresáři Pages slouží k uspořádání stránek Razor Pages. Pokud by například existoval adresář Pages/Products, adresy URL by odrážely danou strukturu:
Adresa URL Mapy na stránku Razor Page 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 Rozložení a další sdílené soubory
Existuje několik souborů, které jsou sdíleny na více stránkách. Tyto soubory určují běžné prvky rozložení a importy stránek. Následující tabulka popisuje účel každého souboru.
Soubor Popis _ViewImports.cshtml Importuje obory názvů a třídy, které se používají na více stránkách. _ViewStart.cshtml Určuje výchozí rozložení pro všechny stránky Razor Pages. Pages/Shared/_Layout.cshtml Toto je rozložení určené souborem _ViewStart.cshtml
. Implementuje společné prvky rozložení na více stránkách.Pages/Shared/_ValidationScriptsPartial.cshtml Poskytuje funkce ověřování pro všechny stránky.
První spuštění projektu
Pojďme projekt spustit, abychom ho viděli v akci.
Klikněte pravým tlačítkem na složku ContosoPizza v Průzkumníkovi a vyberte Otevřít v integrovaném terminálu. Otevře se okno terminálu v kontextu složky projektu.
V okně terminálu zadejte následující příkaz:
dotnet watch
Tento příkaz:
- Vytvoří projekt.
- Spustí aplikaci.
- Sleduje změny souborů a restartuje aplikaci, když zjistí změnu.
Integrované vývojové prostředí vás vyzve k otevření aplikace v prohlížeči. Klikněte na Open in Browser (Otevřít v prohlížeči).
Tip
Aplikaci můžete otevřít také vyhledáním adresy URL v okně terminálu. Podržte klávesu Ctrl a kliknutím na adresu URL ji otevřete v prohlížeči.
Porovnejte vykreslenou domovskou stránku se stránkou Pages/Index.cshtml v integrovaném vývojovém prostředí:
- Prohlédněte si kombinaci kódu HTML, Syntaxe Razor a C# v souboru.
- Syntaxe Razor je označena
@
znaky. - Kód jazyka C# je uzavřený v
@{ }
blocích. Poznamenejte si direktivy v horní části souboru: - Direktiva
@page
určuje, že tento soubor je stránka Razor Page. - Direktiva
@model
určuje typ modelu pro stránku (v tomto případěIndexModel
, který je definován v Pages/Index.cshtml.cs).
- Syntaxe Razor je označena
- Zkontrolujte blok kódu jazyka C#.
- Kód nastaví hodnotu
Title
položky v rámci slovníkuViewData
na "Domovská stránka". - Slovník
ViewData
se používá k předávání dat mezi stránkou Razor Page aIndexModel
třídou. - Za běhu se
Title
hodnota používá k nastavení prvku stránky<title>
.
- Kód nastaví hodnotu
- Prohlédněte si kombinaci kódu HTML, Syntaxe Razor a C# v souboru.
Nechte aplikaci spuštěnou v okně terminálu. Použijeme ho v nadcházejících lekcích. Nechte také kartu prohlížeče se spuštěnou aplikací Contoso Pizza. V aplikaci provedete změny a prohlížeč se automaticky aktualizuje, aby se změny zobrazily.
Přizpůsobení cílové stránky
Pojďme na cílovou stránku udělat několik změn, aby byla relevantnější pro aplikaci pizza.
V souboru Pages/Index.cshtml nahraďte kód v bloku kódu jazyka C#následujícím kódem:
ViewData["Title"] = "The Home for Pizza Lovers"; TimeSpan timeInBusiness = DateTime.Now - new DateTime(2018, 8, 14);
Předchozí kód:
- Nastaví hodnotu
Title
položky ve slovníkuViewData
na "The Home for Pizza Lovers". - Vypočítá dobu, která uplynula od otevření firmy.
- Nastaví hodnotu
Upravte kód HTML následujícím způsobem:
<h1>
Nahraďte prvek následujícím kódem:<h1 class="display-4">Welcome to Contoso Pizza</h1>
<p>
Nahraďte prvek následujícím kódem:<p class="lead">The best pizza in town for @Convert.ToInt32(timeInBusiness.TotalDays) days!</p>
Předchozí kód:
- Změní nadpis na "Vítejte ve společnosti Contoso Pizza".
- Zobrazí počet dní, které uplynuly od otevření firmy.
- Znak
@
se používá k přepnutí z HTML na syntaxi Razor. - Metoda
Convert.ToInt32
slouží k převoduTotalDays
vlastnostitimeInBusiness
proměnné na celé číslo. - Třída
Convert
je součástíSystem
oboru názvů, který je automaticky importován elementem<ImplicitUsings>
v souboru ContosoPizza.csproj .
- Znak
Uložte soubor. Karta prohlížeče s aplikací se automaticky aktualizuje, aby se zobrazily změny. Pokud používáte GitHub Codespaces, soubor se uloží automaticky, ale budete muset kartu prohlížeče aktualizovat ručně.
Důležité
Při každém uložení souboru sledujte okno dotnet watch
terminálu. Někdy může váš kód obsahovat to, co volá hrubou úpravu. To znamená, že kód, který jste změnili, nelze znovu zkompilovat bez restartování aplikace. Pokud se zobrazí výzva k restartování aplikace, stiskněte y
(ano) nebo a
(vždy). Aplikaci můžete kdykoli zastavit tak, že v okně terminálu dvakrát stisknete Ctrl+C a pak ji dotnet watch
znovu spustíte.
Udělali jste první změny stránky Razor Page. V další lekci přidáte do aplikace novou stránku, která zobrazí seznam pizz.