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,335Cualquiera 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