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

Rejestracja własnych atrybutów walidacji w ASP.NET MVC dla client-side logic


26.07.2010

Utworzenie własnego atrybutu walidacji danych jest w ASP.NET MVC niezwykle banalne, szczególnie jeśli dziedziczymy z jakiegoś już istniejącego. Dla przykładu takie cacko pozwoli na wprowadzenie jedynie wartości czasu:

  1:  public class TimeSpanFormatAttribute : RegularExpressionAttribute
  2:  {
  3:  	public TimeSpanFormatAttribute()
  4:  		: base(@"^\d{2}:\d{2}:\d{2}$")
  5:  	{
  6:  		this.ErrorMessage = "Expected time in format HH:MM:SS";
  7:  
  8:  	}
  9:  }

Wystarczy zaaplikować w modelu i… już? Niestety nie. Owszem, server-side wszystko śmiga, jednak mi bardzo zależało na sprawdzeniu tego po stronie klienta.

Wraz ze znajomym zagłębiliśmy się każdy w swoją instancję Reflectora z załadowaną dllką MVC i po kilku nieudanych eksperymentach działającą walidację uzyskaliśmy dzięki jednemu prostemu dodatkowemu krokowi:

  1:  DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(TimeSpanFormatAttribute), typeof(RegularExpressionAttributeAdapter));

Taką rejestrację atrybutu umieszczamy w global.asax.Application_Start(), i to wszystko. Dokładnej ścieżki która nas do tego doprowadziła nie potrafię teraz odtworzyć, ale była zamotana i – jeśli bym ją tu umieszczał – prawdopodobnie tak nudna jak ta :).

Niby nic, ale jednak w “MVC 2 In Action” tego nie znalazłem (… a może słabo szukałem?).

Comments are closed.

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również