none
Validacion de tipo decimal en el modelo con expresiones regulares MVC 3 RRS feed

  • Pregunta

  • Saludos comunidad, como validan ustedes los numeros decimales.

    En el modelo tengo lo siguiente:

    [Required(ErrorMessage = "El Precio es obligatorio...")]
    [Precio(ErrorMessage = "El precio no tiene el formato correcto...")]
    public decimal Precio { get; set; }

    El filtro Precio personalizado:

    [AttributeUsage(AttributeTargets.Property)]
        public class PrecioAttribute : ValidationAttribute
        {
            public override bool IsValid(object value)
            {
                if(Convert.ToDecimal(value) != 0)
                {
                    Regex patronDecimal = new Regex(@"^\d{1,2}([.][0-9]{1,2})?$");
    
                    return patronDecimal.IsMatch(Convert.ToDecimal(value).ToString());
                }
    
                return false;
            }
        }

    EL problema es que no me valida los siguientes numeros: 12.75 o 12,75 me sale error, esta misma expresion regular la probe en un webform y me funciona correctamente.

    La expresion regular debe de tener 1 o 2 numeros enteros y 1 o 2 numeros decimales.

    Gracias por su tiempo


    • Editado RealMaster miércoles, 22 de enero de 2014 4:10
    miércoles, 22 de enero de 2014 4:08

Todas las respuestas

  • hola

    las validaciones solo las realizas del lado del servidor ? digo no has habilitado las validaciones de jquery en el cliente con unobtrusive validation

    el tema es que debes tener en cuenta la cultura, si es por ejemplo es-ES solo reocnocera la coma como decimal, pero si es en-US entonces sera le punto

    se supone que si usas expresiones regulares no debes convertir a numero, solo usarias

     return patronDecimal.IsMatch(value.ToString());

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 22 de enero de 2014 12:29