28.02.2007 | Radek | | Programujeme | Žádné komentáře | 

Kontrola formulářů v ASP.NET

Na mnoha webových stránkách se nacházejí různé formuláře. Ať už jsou to formuláře na odesílání e-mailů, příspěvků do návštěvní knihy nebo dokonce o objednávku určitého zboží, jedno mají společné. Vždy po odeslání formuláře je třeba zkontrolovat, zda zadané údaje odpovídají požadavkům. Existují totiž uživatelé, kteří jen tak pro legraci například zadají do pole určeného pro telefonní číslo nějakou nesmyslnou změť čísel nebo znaků a pokud by takovýto vstup prošel až do naší databáze, způsobil by nám určitě nemalé problémy. A právě takovýmto snahám uživatelů záškodníků se snaží zabránit právě ovládací prvky na kontrolu formulářů – validátory. Validátorů samozřejmě existuje několik druhů a nic vám nebrání na jedno formulářové pole použít těchto validátorů více než jeden. Můžete například zkontrolovat, zda bylo do pole vůbec něco zadáno a pokud ano, zda zadaná data odpovídají očekávanému vstupu. Pokud očekáváme například jako vstup telefonní číslo, můžeme zkontrolovat, bylo-li zadáno skutečně číslo a pokud číslo zadáno bylo, můžeme navíc ověřit, zda se jedná o platný formát telefonního čísla – tj. 9 číslic. A jaké vlastně můžeme použít validátory?

Required Field Validator

Tento validátor se používá všude tam, kde je od uživatele požadován nějaký vstup. Pokud do formulářového pole není nic zadáno a uživatel se pokusí formulář odeslat, validátor vypíše chybovou hlášku a bude požadovat zadání dat.

Compare Validator

Tento validátor kontroluje, zda je do pole zadána hodnota shodná s referenční hodnotou nebo s hodnotou jiného pole. Toho se využívá například při zadávání hesla při registraci, kdy dochází ke kontrole, zda je heslo ve dvou polích shodné a nedošlo k překlepu.

Range Validator

Pomocí tohoto validátoru můžete zkontrolovat, zda je vstupní údaj v určeném rozsahu. Pokud například požadujete po uživateli, aby zadal číslo mezi 0 a 20 a uživatel zadá 25, dojde k chybě a validátor uživatele upozorní, že zadané číslo není v povoleném rozsahu.

Regulal Expression Validator

Tento validátor je nejzajímavější ze všech validátorů. Pomocí regulárních výrazů můžete určit přesně v jakém formátu vstupní údaje požadujete. Používá se ho zejména při kontrole telefonních čísel, e-mailových adres, poštovních směrovacích čísel, URL adres apod. A jak může takový regulární výraz vypadat?

E-mailová adresa: \w+([-+.‘]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
URL adresa: http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

Validation Summary

Tento prvek vlastně nic nekontroluje, ale slouží k souhrnnému výpisu chybových hlášení ze všech použitých validátorů. Pokud nechcete chybová hlášení validátorů vypisovat přímo u vstupních polí formulářů ale třeba na začátku stránky, bude se vám hodit právě tento ovládací prvek.

Na následujícím jednoduchém příkladu si ukážeme použití všech validátorů. Každé formulářové pole bude kontrolováno jedním z výše představených validátorů. Pro jednoduchost nebudeme validátory kombinovat, to už si jistě vyzkoušíte sami.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
  Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Validátory</title>
</head>
<body>
 <form id="form1" runat="server">
   Zadejte jméno, e-mail, heslo a věk mezi 0 - 70 lety
   <asp:ValidationSummary ID="ValidationSummary1"
   runat="server" />
 <table border="0" cellpadding="2" cellspacing="1">
  <tr>
   <td>Jméno:</td>
   <td>
    <asp:TextBox ID="Jmeno" runat="server"
       Width="150px" />
    </td>
    <td>
     <asp:RequiredFieldValidator ID="RequiredFieldValidator1"
     Display="Dynamic"  runat="server"
     ErrorMessage="Nezadali jste jmeno"
ControlToValidate="Jmeno">*</asp:RequiredFieldValidator>
   </td>
  </tr>
  <tr>
   <td>E-mail:</td>
   <td>
     <asp:TextBox ID="Email" runat="server" Width="150px" />
   </td>
   <td>
     <asp:RegularExpressionValidator
   ID="RegularExpressionValidator1" runat="server"
   ControlToValidate="Email" Display="Dynamic"
   ErrorMessage="Zadaná e-mailová adresa je chybná"
   ValidationExpression=
   "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">*
   </asp:RegularExpressionValidator>
    </td>
   </tr>
   <tr>
     <td>Heslo:</td>
     <td>
       <asp:TextBox ID="Heslo1" TextMode="Password"
     runat="server" Width="150px" />
    </td>
    <td>
      <asp:CompareValidator ID="CompareValidator1"
   runat="server" ErrorMessage="Hesla se neshodují"
   Display="Dynamic" ControlToCompare="Heslo2"
ControlToValidate="Heslo1">*</asp:CompareValidator>
   </td>
   </tr>
   <tr>
    <td>Heslo2:</td>
    <td>
        <asp:TextBox TextMode="Password" ID="Heslo2"
   runat="server" Width="150px" />
      </td>
      <td> </td>
     </tr>
     <tr>
       <td>Věk:</td>
       <td>
       <asp:TextBox ID="Vek" runat="server"
   Width="150px" />
    </td>
    <td>
      <asp:RangeValidator ID="RangeValidator1"
   runat="server" ErrorMessage="Věk není v rozsahu 0 - 70"
   MaximumValue="70" MinimumValue="0"
   ControlToValidate="Vek"
   Display="Dynamic">*</asp:RangeValidator>
    </td>
  </tr>
 </table>
<asp:Button ID="Odeslat" runat="server" Text="Odeslat" />
 </form>
</body>
</html>

A to je prozatím o validátorech vše. V příštím článku si představíme poslední z řady validátorů a to Custom Validator.





Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *


Novinky a oznámení

15.10.2016 - Do menu byla přidána nová sekce Stream, kde naleznete jak veškěré informace ohledně Fantomasmag TV, což jsou online streamy na Twitch.tv, tak i přímo online stream a chat.

Partnerské weby

Statistika

Naši fanoušci na Facebooku

Další...