Thomas Bandt

Über mich | Kontakt | Archiv

Updates zu ASP.NET MVC und DataAnnotations

Ich habe mich zwar schon vor einiger Zeit von der Verwendung der DataAnnotations in meinen ernsthaften Projekten wieder verabschiedet (Begründung), doch habe ich just diese Woche erst wieder ein kleineres Projekt damit umgesetzt (man glaubt ja gar nicht wie effizient so ein Verzicht auf TDD bei so einem Eintagesprojekt sein kann ;-)).

Dabei handelte es sich um eine mehrsprachige Microsite, weshalb ich auch das Thema Lokalisierung wieder auf dem Schirm hatte. Mein letzter Stand war, dass dies nur für Fehlermeldungen, nicht aber für die Labels usw. funktioniert (DisplayName). Grund ist, dass MVC 2 gegen das .NET Framework 3.5 SP1 kompiliert ist und die DataAnnotations erst mit .NET 4.0 wirklich brauchbar implementiert sind.

Nach kurzer Recherche fand ich dann eine schicke Lösung in Form der MVC Futures, die hier heruntegeladen werden können. Nach der Installation einfach die Microsoft.Web.Mvc.AspNet4-Assembly referenzieren und den neuen ModelMetadataProvider in der Global.asax registrieren:

   1:  protected void Application_Start()
   2:  {
   3:      AreaRegistration.RegisterAllAreas();
   4:      RegisterRoutes(RouteTable.Routes);
   5:      ModelMetadataProviders.Current = new DataAnnotations4ModelMetadataProvider();
   6:      DataAnnotations4ModelValidatorProvider.RegisterProvider();
   7:  }

Und siehe da, nun funktioniert die Lokalisierung wie gewünscht auch mit dem Display-Attribut:

   1:  [Display(ResourceType = typeof(Resources.Labels), Name = "Company")]
   2:  public string Company { get; set; }

Zudem hat sich Albert Weinert in den vergangenen Tagen etwas an meinen Posts zum Testen von DataAnnotations und dem Vergleich zweier Properties in einem ViewModel abgearbeitet. Für mich augenblicklich nicht mehr relevant, aber vielleicht ja für den ein oder anderen interessant:



« Zurück  |  Weiter »