Část 6: Používání datových poznámek k ověření modelu
MVC Music Store je kurzová aplikace, která představuje a vysvětluje, jak používat ASP.NET MVC a Visual Studio pro vývoj pro web.
MVC Music Store je odlehčená ukázková implementace obchodu, která prodává hudební alba online a implementuje základní správu webu, přihlašování uživatelů a funkce nákupního košíku.
Tato série kurzů podrobně popisuje všechny kroky potřebné k vytvoření ukázkové aplikace ASP.NET MVC Music Store. Část 6 popisuje použití datových poznámek k ověření modelu.
Máme hlavní problém s formuláři Pro vytváření a úpravy: neprovádí žádné ověřování. Můžeme například nechat požadovaná pole prázdná nebo zadat písmena do pole Cena a první chyba, kterou uvidíme, je z databáze.
Do naší aplikace můžeme snadno přidat ověření přidáním datových poznámek do tříd modelu. Datové poznámky nám umožňují popsat pravidla, která chceme použít u vlastností modelu, a ASP.NET MVC se postará o jejich vynucování a zobrazování odpovídajících zpráv uživatelům.
Přidání ověření do našich formulářů alb
Použijeme následující atributy datových poznámek:
- Povinné – označuje, že vlastnost je povinné pole.
- DisplayName – definuje text, který se má použít v polích formuláře a ověřovacích zprávách.
- StringLength – definuje maximální délku pole řetězce.
- Rozsah – poskytuje maximální a minimální hodnotu číselného pole.
- Bind – vypíše pole, která se mají vyloučit nebo zahrnout při vazbě hodnot parametrů nebo formulářů na vlastnosti modelu.
- ScaffoldColumn – Umožňuje skrýt pole z formulářů editoru.
*Poznámka: Další informace o ověřování modelu pomocí atributů datových poznámek najdete v dokumentaci MSDN na adrese *https://go.microsoft.com/fwlink/?LinkId=159063
Otevřete třídu Album a přidejte do horní části následující příkazy using .
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
Dále aktualizujte vlastnosti tak, aby se přidaly atributy zobrazení a ověření, jak je znázorněno níže.
namespace MvcMusicStore.Models
{
[Bind(Exclude = "AlbumId")]
public class Album
{
[ScaffoldColumn(false)]
public int AlbumId { get; set; }
[DisplayName("Genre")]
public int GenreId { get; set; }
[DisplayName("Artist")]
public int ArtistId { get; set; }
[Required(ErrorMessage = "An Album Title is required")]
[StringLength(160)]
public string Title { get; set; }
[Range(0.01, 100.00,
ErrorMessage = "Price must be between 0.01 and 100.00")]
public decimal Price { get; set; }
[DisplayName("Album Art URL")]
[StringLength(1024)]
public string AlbumArtUrl { get; set; }
public virtual Genre Genre { get; set; }
public virtual Artist Artist { get; set; }
}
}
Zatímco jsme tam, změnili jsme také vlastnosti Žánr a Interpret na virtuální vlastnosti. To umožňuje, aby je Entity Framework podle potřeby načetl opožděně.
public virtual Genre Genre { get; set; }
public virtual Artist Artist { get; set; }
Po přidání těchto atributů do modelu alba začne obrazovka Vytvořit a upravit okamžitě ověřovat pole a používat zobrazovaná jména, která jsme zvolili (např. adresa URL obrázku alba místo alba AlbumArtUrl). Spusťte aplikaci a přejděte na /StoreManager/Create.
V dalším kroku přerušíme některá ověřovací pravidla. Zadejte cenu 0 a ponechte název prázdný. Když klikneme na tlačítko Vytvořit, zobrazí se formulář s chybovými zprávami o ověření, která pole nesplňují pravidla ověřování, která jsme definovali.
Testování ověřování Client-Side
Ověření na straně serveru je z hlediska aplikace velmi důležité, protože uživatelé můžou ověřování na straně klienta obejít. Formuláře webových stránek, které implementují pouze ověření na straně serveru, však vykazují tři významné problémy.
- Uživatel musí počkat na odeslání formuláře, ověření na serveru a odeslání odpovědi do prohlížeče.
- Uživatel při opravě pole nedostane okamžitou zpětnou vazbu, takže teď projde ověřovacími pravidly.
- Plýtváme prostředky serveru, abychom provedli logiku ověřování, místo abychom mohli využívat prohlížeč uživatele.
Šablony uživatelského rozhraní ASP.NET MVC 3 mají naštěstí integrované ověřování na straně klienta, které nevyžaduje žádnou další práci.
Zadáním jednoho písmene do pole Název se splní požadavky na ověření, takže ověřovací zpráva se okamžitě odebere.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro