asp.net-mvc-3 - mvc - validationmessagefor net core
Modificar el ErrorMessage predeterminado para la validaciĆ³n de StringLength (2)
Puede especificar el atributo StringLength como sigue en numerosas propiedades
[StringLength(20, ErrorMessageResourceName = "StringLengthMessage", ErrorMessageResourceType = typeof(Resource))]
public string OfficePhone { get; set; }
[StringLength(20, ErrorMessageResourceName = "StringLengthMessage", ErrorMessageResourceType = typeof(Resource))]
public string CellPhone { get; set; }
y agregue el recurso de cadena (llamado StringLengthMessage
) en su archivo de recursos
"Maximum length is {1}"
El mensaje se define una vez y tiene un marcador de posición variable en caso de que cambie de opinión con respecto a la longitud a probar.
Puede especificar lo siguiente:
- {0} - Nombre
- {1} - Longitud máxima
- {2} - Longitud mínima
Actualizar
Para minimizar aún más la duplicación, puede subclase StringLengthAttribute:
public class MyStringLengthAttribute : StringLengthAttribute
{
public MyStringLengthAttribute() : this(20)
{
}
public MyStringLengthAttribute(int maximumLength) : base(maximumLength)
{
base.ErrorMessageResourceName = "StringLengthMessage";
base.ErrorMessageResourceType = typeof (Resource);
}
}
O puede anular FormatErrorMessage
si desea agregar parámetros adicionales. Ahora las propiedades se ven de la siguiente manera:
[MyStringLength]
public string OfficePhone { get; set; }
[MyStringLength]
public string CellPhone { get; set; }
El ErrorMessage predeterminado para la validación de StringLength es mucho más largo de lo que me gustaría:
El campo {Nombre} debe ser una cadena con una longitud máxima de {StringLength}.
Me gustaría cambiarlo universalmente a algo como:
La longitud máxima es {StringLength}.
Me gustaría evitar especificar redundantemente el ErrorMessage para cada cadena que declaro:
[StringLength(20, ErrorMessage="Maximum length is 20")]
public string OfficePhone { get; set; }
[StringLength(20, ErrorMessage="Maximum length is 20")]
public string CellPhone { get; set; }
Estoy bastante seguro de que recuerdo que hay una forma sencilla de cambiar universalmente el mensaje de error, pero no puedo recordarlo.
EDITAR:
En aras de la aclaración, estoy tratando de cambiar universalmente el ErrorMessage predeterminado para que pueda ingresar:
[StringLength(20)]
public string OfficePhone { get; set; }
y haga que el mensaje de error diga:
La longitud máxima es de 20.
Tratar
[ StringLength(20, ErrorMessage = "Maximum length is {1}") ]
Si recuerdo bien eso debería ser.