fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
2 minut

Generowanie unobtrusive validation bez formy w MVC 3


21.03.2011

W ASP.MVC 3 dodano bardzo przyjemną walidację danych po stronie klienta, która nie miesza w htmlu jak Gargamel w wielkim garze pełnym wypatroszonych kwiczących smerfów. Wszystkie dane chowa w atrybutach (“data-*” zgodnych z HTML5), a skrypty wywalone są na zewnątrz. Tak jak powinno być. Zwie się bardzo poważnie: unobtrusive validation.

Wystarczy zawrzeć to co się chce w @using(Html.BeginForm()) { } i jazda.

Ale co gdy nie chcemy formy? Ja na przykład pobieram ajaxem wyrenderowany serwerze panel do dodawania nowego elementu, a następnie doklejam go do formy już istniejącej na stronie. Teoretycznie można w tym panelu i tak utworzyć formę a potem wygrzebywać z niej po stronie klienta zawartość, ale… czyż to nie lamerskie?

Okazało się, że wystarczy taki myk:

  1:  @{
  2:      var originalCtx = ViewContext.FormContext;
  3:      ViewContext.FormContext = new FormContext();
  4:  }
  5:  
  6:  @* content with validation *@
  7:  
  8:  @{
  9:      ViewContext.FormContext = originalCtx;
 10:  }

i już. Pięknie może ten kod nie wygląda, ale zdecydowanie robi co do niego należy. Można to ubrać w ładny helper implementujący IDisposable, ale póki co jeszcze tego nie robiłem ponieważ sytuacja taka zdarza się raczej sporadycznie.

Jak dla mnie jest to trick miesiąca.

Nie przegap kolejnych postów!

Dołącz do ponad 9000 programistów w devstyle newsletter!

Zapisując się na newsletter zgadzasz się na przetwarzanie Twoich danych osobowych w celu wysyłania na wskazany przez Ciebie adres e-mail informacji handlowych o nowościach, promocjach, produktach i usługach związanych z serwisem devstyle.pl. Będzie to marketing bezpośredni, do realizacji którego wykorzystam Twoje telekomunikacyjne urządzenia końcowe. Administratorem Twoich danych osobowych będzie Maciej Aniserowicz prowadzący działalność gospodarczą w Białymstoku (15-215) przy ul. Konopnickiej 14/8, NIP 5422824401. Przysługuje Tobie prawo do cofnięcia zgody, żądania wglądu do Twoich danych, wniesienia sprzeciwu co do ich przetwarzania, sprostowania, usunięcia i ograniczenia przetwarzania. Więcej informacji o tym jak przetwarzam Twoje dane znajdziesz na devstyle.pl/RODO. Powered by ConvertKit
Notify of
twk
twk

Oo, może się przydać :)

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Facebook

Książka

Zobacz również