validationmessagefor net mvc data bootstrap asp annotation asp.net-mvc-3 validation entity-framework-4

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:

  1. {0} - Nombre
  2. {1} - Longitud máxima
  3. {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.