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-corePřejděte do
mslearn-create-razor-pages-aspnet-coreadresáře a otevřete projekt v editoru Visual Studio Code:cd mslearn-create-razor-pages-aspnet-core code .
Návod
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.
Návod
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
Pizzatřídu, která představuje pizzu.
- Složka modelu obsahuje
-
Do projektu byla přidána složka Data.
- Datová složka obsahuje
PizzaContexttřídu, která představuje kontext databáze. Dědí zDbContexttří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
PizzaServicetřídu, která zveřejňuje metody pro výpis a přidání pizzy. - Třída
PizzaServicepoužíváPizzaContexttří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ý
PageModelsoubor 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řídaPageModelumožň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ů:
URL Mapy na stránku Razor Page www.domain.comPages/Index.cshtml www.domain.com/IndexPages/Index.cshtml www.domain.com/PrivacyPages/Privacy.cshtml www.domain.com/ErrorPages/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:
URL Mapy na stránku Razor Page www.domain.com/ProductsPages/Products/Index.cshtml www.domain.com/Products/IndexPages/Products/Index.cshtml www.domain.com/Products/CreatePages/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 watchTento 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).
Návod
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
@pageurčuje, že tento soubor je stránka Razor Page. - Direktiva
@modelurč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
Titlepoložky v rámci slovníkuViewDatana "Domovská stránka". - Slovník
ViewDatase používá k předávání dat mezi stránkou Razor Page aIndexModeltřídou. - Za běhu se
Titlehodnota 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
Titlepoložky ve slovníkuViewDatana "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.ToInt32slouží k převoduTotalDaysvlastnostitimeInBusinessproměnné na celé číslo. - Třída
Convertje součástíSystemoboru 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.