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.

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ż