Magazine High tech

Comment utiliser les contrôles CompareValidator et RangeValidator sous .NET

Publié le 07 novembre 2007 par Dave Lizotte
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" />

Retour à La Une de Logo Paperblog

A propos de l’auteur


Dave Lizotte 57 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte