2009-09-11 5 views
0

Dans une application Web asp.net mvc, je souhaite afficher un message personnalisé pour les valeurs de modèle non valides. Le problème que je rencontre est avec les propriétés numériques. Un utilisateur peut placer une chaîne dans une zone de texte liée à une propriété décimale et cliquer sur soumettre. Étant donné que le mappeur de modèle mvc asp.net ne peut pas lier la valeur de chaîne à la propriété decimal sur mon objet, il conserve simplement sa valeur par défaut 0.Comment valider correctement les valeurs numériques publiées dans asp.net mvc?

J'ai une validation de modèle en cours dans mon modèle pour vérifier les valeurs non valides et retourner de bons messages, mais au moment où j'atteins ce code, évidemment la propriété decimal n'est pas invalide sur mon objet (puisqu'il est 0). J'essaie de trouver un bon moyen de mettre en œuvre ce genre de validation. Il semble que j'ai besoin d'intercepter les valeurs du formulaire et d'y effectuer la validation.

J'avais essayé de garder toute ma validation au même endroit, mais il semble que cette solution aura beaucoup de Request.Form dispersés dans mon code. Peut-être devrais-je écrire mon propre classeur modèle et mettre ce genre de validation là. Je cherche juste quelques opinions à ce sujet. Merci!

Répondre

1

Examinez-vous ModelState.IsValid? Il devrait déjà être attraper cela.

+0

Correct, ModelState.IsValid est faux. Le message d'erreur n'est cependant pas très utile. Je voudrais avoir un message plus convivial comme "Vous ne pouvez pas mettre une chaîne dans un champ décimal, dummy." Il semble que je doive réellement obtenir la valeur de forme afin de faire ce genre de validation. –

+0

Non, vous n'avez pas besoin d'obtenir la valeur du formulaire; la valeur soumise par l'utilisateur est dans ModelStateCollection. Comme c'est l'erreur spécifique. –

+0

Ok, ModelStateCollection a ErrorMessage, qui est vide, et Exception ... qui, en forant vers le bas dans InnerException quelques fois je reçois quelque chose d'utile. Bien sûr, le message le plus utile n'est pas le message le plus intime, ou le message le plus ... * soupir * –

Questions connexes