2010-01-11 16 views
12

Cuando hago la validación de campo en Asp.Net MVC, se generó las siguientes clases CSS de error:Asp.Net MVC - Cambiar nombre de la clase de error

  • entrada de validación de errores
  • campo de validación de errores

¿Hay alguna manera de que pueda cambiar los nombres de las clases de error que se generan?

Yo uso xVal.

Respuesta

10

No sé acerca de xVal, pero en cuanto al aspecto de las cosas de ASP.NET MVC, si echa un vistazo a the source verá que hay algunas cadenas de solo lectura estáticas que representan estos valores.

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

Así que, o editar el código fuente a su gusto (que también puede fijar XVal) o alterar el código de salida a utilizar valores diferentes de alguna manera.

Si xVal usa la validación de jQuery (que creo que sí ...?) Podría cambiar su valor predeterminado para la opción 'errorClass'. My answer here podría ayudarlo a lo largo de ese camino.

HTHS,
Charles

3

Esto es lo que hice:

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: no lo hace necesita una instancia de HtmlHelper para ch campos estáticos ange puede obtener el campo solo de 'typeof (HtmlHelper)' y llamar a 'SetValue (null, value)'. –

+0

¿Dónde colocan este código? – Shimmy

+0

en un atributo ActionFilter .. – TweeZz

1

Más solución más limpia puede ser:

<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>

Cuestiones relacionadas