70-562: Performing Input Validation

Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET.

Jednym z częstszych problemów twórcy aplikacji webowych jest konieczność upewnienia się, czy dane wprowadzone przez użytkownika są poprawne (np. czy wszystkie wymagane pola w formularzu są wypełnione lub czy dane mają odpowiedni format). Sprawdzenie danych musi odbyć się po stronie serwera.

Z drugiej strony fajnie by było, jak by po stronie klienta nastąpiło sprawdzenie wprowadzonych danych, aby ten nie musiał wysyłać formularz do serwera, gdzie nastąpiło by sprawdzenie poprawności danych, a następnie zwrócona zostałaby informacja o błędnych danych. Dzięki czemu użytkownikowi przyjemniej się pracuje, a co za tym idzie, jest zadowolony z aplikacji :)

Na szczęście ASP.NET ma wbudowany zbiór kontrolek do walidacji danych, po obu stronach komunikacji.

Każda strona ASP.NET dziedzicząc po klasie Page posiada właściwość Validators, która zawiera kolekcję używanych na stronie kontrolek walidujących. Dodatkowo klasa Page zawiera metodę Validate, która sprawdzenie walidacji przez każdą kontrolkę walidującą. Domyślnie metoda ta jest wywoływana po zdarzeniu Load strony. Metoda Validate ustawia właściwość IsValid na true jeśli walidacja przebiegła pomyślnie lub na false w przeciwnym wypadku.

Natomiast po stronie klienta kontrolki walidujące generują kod Java Script, który sprawdza poprawność wprowadzanych danych przez użytkownika. Programista może ustawić właściwość EnableClientScript kontrolki walidującej na false, co spowoduje, że nie będzie odbywać się walidacja danych po stronie klienta (domyślnie jest true, co jest zalecaną wartością).

W domyślnym zachowaniu każde zdarzenie kliknięcia przycisku powoduje, wykonanie walidacji danych po stronie klienta i w przypadku ich poprawności jest wykonywany PostBack do serwera. A co w przypadku, gdy jakiś przycisk ma anulować wprowadzanie danych? Domyślnie, gdy dane nie będą się walidować nie będzie można kliknąć przycisku. Aby to rozwiązać, wystarczy ustawić właściwość CausesValidation dla przycisku na wartość false.

Wszystkie kontrolki walidujące dziedziczą bezpośrednio lub pośrednio z klasy BaseValidator, dzięki czemu wszystkie kontrolki posiadają następujące właściwości:

Właściwość Opis
ControlToValidate Ustawia kontrolkę, która ma być walidowana.
Display Definiuje zachowanie wyświetlania wiadomości w przypadku braku walidacji danych.
ErrorMessage Definiuje tekst jaki zostanie wyświetlony, gdy walidacja się nie powiedzie.
IsValid Status, czy walidacja się powiodła, czy nie.
Enabled W przypadku ustawienia na false, kontrolka jest nieaktywna
RequiredFieldValidator

Kontrolka RequiredFieldValidator służy do sprawdzenia, czy użytkownik wprowadził dane do kontrolki (nie wliczając w to spacje). Pozostałe typu kontrolek nie sprawdzają, czy dane zostały wprowadzone do kontrolki. Dlatego pierw wykorzystuje się kontrolkę RequiredFieldValidator w celu sprawdzenia, czy dane zostały podane.

Dodatkowo kontrolka posiada właściwość InitialValue za pomocą, której programista może ustawić początkową wartość kontrolki. Czasami można ustawić niewalidującą się wartość kontrolki, aby wymusić na użytkowniku wpisanie walidujących się danych.

CompareValidator

Kontrolka CompareValidator służy do porównania wartości walidowanej kontrolki z stałą (ValueToCompare) lub z wartością innej kontrolki (ControlToCompare). Dzięki właściwości Operator programista może zdefiniować sposób porównywania wartości.

RangeValidator

Kontrolka RangeValidator służy do sprawdzania, czy dane wprowadzone przez użytkownika znajdują się w jakimś przedziale. Programista właściwością MaximumValue ustawia maksymalną wartość przedziału, natomiast dzięki MinimumValue definiuje wartość minimalną. Natomiast właściwością Type informuje kontrolkę jak ma traktować wprowadzone dane (czy jako data lub liczba całkowita).

RegularExpressionValidator

Kontrolka RegularExpressionValidator daje programiście możliwość walidacji danych za pomocą wyrażeń regularnych, które same w sobie mają bardzo duże możliwości dopasowywania tekstu do jakiegoś wzorca. Właściwość ValidationExpression daje programiście możliwość ustawienia wyrażenia regularnego. Visual Studio ma zdefiniowane kilka popularnych wyrażeń (np. wyrażenie walidujące adres email), dzięki czemu programista nie musi znać dobrze wyrażeń regularnych, aby skorzystać z tej kontrolki.

CustomValidator

Czasami może zaistnieć potrzeba dokonania bardzo specyficznego sposobu walidacji danych. Programista może wykorzystać CustomValidator, w której może zawrzeć swój własny kod walidujący dane i to po stronie serwera jak i również po stronie klienta.

ValidationSummary

Kontrolka ValidationSummary służy do wyświetlenia podsumowania walidacji na stronie.

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading


Eastgroup.pl na facebooku