MVC3 Attribut de validation question
Je suis de comportement bizarre avec ma validation de mon point de vue.
Mon modèle possède cette propriété.
[Display(Name = "Overflow Capacity")]
[RegularExpression(@"[-+]?[0-9]*\.?[0-9]?[0-9]", ErrorMessage = "Number required.")]
[Range(0,9999.99,ErrorMessage = "Value must be between 0 - 9,999.99")]
public decimal OverFlowCapacity { get; set; }
Mon point de vue a ceci:
<tr>
<td>@Html.LabelFor(m=> m.OverFlowCapacity)</td>
<td>@Html.EditorFor(m=>m.OverFlowCapacity)</td>
<td> @Html.ValidationMessageFor(model => model.OverFlowCapacity)</td>
</tr>
Si je entrer une valeur comme "ABC", j'obtiens le message de validation de 'Nombre'
Si je entrer une valeur de 999999, j'obtiens le message de validation de la Valeur doit être comprise entre 0 à 9 999 habitants.99'
Deux de ces messages sont reçus lorsque j'ai onglet de la boîte de texte comme prévu.
Quand je quitte la zone de texte vide et de l'onglet, je n'ai pas d'erreurs, comme prévu.
Cependant, lorsque je soumets, je reçois un message de validation " Le Dépassement de la Capacité de champ est requis.'
Je ne sais pas d'où ça vient. J'ai essayé de supprimer tous les attributs de validation du modèle, et encore obtenir le 'required' message. Je suis à une perte.
Voici les scripts que j'ai référencé.
J'ai d'autres problèmes avec mvcfoolproof que je peut poster plus tard. Je me demande si ce n'est pas en quelque sorte responsable de mes problèmes.
Vous devez vous connecter pour publier un commentaire.
Ce qui vous arrive maintenant, c'est le post de validation est de coups de pied une fois que le formulaire a été soumis et la détermination que l'
decimal
valeur ne peut pas êtrenull
. Droit maintenant, vous êtes à l'aide d'undecimal
type qui est non nullable. Si vous voulez que ce comportement et vous voulez voir la validation avant de soumettre le formulaire, puis ajouter le[Required]
attribut de la propriété. Toutefois, si vous ne pas souhaitez cette fonctionnalité et il peut éventuellement êtrenull
, puis changer votre type dedecimal
àdecimal?
ouNullable<decimal>
.Ne pas autoriser les valeurs null et le soumettre à la validation:
Autoriser les valeurs null et de se débarrasser de post-soumettre erreur de validation:
Puisque vous n'êtes pas le marquage de votre décimal type nullable, MVC ne sais pas quoi faire avec le champ vide vous êtes à la publication. Essayez cette option si vous souhaitez autoriser les valeurs null/champs vides:
et à essayer si vous voulez avoir un pré-soumettre un message de validation nécessitant le champ à remplir:
Réponses ci-dessus expliquent Nécessaires message d'erreur assez bien donc je vais juste me concentrer sur le deuxième message d'erreur. j'.e si vous mettez 'abc' jquery vous dit "Numéro". Comment jquery sais que cette entrée ne devrait accepter nombre de champs. La réponse est: par le biais de discrète attributs qui sont générés avec des champs de formulaire. Si vous inspectez champ de saisie, vous trouverez quelque chose comme
donc de remplacer cette valeur par défaut message de validation que vous avez pour décorer votre modèle avec l'attribut qui fait la même chose exacte (numéro de validation) et de leur vous pouvez ignorer le message de validation
Je doute attribut Numérique est présent dans DataAnnotation ou framework mvc. vous devez vérifier que. Il y a certains attributs discuté et disponible ici