Skip to Content

Validátory ASP.Net - 3.část

RegularExpressionValidator
Tento validátor kontroluje zadanou hodnotu, jestli odpovídá regulárnímu výrazu, který se vytváří pomocí kombinace speciálních znaků.
 
Definice syntaxe:
<asp:RegularExpressionValidator
  id="ID validátoru"
  ControlToValidate="ID prvku, kterého obsah chceme validovat"
  ValidationExpression="regulární výraz"
  ErrorMessage="Text chybové zprávy"
  Text="text prvku"
  ForeColor="hodnota"
  BackColor="hodnota" ...
  runat="server">
</asp:RegularExpressionValidator>

Příklad použití:
<form id="form1" runat="server">
<div>
 <p>
  <asp:Label ID="Label1" runat="server" Height="22px"
    Width="130px" Text="Zadej PSČ:"></asp:Label>
  <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  <asp:Button ID="tbSubmit" runat="server" Text="OK"
    OnClick="Submit" /></p><p>
  <asp:RegularExpressionValidator
    ID="RegularExpressionValidator1"
    runat="server" ErrorMessage="Toto není platné PSČ"
    ControlToValidate="TextBox1">
    ValidationExpression="[0-9] {5}"
  </asp:RegularExpressionValidator></p>
</div>
</form>

Při validaci můžeme kontrolovat shodu na libovolnou z několika různých masek, které ve vlastnosti ValidationExpression spojíme symbolem | (logické "or") např.
([0-9] {8}) | ([0-9] {9})
 
Přehled nejpoužívanějších elementů jazyka regulárních výrazů:
 

  *   Nula nebo více výskytů znaků. ( la*ma může například znamenat lma, lama, ale i laaama - nula nebo více výskytů znaku a, atd.)
  +   Jeden nebo více znaků.
  \   Prefix před speciálním znakem, ale také pro aplikaci speciálních znaků jako běžných. (Například \. se rovná normální tečce.)
  .   Jeden libovolný znak
  \d   Číslice
  \D   Jiný znak než číslice
  {}   Vymezuje určitý počet znaků. (Např. la {2} se rovná řetězci lala)
  []   Odpovídá libovolnému znaku ze skupiny. (Např. [a-z] znamená jakékoliv písmenko z abecedy.)

 

A jak by vypadala např. kontrola e-mailové adresy? Delší zápis může vypadat takto:
\w+([-+.']\w+)*@\w+([-.]\w+\.\w+([-.]\w+)*
anebo zkráceně:
\w+\@\w+\.cz
 
Více o regulárních výrazech najdete například na adrese http://www.vbnet.cz/clanek--122-regularni_vyrazy_v_net.aspx

Custom Validator
Definice syntaxe:
<asp:CustomValidator
  id="ID validátoru"
  ControlToValidate="ID prvku, kterého obsah chceme validovat"
  ClientValidationFunction="ID validační funkce u klienta"
  OnServerValidate="Nazev_validační_funkce"
  ErrorMessage="Text chybové zprávy"
  Text="text prvku"
  ForeColor="hodnota"
  BackColor="hodnota" ...
  runat="server">
</asp:CustomValidator>

Tento ovládací prvek představuje pouze kostru uživatelsky definované validace,vlastní funkce už musíme doplnit sami. To znamená, že vhodnost použití bude všude tam, kde nám nestačí nejčastěji se vyskytující situace a potřebujeme validovat nějakou souvislost, která vyplývá s aplikační logiky.
 
Jednoduchá funkce na serveru [Visual Basic]:
 
Sub ServerValidation (source As object, args As ServerValidateEventArgs)
  if len(args.Value) < 9 then
  args.IsValid = false
 else
  args.IsValid = true
 end if
end Sub
 
Funkci můžeme definovat i na straně klienta, například v JavaScriptu či VBScriptu.
 
ValidationSummary Control
Definice syntaxe:
<asp:ValidationSummary
  id="ID validátoru"
  DisplayMode="BulletList | List | SingleParagraph"
  EnableClientScript="true | false"
  ShowSummary="true | false"
  ShowMessageBox="true | false"
  HeaderText="text, který se zobrazí v záhlaví"
  runat="server">
</asp:ValidationSummary>

Tento validátor nic neověřuje ani nekontroluje,ale dokáže vypsat výsledky všech validátorů, které se ve formuláři nacházejí, na jednom místě. To znamená, že sám od sebe převezme jejich chybová hlášení a umístí je společně například nahoře ve formuláři, či vedle textových polí - záleží na nás, jak si stránku uspořádáme. V případě umisťování tohoto výpisu například v nějaké dané pozici vzhledem k textboxům, kde hrozí neočekávané změny v rozložení stránky, připisujeme ostatním validátorům pro jistotu vlastnost Display s hodnotou Static, nikoliv Dynamic.
 
Ještě připomenu že vlastnost Fore Color udává barvu textu zprávy a BackColor zase pozadí textu a tak dááááále....