Les grandes lignes de la programmation en ASP.NET 2.0


précédentsommairesuivant

VI. Validation des données

Avec la sécurité, la validation des données est en général la chose la plus importante dans un site web. Ici, nous allons pouvoir travailler côté client et côté serveur, c'est indispensable pour prévenir au plus tôt l'utilisateur d'une erreur éventuelle. En effet, il est inutile d'envoyer une demande au serveur si l'information transmise est erronée : cela génère une perte de temps et un encombrement inutile du serveur.

La validation côté client est donc celle qui intervient la première et se fait en général en JavaScript. ASP.NET fournit des contrôles de validation qui génèrent le code javascript associé, vous évitant de connaître à fond le langage et de devoir taper le code.

Les principaux contrôles de validation sont :

  • RequiredFieldValidator
  • RangeValidator
  • CompareValidator
  • RegularExpressionValidator
  • CustomValidator
  • ValidationSummary

Voyons un peu les caractéristiques générales de chacun.

a. RequiredFieldValidator

Le plus fréquemment utilisé car est le seul qui peut s'assurer qu'un champ n'est pas vide. En effet, tous les autres contrôles de validation acceptent un champ vide donc, associer ce contrôle de validation aux autres contrôles permet cette vérification essentielle.
Le RequiredFieldValidator a donc pour fonction de vérifier qu'un champ a été modifié. Ses propriétés principales à renseigner sont :

Nom de la propriété Utilisation
ControlToValidate doit contenir le nom du contrôle à valider
ErrorMessage message à afficher en cas d'erreur dans le contrôle ValidationSummary
InitialValue contient une valeur qui invalide le contrôle si celui-ci est égal à cette valeur précise
Text texte affiché en cas de non validation

Exemple de RequiredFieldValidator sur une TextBox nommée TxtNom :

 
Sélectionnez

                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                     ControlToValidate="TxtNom" ErrorMessage="Admin n'est pas un nom valide"
                     SetFocusOnError="True" InitialValue="Admin"></asp:RequiredFieldValidator>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                     ControlToValidate="TxtNom" ErrorMessage="Le champ nom est obligatoire"
 

Vous remarquez que pour valider le nom qui est opbligatoire, il nous faut 2 contrôles RequiredFieldValidator.
Un pour signaler que le nom ne peut pas être un champ vide, l'autre pour interdire l'utilisation du nom "Admin".

Une petite astuce dans la FAQ ASP.NET

b. RangeValidator

Comme son nom l'indique, il sera utilisé pour valider l'encodage entre des bornes données. Par exemple, encoder un nombre entre 1 et 10.
Les propriétés sont pratiquemment identiques à celles du contrôle précédent :

Nom de la propriété Utilisation
ControlToValidate doit contenir le nom du contrôle à valider
ErrorMessage message à afficher en cas d'erreur dans le contrôle ValidationSummary
MinimumValue valeur minimale de la plage de données
MaximumValue valeur maximale de la plage de données
Text texte affiché en cas de non validation

Exemple de validation entre 1 et 10 :

 
Sélectionnez

            <asp:Label ID="Label1" runat="server" Text="Entrez une valeur comprise entre 1 et 10 :"</asp:Label>
            <asp:TextBox ID="TxtValeur" runat="server"></asp:TextBox>
            <asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="RangeValidator" 
			MaximumValue="10" MinimumValue="1" Type="Integer" 
			ControlToValidate="TxtValue">Valeur entre 1 et 10 requise !</asp:RangeValidator>
 

c. CompareValidator

Il utilise un opérateur pour comparer les valeurs en présence et valider leur concordance. La situation la plus courante d'utilisation est, bien entendu, lors d'une deuxième saisie d'un mot de passe.
Les propriétés restent aussi dans les mêmes normes. Par contre, vous pouvez avoir plusieurs types de validation :

Comparaison à un type.

 
Sélectionnez

<asp:CompareValidator runat="server" ID="CompareValidator1" ControlToValidate="TxtValeur" Type="Integer" 
Operator="DataTypeCheck" ErrorMessage="Doit être un chiffre entier de type integer !"</asp:CompareValidator>

Comparaison à une valeur.

 
Sélectionnez

<asp:CompareValidator runat="server" ID="CompareValidator1" ControlToValidate="TxtValeur" Type="Integer" 
Operator="GreaterThan" ValueToCompare="0" ErrorMessage="Un chiffre positif est requis !"</asp:CompareValidator>

Comparaison à un autre champ.

 
Sélectionnez

<asp:CompareValidator runat="server" ID="CompareValidator1" ControlToValidate="TxtMotPasse2" Type="String" 
Operator="Equal" ControlToCompare="TxtMotPasse1" 
ErrorMessage="Les mots de passe ne correspondent pas !"</asp:CompareValidator>

N'oubliez pas que ce contrôle accepte un champ vide et qu'il faut donc associer un RequiredFieldValidator aux champs qui ne peuvent pas être vides !
Cela est aussi valable pour le RangeValidator.

d. RegularExpressionValidator

Ce contrôle valide un champ suivant une expression régulière. Il convient pour des tests de validation très complexes mais demande beaucoup de ressources donc, ne l'utilisez pas pour des validations qui peuvent se faire aisément avec plusieurs autres contrôles de validation.
Il utilise les mêmes propriétés que les contrôles précédents avec en plus une propriété ValidationExpression qui correspond évidemment à l'expression régulière de test.
Un petit exemple de validation d'un numéro de compte bancaire pour en voir l'application :

 
Sélectionnez

          <asp:Label ID="Label1" runat="server" Text="Entrer votre numéro de compte :"</asp:Label>
          <td><asp:TextBox ID="TxtCptBancaire" runat="server"></asp:TextBox>
          <td><asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
		  ErrorMessage="RegularExpressionValidator" ControlToValidate="TxtCptBancaire" 
		  ValidationExpression="^\d{3}-\d{7}-\d{2}$">Format incorrect
		  </asp:RegularExpressionValidator>
 

Un autre petit exemple dans la FAQ ASP.NET : validité d'une adresse IP

Visual Studio vous propose une liste d'expressions régulières courantes accessible dans la propriétés ValidatorExpression du contrôle.

e. CustomValidator

L'utilisateur définit lui-même une fonction pour effectuer la validation lorsque les contrôles standards ne peuvent pas assumer ce rôle.
Dans ce cas, les propriétés sont un peu différentes :

Dans le cas d'une validation côté client :

  • La propriété ClientValidationFunction contient le nom de la fonction
  • La fonction doit être sous la forme : Function ValidationPersonnelle (source, arguments)
  • la source est l'objet CustomValidator côté client
  • arguments est un objet comportant deux propriétés : Value et IsValid
  • La propriété Value est la valeur à valider
  • La propriété IsValid est un booléen retournant le résultat de la validation

La validation côté client s'effectue avec du code javascript soit entre les balises ad hoc, soit dans un fichier ".js" séparé.
Ce genre de code est bien connu des développeurs javascript :

 
Sélectionnez

<script language="javascript">
function Validation (obj, args)
{
}
</script>

Dans le cas d'une validation côté serveur :

Placez le code de validation dans l'événement OnServerValidate

Vous trouverez un exemple de CustomValidator dans la source "DemoValidation", chapitre des téléchargements !

f. ValidationSummary

Ce contrôle n'est pas un contrôle de validation à proprement parler, il sert à afficher sous différentes formes le résultat de tous les contrôles de validation sur la page aspx si une erreur est survenue. Il est bien évident que vous pouvez l'omettre et gérer vous-même un affichage d'erreur.

Le contrôle ValidationSummary s'affiche dès que la propriété IsValid de la page est à False.
Il interroge les différents contrôles non valides et récupère la valeur de leur propriété ErrorMessage.
Pour afficher le résultat, vous avez les DisplayMode suivants à votre disposition :

  • List : simple liste
  • BulletList : liste avec puces
  • SingleParagraph : les messages d'erreur sont concaténés les uns à la suite des autres, séparés par une virgule

L'emplacement de l'affichage peut s'effectuer de deux manières :

  • à l'emplacement du contrôle ValidationSummary : mettre sa propriété ShowSummary = True
  • dans une boite de dialogue : mettre sa propriété ShowDialog = True

Il est aussi intéressant de s'arrêter un peu à la propriété ValidationGroup des contrôles utilisateurs. En effet, regrouper certains contrôles sous un même nom dans la propriété ValidationGroup permet de valider d'abord une série de champs puis une autre suivant le résultat de la première validation.

Un exemple nommé DemoValidation est repris dans la rubrique téléchargement. Il regroupe un peu tous les contrôles de validation et vous en montre une simple utilisation.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Cécile Muno. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.