Cvičení – přidání nového druhu pizzy
- 10 min
V této lekci dokončíte stránku Seznam pizzy tak, že přidáte formulář pro vytvoření nových pizz. Přidáte také obslužné rutiny stránek pro zpracování odeslání formuláře a odstranění pizz.
Přidání formuláře pro vytvoření nových pizz
Začněme přidáním vlastností do PizzaListModel třídy, která představuje vstup uživatele. Přidáte také vhodný obslužný modul stránky.
Otevřete Pages\PizzaList.cshtml.cs a přidejte do
PizzaListModeltřídy následující vlastnost:[BindProperty] public Pizza NewPizza { get; set; } = default!;V předchozím kódu:
- Do třídy
NewPizzase přidá vlastnost s názvemPizzaListModel.-
NewPizzaPizzaje objekt.
-
- Atribut
BindPropertyse použije naNewPizzavlastnost.- Atribut
BindPropertyse používá pro svázání vlastnostiNewPizzana stránku Razor. Při vytvořeníNewPizzapožadavku HTTP POST se vlastnost naplní vstupem uživatele.
- Atribut
- Vlastnost
NewPizzaje inicializována nadefault!.- Klíčové
default!slovo slouží k inicializaciNewPizzavlastnosti nanull. Tím zabráníte kompilátoru vygenerovat upozornění naNewPizzavlastnost, která není inicializována.
- Klíčové
- Do třídy
Teď přidejte obslužnou rutinu stránky pro HTTP POST. Do stejného souboru přidejte do třídy následující metodu
PizzaListModel:public IActionResult OnPost() { if (!ModelState.IsValid || NewPizza == null) { return Page(); } _service.AddPizza(NewPizza); return RedirectToAction("Get"); }V předchozím kódu:
- Vlastnost
ModelState.IsValidslouží k určení, zda je vstup uživatele platný.- Ověřovací pravidla se odvozují z atributů (například
RequiredaRange) třídyPizzav Models\Pizza.cs. - Pokud je vstup uživatele neplatný, metoda
Pageje volána pro znovuvykreslení stránky.
- Ověřovací pravidla se odvozují z atributů (například
- Tato
NewPizzavlastnost slouží k přidání nové pizzy do objektu_service. - Metoda
RedirectToActionse používá k přesměrování uživatele na obslužnou rutinuGetstránky, která znovu vykreslí stránku s aktualizovaným seznamem pizz.
- Vlastnost
Uložte soubor. Pokud používáte GitHub Codespaces, soubor se automaticky uloží.
Vraťte se do terminálu spuštěného
dotnet watcha stisknutím Ctrl+R aplikaci znovu načtěte.
Teď, když je k dispozici obslužná rutina stránky pro zpracování odeslání formuláře, přidáme formulář do stránky Razor Page.
Otevřete Pages\PizzaList.cshtml a nahraďte
<!-- New Pizza form will go here -->ho následujícím kódem:<form method="post"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="NewPizza.Name" class="control-label"></label> <input asp-for="NewPizza.Name" class="form-control" /> <span asp-validation-for="NewPizza.Name" class="text-danger"></span> </div> <div class="form-group"> <label asp-for="NewPizza.Size" class="control-label"></label> <select asp-for="NewPizza.Size" class="form-control" id="PizzaSize"> <option value="">-- Select Size --</option> <option value="Small">Small</option> <option value="Medium">Medium</option> <option value="Large">Large</option> </select> <span asp-validation-for="NewPizza.Size" class="text-danger"></span> </div> <div class="form-group form-check"> <label class="form-check-label"> <input class="form-check-input" asp-for="NewPizza.IsGlutenFree" /> @Html.DisplayNameFor(model => model.NewPizza.IsGlutenFree) </label> </div> <div class="form-group"> <label asp-for="NewPizza.Price" class="control-label"></label> <input asp-for="NewPizza.Price" class="form-control" /> <span asp-validation-for="NewPizza.Price" class="text-danger"></span> </div> <div class="form-group"> <input type="submit" value="Create" class="btn btn-primary" /> </div> </form>V předchozím kódu:
- Atribut
asp-validation-summaryse používá k zobrazení chyb ověřování pro celý model. - Každé pole formuláře (
<input>a<select>prvky) a každý<label>je vázán na odpovídajícíNewPizzavlastnost pomocí atributuasp-for. - Atribut
asp-validation-forslouží k zobrazení všech chyb ověření pro každé pole formuláře. - Metoda
@Html.DisplayNameForslouží k zobrazení zobrazovaného názvu vlastnostiIsGlutenFree. Toto je pomocná metoda Razor, která se používá k zobrazení zobrazovaného názvu vlastnosti. Tímto způsobem zajistíte, že je zaškrtávací políčko zaškrtnuté, když uživatel klikne na štítek. - Do formuláře se přidá tlačítko pro odeslání s
Createpopiskem pro odeslání dat formuláře na server. Když uživatel vybere toto tlačítko Vytvořit za běhu, prohlížeč odešle formulář jako požadavek HTTP POST na server.
- Atribut
Do dolní části stránky přidejte následující kód:
@section Scripts { <partial name="_ValidationScriptsPartial" /> }Tím se na stránku vloží ověřovací skripty na straně klienta. Ověřovací skripty na straně klienta slouží k ověření vstupu uživatele před odesláním formuláře na server.
Uložte soubor. V prohlížeči se stránka Seznam pizzy aktualizuje novým formulářem. Pokud používáte GitHub Codespaces, soubor se uloží automaticky, ale budete muset kartu prohlížeče aktualizovat ručně.
Zadejte novou pizzu a vyberte tlačítko Vytvořit . Stránka by se měla aktualizovat a zobrazit novou pizzu v seznamu.
Přidejte obslužnou rutinu stránky pro smazání pizz
Je třeba přidat na stránku Seznamu pizz ještě jednu poslední část: obslužnou rutinu pro odstranění pizz. Tlačítka pro odstranění pizz už jsou na stránce, ale zatím nic nedělají.
Zpět v Pages\PizzaList.cshtml.cs přidejte do třídy následující metodu
PizzaListModel:public IActionResult OnPostDelete(int id) { _service.DeletePizza(id); return RedirectToAction("Get"); }V předchozím kódu:
- Metoda
OnPostDeletese volá, když uživatel klikne na tlačítko Odstranit pro pizzu.- Stránka ví, že tuto metodu použije, protože atribut na tlačítku
asp-page-handlerv Pages\PizzaList.cshtml je nastaven na .
- Stránka ví, že tuto metodu použije, protože atribut na tlačítku
- Parametr
idslouží k identifikaci pizzy, která se má odstranit.- Parametr
idje vázán naidhodnotu trasy v adrese URL. To se provádí s atributemasp-route-idna tlačítku Odstranit v Pages\PizzaList.cshtml.
- Parametr
- Metoda
DeletePizzaje volána v_serviceobjektu, aby se odstranila pizza. - Metoda
RedirectToActionse používá k přesměrování uživatele na obslužnou rutinuGetstránky, která znovu vykreslí stránku s aktualizovaným seznamem pizz.
- Metoda
Uložte soubor. Pokud používáte GitHub Codespaces, soubor se automaticky uloží.
Otestujte tlačítko Odstranit pro pizzu. Stránka by se měla aktualizovat a vybraná pizza by se měla ze seznamu odebrat.
Gratulujeme! Úspěšně jste vytvořili stránku Razor Page, která zobrazuje seznam pizz, umožňuje uživateli přidávat nové pizzy a také umožňuje uživateli odstranit pizzy.