2010-01-11 7 views
12

Wenn ich Feldvalidierung in Asp.Net MVC zu tun, ist es die folgenden Fehler CSS-Klassen generiert:Asp.Net MVC - Change Fehlerklasse Name

  • Input-Validierung-Fehler
  • Feld validation-Fehler

Gibt es eine Möglichkeit, dass ich die Namen der Fehlerklassen ändern kann, die generiert werden?

Ich benutze xVal.

Antwort

10

Ich weiß nicht über xVal, aber soweit die ASP.NET MVC Seite der Dinge gehen, wenn Sie einen Blick auf the source Sie sehen, gibt es einige statische Readonly-Strings, die diese Werte darstellen.

public static readonly string ValidationInputCssClassName = "input-validation-error"; 
public static readonly string ValidationMessageCssClassName = "field-validation-error"; 
public static readonly string ValidationSummaryCssClassName = "validation-summary-errors"; 

Also entweder Sie die Quelle nach Ihren Wünschen bearbeiten oder ändern, die Ausgabe Code auf unterschiedliche Werte verwenden irgendwie (die auch xVal beheben kann).

Wenn xVal jQuery Validation verwendet (was ich denke, es tut ...?), Könnten Sie den Standardwert für die Option 'errorClass' ändern. My answer here könnte Ihnen auf diesem Weg helfen.

HTHS,
Charles

3

Hier ist, was ich getan habe:

private void ChangeValidationClassNames() 
{ 
    var helper = new HtmlHelper(new ViewContext(), new ViewPage()); 
    SetPublicStaticReadonly("ValidationInputCssClassName", helper, "errInput"); 
    SetPublicStaticReadonly("ValidationMessageCssClassName", helper, "errMsg"); 
} 

public void SetPublicStaticReadonly(string readonlyPropName, object instance, object value) 
{    
    var field = instance.GetType().GetField(readonlyPropName, BindingFlags.Static | BindingFlags.Public); 
    if (field == null) 
     throw new NullReferenceException(string.Format("public static readonly field '{0}' not found in '{1}'", readonlyPropName, instance)); 
    field.SetValue(instance, value); 
} 
+0

@TweetZz: Sie dies nicht tun brauche eine HtmlHelper-Instanz für ch ange statische Felder. Sie können das Feld nur von 'typeof (HtmlHelper)' und 'SetValue (null, value)' aufrufen. –

+0

Wo setzt ihr diesen Code hin? – Shimmy

+0

In einem ActionFilterAttribute .. – TweeZz

1

Weitere sauberere Lösung sein kann:

<script type="text/javascript"> 
 
    $(document).ready(function(){ 
 
     $('.input-validation-error').addClass('CustomErrorClass').removeClass('input-validation-error'); 
 
     $('.field-validation-error').addClass('CustomErrorClass').removeClass('field-validation-error'); 
 
    }); 
 
</script>