Estoy usando System.ComponontModel.DataAnnotations para validar mis objetos de modelo. ¿Cómo podría reemplazar los mensajes de los atributos estándar (Required y StringLength) producir sin proporcionar el atributo ErrorMessage a cada uno de ellos o subclasificarlos?Cómo reemplazar mensajes de error de DataAnnotaciones estándar
Respuesta
Escribo una nueva publicación porque necesito más formateo del que proporcionan los comentarios.
Mirar ValidationAttribute - clase base de atributos de validación.
Si se produjo error de validación, el mensaje de error será creado por el método:
public virtual string FormatErrorMessage(string name)
{
return string.Format(CultureInfo.CurrentCulture, this.ErrorMessageString, new object[] { name });
}
Siguiente vistazo a ErrorMessageString propiedad:
protected string ErrorMessageString
{
get
{
if (this._resourceModeAccessorIncomplete)
{
throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, DataAnnotationsResources.ValidationAttribute_NeedBothResourceTypeAndResourceName, new object[0]));
}
return this.ResourceAccessor();
}
}
Propiedad ResourceAccessor pueden enchufar a partir de:
ValidationAttribute..ctor(Func<String>)
ValidationAttribute.set_ErrorMessage(String) : Void
ValidationAttribute.SetResourceAccessorByPropertyLookup() : Void
Primero es utilizado exactamente por las clases dervidiadas para formatear mensajes, segundo - el caso cuando establecemos el mensaje de error a través de la propiedad ErrorMessage, y tercero - cuando se utilizan cadenas de recursos. Según su situación, puede usar ErrorMessageResourceName.
otra parte vamos a ver constructores derivados, para nuestro ejemplo, Atributo Rango:
private RangeAttribute()
: base((Func<string>) (() => DataAnnotationsResources.RangeAttribute_ValidationError))
{
}
Aquí RangeAttribute_ValidationError se carga desde los recursos:
internal static string RangeAttribute_ValidationError
{
get
{
return ResourceManager.GetString("RangeAttribute_ValidationError", resourceCulture);
}
}
para que pueda crear el archivo de recursos de diferente color tostado cultura predeterminada y sobrescribir mensajes allí, como este:
http://www.codeproject.com/KB/aspnet/SatelliteAssemblies.aspx
http://msdn.microsoft.com/en-us/library/aa645513(VS.71).aspx
Puede utilizar ErrorMessage propiedad de clase base ValidationAttribute para todos los validadores DataAnnotations.
Por ejemplo:
[Range(0, 100, ErrorMessage = "Value for {0} must be between {1} and {2}")]
public int id;
Tal vez ayudará.
verdadera. Pero, ¿hay alguna manera de reemplazar el mensaje predeterminado de una vez? –
@FitzchakYitzchaki ¿Alguna vez lo lograste? –
- 1. mensajes de error psycopg2
- 2. Uso de DataAnnotaciones con Entity Framework
- 3. std :: string :: reemplazar implementación estándar?
- 4. log4j: ¿Forma estándar de evitar mensajes de registro repetitivos?
- 5. Validación Knockout - Cómo mostrar mensajes de error
- 6. Cómo eliminar mensajes de error - IIS7
- 7. ¿Cómo hacer las listas en un modelo de vista? + dataannotaciones
- 8. Cómo reemplazar la función de biblioteca estándar C?
- 9. Mensajes de error GNU C++
- 10. C# MessageBox Mensajes de error
- 11. Obteniendo mensajes de error en Windows 7
- 12. Mejorando los mensajes de error de Lua
- 13. Deshabilitar los mensajes de error de PHPMailer
- 14. Java: sincronización de salida estándar y error estándar
- 15. Visualización de mensajes de error de gcc
- 16. Cómo obtener mensajes de error de subprocesos de ruby
- 17. mensajes de error personalizados con Formulario tipo
- 18. Uso de mensajes de error authlogic personalizados
- 19. ¿Cómo eliminar mensajes de error en la ventana de codificación?
- 20. ¿Cómo obtener mensajes de error descriptivos de DB2?
- 21. Mensajes de aserción: suponga un error o asuma el éxito
- 22. ¿Es correcto "traducir los mensajes de error?
- 23. Mensajes de error almacenados en SESSION
- 24. libagl alphaPlaneWorkaround mensajes de error en LogCat
- 25. Reemplazando la forma estándar de excepción/error en .net
- 26. ¿Cómo se escriben los buenos mensajes de error?
- 27. ¿Cómo pasar mensajes de error entre los controladores Grails?
- 28. en R cómo obtener mensajes de error en inglés
- 29. Cómo agregar mensajes de error personalizados en Hibernate validador
- 30. ¿Cómo puedo activar los mensajes de error libavformat fuera
Muchas gracias Veton. La última parte que has mencionado la he extrañado por completo. –
No puedo entender cómo deben nombrarse los archivos de recursos (y dónde) para anular ResourceManager de DataAnnotations.dll. – wRAR