Estoy utilizando ASP.NET MVC con DataAnnotaciones. Creé el siguiente ValidationAttribute personalizado que funciona bien.ASP.NET MVC: Adición de ErrorMessage personalizado que incorpora DisplayName a Custom ValidationAttribute
public class StringRangeAttribute : ValidationAttribute
{
public int MinLength { get; set; }
public int MaxLength { get; set; }
public StringRangeAttribute(int minLength, int maxLength)
{
this.MinLength = (minLength < 0) ? 0 : minLength;
this.MaxLength = (maxLength < 0) ? 0 : maxLength;
}
public override bool IsValid(object value)
{
//null or empty is <em>not</em> invalid
string str = (string)value;
if (string.IsNullOrEmpty(str))
return true;
return (str.Length >= this.MinLength && str.Length <= this.MaxLength);
}
}
Sin embargo, el mensaje de error que aparece es el estándar "El campo * no es válido". Me gustaría cambiar esto para que sea: "[DisplayName] debe estar entre [minlength] y [maxlength]", sin embargo, no puedo entender cómo obtener el DisplayName o incluso el nombre del campo dentro de esta clase.
¿Alguien sabe?
Works! ¡Muchas gracias! – Alistair
genial, aunque no veo por qué se requiere la devolución de llamada en el constructor – dice