2009-06-23 6 views
0

J'ai rencontré un problème en essayant de modifier un formulaire que je n'ai pas construit moi-même.C# Utiliser deux valideurs sur le même champ

La forme a un champ d'entrée asp: pour une valeur de date, qui est vérifiée par un requiredFieldVal et un rangeVal. Le RangeVal a le type mis à "date" et la valeur min 2000-01-01: valeur maximale 3000-01-01

Maintenant au problème, j'essaie d'ajouter de sorte que l'utilisateur peut également entrer la date dans la forme de "20000101" en d'autres termes sans le "-".

J'ai essayé d'ajouter un autre rangeVal avec le type Integer et les valeurs min, max, et de les mettre tous les deux dans le même ValidationGroup, mais cela n'a pas fonctionné. Comment puis-je permettre à l'utilisateur d'utiliser les deux formats (l'un ou l'autre) dans le champ de saisie de la date.

Merci d'avance!

Répondre

0

Vous pouvez utiliser un validateur d'expressions régulières à la place du validateur de plage. Je suis un peu rouillé avec Regex, mais je suis sûr que vous pouvez trouver quelque chose ici.

http://www.regular-expressions.info/

Voici un lien vers la page dates:

http://www.regular-expressions.info/dates.html

essayer, je pense que cela va fonctionner. Sinon, laissez-moi savoir et je travaillerai à corriger:

((19|20)\d\d[- /.](0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])|((19|20)\d\d(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))) 

Un autre poste a un point cette regex ne valide pas certaines dates non valides comme 31. Dans ce février cas, je voudrais juste créer une validation class qui hérite du validateur regex et remplace la méthode EvaluateIsValid et vérifie s'il s'agit d'une date réelle. Cela permet la plus grande partie de la validation effectuée sur le client, la sauvegarde se situant au niveau du serveur, qui devrait de toute façon effectuer une validation secondaire.

+0

Un masque très basique serait^\ d {4} [-]? \ D {2} [-]? \ D {2} $ en raison de la validation de la date, en essayant de faire tout cela dans Regex fou, difficile à comprendre l'expression. –

+0

Merci pour la suggestion, vous mes compétences Regex est au strict minimum, et en modifiant leur exemple à mes besoins peut être un peu difficile – Andreas

+0

Semble fonctionner correctement de mes tests initiaux, grâce à un groupe Kevin. Maintenant, je vais juste m'assurer que la date sans le "-" est acceptée comme une date valide dans le DB – Andreas

2

Lorsque vous utilisez plusieurs contrôles de validation pour valider un seul contrôle, tous les contrôles de validation doivent réussir. Vous pouvez utiliser une expression régulière (comme le souligne Kevin), mais effectuer la validation dont vous avez besoin (vérifier que la valeur est un objet DateTime valide et dans la plage spécifiée) sera difficile à effectuer proprement.

Je vous suggère d'écrire votre propre contrôle CustomValidator puis de l'utiliser pour valider vos valeurs comme vous le souhaitez.