he el siguiente código de trabajoMVC 4 - DataAnnotations - Validación de Tipo
[Required(ErrorMessage = "Price is required.")]
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "Price xx.xx")]
public decimal? productPrice { get; set; }
Cuando la página se presenta con Precio = mensaje de error de campo vacío es "se requiere de precio.". Precio = más de 9999 mensaje de error es "Precio xx.xx".
Sin embargo, cuando escribo 'aaaa' el mensaje de error es "El campo productPrice debe ser un número."
¿Cómo puedo cambiar el mensaje si el tipo no es correcto? Al igual que :. "El precio debe ser un decimal/número entre 1-9999
---- ACTUALIZACIÓN: ---- El código siguiente trabajó con
NULL, no decimal, entre la gama, pero no se trabaja con" 0.1"
[Required(ErrorMessage = "Price is required.")]
[RegularExpression(@"[0-9]*\.?[0-9]+", ErrorMessage = "Price must be a Numbers only.")]
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "Price must be a decimal/number between {1} and {2}.")]
public decimal? productPrice { get; set; }
Esta expresión regular fallará en varios casos como ".1" No recomiendo usar expresiones regulares para hacer un crujido de números. las expresiones regulares están pensadas para hacer coincidir las cadenas de texto (entradas). RangeAttribute es la forma más adecuada de resolver este problema. –
@JOBG como dijo Martin, ".1" NO está siendo capturado por ninguna de las (3) Anotaciones de datos. ¿Alguna idea? –
Simplemente cambie el método de Rango de @MartinDevillers de 1-999 a 0-999 y debería dejar pasar ".1", como dije en realidad, Range es una mejor solución. También agregué una expresión regular en caso de que quiera verificar eso. – JOBG