MVC ValidationCssClassName

MVC ValidationCssClassName

Wieso es unter MVC nicht möglich ist, die Klassennamen für die Validierung anzupassen, ist mir unbegreiflich. Immerhin gehört es doch wohl jedem selbst überlassen, wie diese heißen sollen.
Da kann man nur hoffen, dass hier zukünftig nachgebessert wird.

Warum wir eigentlich nur über Reflection arbeiten können, wird schnell mit folgendem Screenshot klar:



Wie der Source code schön zeigt, handelt es sich um statische ReadOnly member. Somit können wir diese nicht außerhalb des Konstruktors ändern.

Ein Weg den ich dennoch vorschlagen möchte, wäre per Reflection.

Usings
using System;
using System.Web.Mvc;

Code
Type htmlHelper = typeof(HtmlHelper);
htmlHelper.GetField("ValidationInputCssClassName").SetValue(null, "validation-error");
htmlHelper.GetField("ValidationInputValidCssClassName").SetValue(null, "validation-success");
htmlHelper.GetField("ValidationMessageCssClassName").SetValue(null, "validation-error");
htmlHelper.GetField("ValidationMessageValidCssClassName").SetValue(null, "validation-success");
htmlHelper.GetField("ValidationSummaryCssClassName").SetValue(null, "validation-error");
htmlHelper.GetField("ValidationSummaryValidCssClassName").SetValue(null, "validation-success");

Ihr könntet diesen Code z. B. in der global asax Datei im Application_BeginRequest Event verwenden.

Des Weiteren solltet ihr beachten, dass diese Änderungen nur Serverseitige Werte ändern. Ihr müsst also zusätzlich noch die Clientseitige Implementierung anpassen, d.h. die Datei jquery.validate.unobtrusive.js muss zusätzlich angepasst werden. Auch hier wurden die Klassen hinterlegt.

Eine bereits angepasste Version habe ich hier hochgeladen.

Wenn ihr Vorschläge habt, oder einen alternativen Weg kennt, lasst es mich wissen.
Um einen Kommentar zu hinterlassen, ist eine Anmeldung erforderlich.