Co je to validace dat?
Validace dat je proces kontroly uživatelského vstupu před jeho uložením nebo dalším zpracováním. Pochopení a správné využití těchto mechanismů představuje jeden z klíčových principů při výuce tvorby spolehlivého softwaru [2]. Slouží k tomu, abychom zabránili odeslání nekompletních, nesprávných nebo nesmyslných údajů do systému. V objektově orientovaném jazyce C# [1] a v rámci platformy .NET [3] se k tomuto účelu nejčastěji využívá jmenný prostor System.ComponentModel.DataAnnotations, který umožňuje definovat pravidla přímo v datovém modelu pomocí takzvaných atributů [4].
Zápis [Required] těsně nad vlastností třídy například říká kompilátoru: "Tato vlastnost nesmí zůstat prázdná. Pokud se tak stane, nedovol uložení a upozorni uživatele." [4]
Jak se pravidla zapisují (Příklady)
Pravidla se píšou do hranatých závorek přímo nad konkrétní vlastnost objektu [1]. Každé pravidlo by mělo obsahovat parametr ErrorMessage, kterým definujete vlastní srozumitelnou chybovou hlášku. Zde jsou příklady pro model uživatele [4]:
- Povinné pole: Zápis
[Required(ErrorMessage = "Jméno je povinné.")] nad vlastností public string Jmeno zajistí, že uživatel nesmí toto pole ve formuláři vynechat [4].
- Číselný rozsah: Zápis
[Range(18, 120, ErrorMessage = "Musíte být plnoletí.")] nad vlastností public int Vek automaticky zkontroluje, zda zadané číslo spadá do povoleného intervalu [4].
- Správný formát e-mailu: Zápis
[EmailAddress(ErrorMessage = "Chybný formát.")] nad vlastností public string Email sám na pozadí ověří, zda zadaný text obsahuje zavináč (@) a má logickou strukturu platné e-mailové adresy [4].
Klíčové pojmy a komponenty
Základní atributy (např. [Required]) – vestavěná systémová pravidla na platformě .NET [3]. Přidávají se do definice datového modelu nad ty vlastnosti, u kterých chceme vynutit určitý formát nebo povinnost vyplnění [4].
Vlastní validační pravidla – pokud vestavěná pravidla nestačí, lze naprogramovat vlastní. Tvoří se na principu dědičnosti jako nová třída [1], která dědí ze systémové třídy ValidationAttribute. Uvnitř se přepíše metoda IsValid, která vyhodnotí data a vrátí buď úspěch, nebo zprávu o chybě [4].
<EditForm> – Blazor komponenta nahrazující klasický HTML formulář. Napojuje se na konkrétní datový objekt a díky události OnValidSubmit zajistí, že se metoda pro uložení dat spustí pouze tehdy, pokud všechna pole prošla kontrolou [5].
<DataAnnotationsValidator /> – nezbytná značka vkládaná dovnitř formuláře. Aktivuje proces validace a říká formuláři, aby začal sledovat a vymáhat pravidla definovaná v datovém modelu [5].
<ValidationMessage> – komponenta pro vizuální zpětnou vazbu. Pokud uživatel poruší některé z pravidel, automaticky na daném místě vykreslí příslušnou chybovou hlášku [5].