FAQ ASP.NET/VB.NET
Sommaire
>
Les webforms >
Formulaires et code-behind >
Validators
Qu'est-ce qu'un validator ?
Peut-on se passer de la validation coté serveur et n'utiliser que la validation coté client ?
A quel moment intervient la validation dans le cycle de vie d'une page ?
Comment afficher un message d'erreur dans un validateur ?
Quels sont les contrôles serveur que l'on peut valider ?
Comment vérifier qu'une page est valide coté serveur ?
Qu'est-ce qu'un groupe de validation ?
Comment valider un RadioButton ?
6.5.2.1. RequiredFieldValidator (1)
A quoi sert le RequiredFieldValidator ?
6.5.2.2. RangeValidator (1)
A quoi sert le RangeValidator ?
6.5.2.3. CompareValidator (1)
A quoi sert le CompareValidator ?
6.5.2.4. RegularExpressionValidator (1)
A quoi sert le RegularExpressionValidator ?
6.5.2.5. CustomValidator (2)
A quoi sert le CustomValidator ?
Comment passer des paramètres à la fonction de validation coté client ?
6.5.2.6. ValidationSummary (1)
A quoi sert le ValidationSummary ?
Qu'est-ce qu'un validator ?
Peut-on se passer de la validation coté serveur et n'utiliser que la validation coté client ?
A quel moment intervient la validation dans le cycle de vie d'une page ?
Comment afficher un message d'erreur dans un validateur ?
Quels sont les contrôles serveur que l'on peut valider ?
Comment vérifier qu'une page est valide coté serveur ?
Qu'est-ce qu'un groupe de validation ?
Comment valider un RadioButton ?
6.5.2.1. RequiredFieldValidator (1)
A quoi sert le RequiredFieldValidator ?
6.5.2.2. RangeValidator (1)
A quoi sert le RangeValidator ?
6.5.2.3. CompareValidator (1)
A quoi sert le CompareValidator ?
6.5.2.4. RegularExpressionValidator (1)
A quoi sert le RegularExpressionValidator ?
6.5.2.5. CustomValidator (2)
A quoi sert le CustomValidator ?
Comment passer des paramètres à la fonction de validation coté client ?
6.5.2.6. ValidationSummary (1)
A quoi sert le ValidationSummary ?
| ||
auteur : nico-pyright(c) | ||
Un validator est un contrôle serveur particulier qui permet de faire de la validation de saisie par l'utilisateur. La collecte d'informations via un formulaire est une des nombreuses taches que peut effectuer une page d'un site web. Vous pouvez par exemple avoir besoin de saisir les coordonnées d'un client, des informations sur une commande, etc ... Les pages web disposent de toute une série de contrôles qui permettent d'obtenir des saisies de l'utilisateur. Champ de texte, radio boutons, case à cochée, liste déroulante, etc ... La validation des données constiste à vérifier qu'on récupère bien une date là où l'utilisateur doit saisir une date, qu'on récupère bien un nombre où l'on doit récupérer un nombre et pas une chaine. Le framework ASP.NET simplifie ces vérifications à l'aide des validators. Ce sont des contrôles ASP.NET qui intègrent la logique permettant de vérifier la saisie des utilisateurs. Ils vont grandement nous simplifier la tache pour vérifier qu'un champ obligatoire est correctement saisi ou qu'une valeur correspond bien à ce qu'on attend, etc ... Ils permettent de contrôler la saisie coté client si le navigateur le supporte, ce qui améliore l'interaction avec l'utilisateur. Ils permettent également de valider les saisies du coté du server, ce qui est une étape OBLIGATOIRE. Les validators nous facilitent grandement la tache en disposant d'un moyen puissant de contrôler la saisie et d'afficher des messages d'erreurs pour avertir de la saisie incorrecte. |
| ||
auteur : nico-pyright(c) | ||
Non ! Ou alors, à vos risques et périls. En effet, la validation coté client peut avoir été désactivée ou altérée par du code malveillant. La seule façon fiable de vérifier la validité d'une saisie est de la faire coté serveur.
|
| ||
auteur : nico-pyright(c) | ||
La validation des contrôles apparait à un moment précis du cycle de vie d'une page, entre la fin des événements d'initialisation par le code utilisateur et les événements des contrôles. Cela se passe bien entendu après le chargement des valeurs du postback par la page... et avant les événements des contrôles. Cela permet de savoir au moment du click sur un bouton si la page est correcte et dans ce cas, rediriger vers la bonne page par exemple. Il est important de comprendre l'ordre d'enchainement des événements, si l'on a à faire des traitements en cas d'erreur, ou en cas de succès de validation. |
| |||
auteur : nico-pyright(c) | |||
Il y a trois possibilités pour afficher un message d'erreur. La première consiste à utiliser la propriété Text. Le message s'affiche en rouge par défaut
La deuxième est d'utiliser la propriété ErrorMessage. L'utilisation de la propriété ErrorMessage semble produire le même effet que la propriété Text. Il y a cependant une différence, le fait de définir la propriété ErrorMessage permettra au contrôle ValidationSummary de réutiliser le message d'erreur.
Enfin, on peut utiliser un message personnalisé entre les balises du controles. Ceci permet d'obtenir une présentation plus poussée en fonction des besoins.
Il y a également trois modes d'affichage que l'on peut choisir en utilisant la propriété Display : * Display="None" : Permet de ne pas afficher de message d'erreur. Le fait de ne pas afficher de message d'erreur peut être utile lorsqu'on utilise un ValidationSummary. * Display="Dynamic" : Affiche le message d'erreur "dynamiquement", le message apparaitra à l'emplacement du validator en décalant les autres contrôles de la page. * Display="Static" : Affiche le message d'erreur "statiquement", c'est à dire que l'emplacement du message d'erreur est réservé. On voit un "trou" à l'emplacement ou sera affiché le message s'il y a une erreur. On utilise cette option lorsqu'on a besoin que l'affichage ou l'absence du message ne casse pas la présentation, dans des cellules d'un tableau par exemple. |
| ||
auteur : nico-pyright(c) | ||
Les contrôles serveur que l'on peut valider sont :
|
| ||
auteur : nico-pyright(c) | ||
Pour vérifier que les validators de la page sont tous valides, on va tester la propriété IsValid de la page. Si elle vaut vrai, c'est que la validation est bonne, on peut poursuivre alors.
|
| ||
auteur : nico-pyright(c) | ||
Un groupe de validation permet de regrouper des validators et de les associer à un contrôle qui déclenchera la validation. Il est assez courant d'avoir plusieurs boutons sur une page et seuls certains champs doivent être validés en fonction du bouton cliqué. Imaginons une page qui contient une zone d'identification, avec un TextBox pour un login et un TextBox pour un mot de passe. Un bouton permet de valider ce login. Sur cette même page, on a une zone qui permet de saisir un email pour s'inscrire à une newsletter, avec un TextBox et un bouton. Il ne faut bien sur pas valider les informations du login si on choisit de s'inscrire à la newsletter. Pour ceci, on va indiquer les contrôles qui sont reliés à un bouton en les plaçant dans un même groupe, grâce à la propriété ValidationGroup. Ainsi, je pourrais placer sur la même page mes différents champs, mes différents boutons de validation et mes différents validators. Par exemple, les contrôles associés au login seront dans le groupe login (ValidationGroup="login"):
Et les contrôles associés à la newsletter seront dans le groupe newsletter (ValidationGroup="newsletter").
|
| ||||
auteur : nico-pyright(c) | ||||
On va vu dans la question Quels sont les contrôles serveur que l'on peut valider ? qu'il n'était pas possible de valider un RadioButton. Une solution est de passer par un CustomValidator.
On va se servir de RegisterExpandoAttribute et passer à la fonction javascript cliente les ClientId des RadioButton.
Ce qui fait que la fonction javascript cliente pourra ressembler à :
Sans oublier la méthode coté serveur :
|