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!

Tym samym wyrażasz zgodę na otrzymanie informacji marketingowych z devstyle.pl (doh...). Powered by ConvertKit
Notify of
twk
twk

Oo, może się przydać :)

Moja książka

Facebook

Zobacz również