Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    View Cyril Durand's profile on LinkedIn

    hit counters

CompareValidator et RangeValidator - validité d'un entier, d'un nombre à virgule ...

Dans la lignée de mes posts sur la validation d'une checkboxlist et la validation d'une checkbox, voici un post qui vous explique comment utiliser les contrôles CompareValidator et RangeValidator afin de vous assurer que l'utilisateur saisisse bien un nombre, qu'il soit compris entre tel et tel valeur etc...

Validation d'un nombre entier :

<asp:label runat="server" AssociatedControlID="tbInteger" Text="Nombre entier" /> <asp:TextBox runat="server" ID="tbInteger" /> <asp:CompareValidator runat="server" ControlToValidate="tbInteger" Type="Integer" Operator="DataTypeCheck" Text="*" />

Vérifie que le nombre saisit est compris entre int.MinValue et int.MaxValue.

Validation d'un nombre à virgule :

<asp:Label runat="server" AssociatedControlID="tbDouble" Text="Nombre à virgule" /> <asp:TextBox ID="tbDouble" runat="server" /> <asp:CompareValidator runat="server" ControlToValidate="tbDouble" Operator="DataTypeCheck" Text="*" Type="Double" />

Vérifie que le nombre est compris entre Double.MinValue et Double.MaxValue. La virgule est dépendante de la culture du thread en cours. Cette culture se spécifie dans le web.config

<globalization culture="fr-FR" uiCulture="fr-FR">

Vous pouvez aussi mettre auto comme value, dans ce cas là, la culture sera suivant la configuration du navigateur.

Validation d'une date :

<asp:Label runat="server" AssociatedControlID="tbDate" Text="Date" /> <asp:TextBox ID="tbDate" runat="server" /> <asp:CompareValidator runat="server" ControlToValidate="tbDate" Operator="DataTypeCheck" Text="*" Type="date" />

Là encore le format de la date sera suivant la culture en cours. N'oubliez pas d'utiliser le contrôle Calendar des Ajax toolkits, ce sera beaucoup plus agréable pour l'utilisateur.

Validation d'une valeur par rapport à une autre valeur fixe :

Comme son nom l'indique, le CompareValidator peut aussi vérifier qu'une valeur est inférieure, supérieure à une autre ...

<asp:Label runat="server" AssociatedControlID="tbCompare" Text="Comparaison" /> <asp:TextBox ID="tbCompare" runat="server" /> <asp:CompareValidator runat="server" ControlToValidate="tbCompare" ValueToCompare="5" Operator="LessThan" Text="*" Type="Integer" />

Les opérateurs disponibles sont LessThan, LessThanEqual, NotEqual, Equal, GreaterThan, GreaterThanEqual. Vous pouvez faire la même chose avec le type Date, Double, String. Dans le cas d'une comparaison avec un String ce sera la méthode String.Compare qui sera utilisé, pour la plupart des cultures, c'est l'ordre alphabétique qui est pris en compte.

Validation d'une valeur via un interval de valeur fixe :

On utilise cette fois-ci le RangeValidator :

<asp:Label runat="server" AssociatedControlID="tbCompare2" Text="Comparaison 2" /> <asp:TextBox ID="tbCompare2" runat="server" /> <asp:RangeValidator runat="server" ControlToValidate="tbCompare2" MinimumValue="01/01/2007" MaximumValue="31/12/2007" Type="Date" Text="*" />

Là encore on peut tester les dates, les entiers, les nombres à virgules et les strings, les comparaisons se feront suivant la culture actuelle.

Validation d'une valeur par rapport à une autre valeur définit par l'utilisateur

Lorsque vous utilisez un CompareValidator avec la propriété ValueToCompare vous pouvez la remplacer par la propriété ControlToCompare afin de laisser le choix à l'utilisateur sur quel valeur il doit comparer. C'est ce qu'on utilise lorsqu'on veut vérifier que 2 mots de passe sont identiques.

<asp:Label runat="server" AssociatedControlID="tbCompare" Text="Comparaison" /> <asp:TextBox ID="tbCompare" runat="server" /> <asp:TextBox ID="tbCompare2" runat="server" /> <asp:CompareValidator runat="server" ControlToValidate="tbCompare" ControlToCompare="tbCompare2" Operator="LessThan" Text="*" Type="Integer" />


Ces validateurs ne testent pas la présence de la valeur, seulement que la valeur est correct. Pour rendre obligatoire une valeur il faut impérativement utiliser un RequiredFieldValidator. Par défaut ASP.net ne vérifie pas les valeurs, il faut impérativement vérifier que la page est valide avant de faire toute action :

Page.Validate("validationGroupName"); if (Page.IsValid) { // les valeurs sont OK }

Ensuite vous pouvez sans risque faire un XXX.Parse pour récuperer la bonne valeur.

Enfin, pour rappel, les validators ne sont pas compatibles avec les UpdatePanels, mais j'ai déjà expliqué comment rendre les validators compatibles avec les UpdatePanels.

Posted: mardi 16 octobre 2007 03:02 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Disparition de variables de session PHP après une redirection ? par MadMatt le il y a 9 heures et 35 minutes

- [MOSS 2007] Publier ses formulaires InfoPath via feature par Adrien Siffermann le il y a 12 heures et 42 minutes

- Imagine Cup 2008 - Paris - Les résultats par TheSaib .NET blog le il y a 14 heures et 4 minutes

- L'Egypte accueille Imagine Cup 2009 par Code is poetry le il y a 14 heures et 16 minutes

- PowerShell : Mise en ligne de fonctions intéressantes pour SharePoint par Blog Technique de Romelard Fabrice le il y a 15 heures et 24 minutes

- Raccourcis clavier et CRM 4 par Clark, C#, MSCRM, SBS le il y a 19 heures et 29 minutes

- [Silverlight] Comment échanger des données entre une application Silverlight et une page ASP.NET via cookies ? par Thomas Lebrun le il y a 20 heures et 6 minutes

- SharePoint 2007 : Trouver les fichiers CheckOut dans une librairie de document par Philippe Sentenac [MVP SharePoint] le il y a 22 heures et 34 minutes

- [Open XML] Travailler avec Open XML : Linq To XML (Partie 2 - Requêtes/XPath) par Julien Chable le 07-08-2008, 02:05

- [Open XML] Travailler avec Open XML : Linq To XML (Partie 1 - Namespace) par Julien Chable le 07-08-2008, 00:44