MVC 4 - DataAnnotations - Validation pour le type
J'ai le code suivant travail
[Required(ErrorMessage = "Price is required.")]
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "Price xx.xx")]
public decimal? productPrice { get; set; }
Quand la page est soumise à
Prix = Champ VIDE message d'erreur est "le Prix est requis.".
Prix de vente = plus de 9999 message d'erreur est "Prix de xx.xx".
Cependant, quand je tape 'aaaa' le message d'erreur est
"Le terrain productPrice doit être un nombre."
Comment puis-je changer le message si le type n'est pas correcte?
Comme : "le Prix doit être un nombre décimal/nombre entre 1-9999.
---- JOUR: ----
Le code ci-dessous travaillé avec
NULL, Pas de Virgule, Entre Plage, MAIS ne fonctionne pas avec ".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; }
source d'informationauteur Ravi Ram
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer avec l'expression régulière:
vous pouvez également essayer les Annotations de Données des Extensions:
http://dataannotationsextensions.org/Home/Wiki
Ou écrire votre propre mise en œuvre,quelque chose comme ceci :
https://github.com/srkirkland/DataAnnotationsExtensions/blob/master/DataAnnotationsExtensions/DigitsAttribute.cs
Mise à JOUR
Avec la REGEX (Matchs $à 9 999.99 | $0.70 | .1)
Ou à l'aide de Gamme avec une légère modification à @Martin suggestion (en fait, est une meilleure solution):
Tout d'abord, je pense que vous souhaitez modifier votre Gamme attribut
Selon MSDN, c'est la façon correcte d'utiliser RangeAttribute.
Deuxième:
C'est en fait discrète côté client JavaScript de validation des coups de pied dans. Votre gamme accepteur de feu après que le numéro a été validé. Vous pouvez désactiver le nombre validateur bien que je ne recommande pas cette:
Je pense que vous pouvez peut-être trébucher sur un bug dans jQuery. Cette validation est la lutte contre la substance émise pour vos attributs de validation.
J'ai la propriété suivante:
Utilisé dans un affichage comme ceci:
Juste par lui-même, une valeur "toto" les rendements mon message d'erreur. Une valeur de 0,075 est acceptée. Une valeur de .075 rendements "La Valeur du champ doit être un nombre", le même problème que vous semblez avoir.
basé sur cette SORTE d'articlej'ai ajouté ce qui suit dans le document prêt:
Maintenant je ne reçois mon message d'erreur, et seulement à la date prévue (.075 est accepté).