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.

0 0 votes
Article Rating
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
twk
twk
13 years ago

Oo, może się przydać :)

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również