Me gustaría especificar que un campo decimal para un precio debe ser> = 0, pero realmente no quiero imponer un valor máximo.
Esto es lo que tengo hasta ahora ... No estoy seguro de cuál es la forma correcta de hacer esto.
[Range(typeof(decimal), "0", "??"] public decimal Price { get; set; }
c#
.net
asp.net-mvc
data-annotations
usuario169867
fuente
fuente
Respuestas:
Qué tal algo como esto:
Eso debería hacer lo que está buscando y puede evitar el uso de cadenas.
fuente
The field Fixed price discount must be between 0.01 and 1.79769313486232E+308.
Si le preocupa que la cadena se vea bien, puede hacer esto:
Esto tendrá un mensaje de error predeterminado de:
fuente
Parece que no hay más remedio que poner el valor máximo manualmente. Esperaba que hubiera algún tipo de sobrecarga en la que no necesitaras especificar una.
fuente
[Min(0)]
: esto también tiene un mejor mensaje de validación. Sugeriría actualizar su respuestaPuedes usar:
Esto impondrá un valor mínimo requerido de 0 (cero) y ningún valor máximo.
Necesita DataAnnotationsExtensions para usar esto.
fuente
Si trabaja con precios, estoy seguro de que puede asumir con seguridad que nada costará más de 1 billón de dólares.
Yo usaría:
O si realmente lo necesita, simplemente pegue el valor de
Decimal.MaxValue
(sin las comas):79,228,162,514,264,337,593,543,950,335
Cualquiera de estos funcionará bien si no eres de Zimbabwe.
fuente
[Range(0.0,Decimal.MaxValue)]
?Puede usar validación personalizada:
Tipo de métodos de validación:
fuente
Iba a intentar algo como esto:
Sin embargo, el problema al hacer esto es que el compilador quiere una expresión constante, lo que no permite
((double)0).ToString()
. El compilador se tomefuente
utilizando Range con
Espero que ayude
fuente
[Rango (0.01,100000000, ErrorMessage = "¡El precio debe ser mayor que cero!")]
fuente
Me puse
decimal.MaxValue.ToString()
ya que este es el límite máximo efectivo para el tipo decmial es equivalente a no tener un límite superior.fuente