Je voudrais préciser qu'un champ décimal pour un prix doit être> = 0 mais je ne veux pas vraiment imposer une valeur max.
Voici ce que j'ai jusqu'à présent ... Je ne sais pas quelle est la bonne façon de procéder.
[Range(typeof(decimal), "0", "??"] public decimal Price { get; set; }
c#
.net
asp.net-mvc
data-annotations
user169867
la source
la source
Réponses:
Que diriez-vous quelque chose comme ça:
Cela devrait faire ce que vous recherchez et vous pouvez éviter d'utiliser des chaînes.
la source
The field Fixed price discount must be between 0.01 and 1.79769313486232E+308.
Si vous êtes préoccupé par la belle apparence de la chaîne, vous pouvez le faire:
Cela aura un message d'erreur par défaut de:
la source
Il semble qu'il n'y ait pas d'autre choix que de mettre manuellement la valeur maximale. J'espérais qu'il y avait un type de surcharge où vous n'aviez pas besoin d'en spécifier une.
la source
[Min(0)]
- Cela a également un meilleur message de validation. Je suggérerais de mettre à jour votre réponseVous pouvez utiliser:
Cela imposera une valeur minimale requise de 0 (zéro) et aucune valeur maximale.
Vous avez besoin de DataAnnotationsExtensions pour l'utiliser.
la source
Si vous travaillez avec des prix, je suis sûr que vous pouvez supposer que rien ne coûtera plus de 1 billion de dollars.
J'utiliserais:
Ou si vous en avez vraiment besoin, collez simplement la valeur de
Decimal.MaxValue
(sans les virgules):79,228,162,514,264,337,593,543,950,335
L'un ou l'autre fonctionnera bien si vous n'êtes pas du Zimbabwe.
la source
[Range(0.0,Decimal.MaxValue)]
?Vous pouvez utiliser la validation personnalisée:
Type de méthodes de validation:
la source
J'allais essayer quelque chose comme ça:
Le problème avec cela, cependant, est que le compilateur veut une expression constante, ce qui interdit
((double)0).ToString()
. Le compilateur va prendrela source
utilisation de Range avec
J'espère que cela aidera
la source
[Range (0.01,100000000, ErrorMessage = "Le prix doit être supérieur à zéro!")]
la source
Je dirais que
decimal.MaxValue.ToString()
puisque c'est le plafond effectif pour le type decmial, cela équivaut à ne pas avoir de limite supérieure.la source