Validation des entrées d'utilisateur dans des pages Web ASP.NET

Mise à jour : novembre 2007

Vous pouvez utiliser les contrôles de validation pour ajouter une validation d'entrée aux pages ASP.NET. Les contrôles de validation offrent un mécanisme d'utilisation facile pour tous les types courants de validation standard, comme le test de validité de dates ou de valeurs dans une plage. Ils offrent, en outre, des moyens de fournir une validation écrite personnalisée. En outre, les contrôles de validation vous permettent de personnaliser la façon dont les informations relatives aux erreurs s'affichent pour l'utilisateur.

Les contrôles de validation peuvent être utilisés avec tous les contrôles que vous placez dans une page Web ASP.NET, y compris les contrôles HTML et serveur Web. Pour plus d'informations, consultez Vue d'ensemble des contrôles serveur Web ASP.NET.

Note de sécurité :

Par défaut, les pages Web ASP.NET vérifient automatiquement les entrées potentiellement malveillantes. Pour plus d'informations, consultez Vue d'ensemble des attaques de script.

Utilisation des contrôles de validation

Vous activez la validation des entrées d'utilisateur en ajoutant des contrôles de validation à vos pages, comme vous le feriez pour d'autres contrôles serveur. Il existe des contrôles pour différents types de validation, comme la vérification de plage ou les critères spéciaux. Pour une liste exhaustive des types de validation, consultez Types de validation pour les contrôles serveur ASP.NET. Chaque contrôle de validation fait référence à un contrôle d'entrée (un contrôle serveur) à un autre endroit de la page. Lorsque l'entrée utilisateur est traitée (par exemple, lorsqu'une page est envoyée), le contrôle de validation teste l'entrée utilisateur et définit une propriété indiquant si le test a été validé. Une fois tous les contrôles de validation appelés, une propriété est définie dans la page pour indiquer si la validation a échoué.

Les contrôles de validation peuvent être associés à des groupes de validation afin que tous ceux qui appartiennent à un groupe commun soient validés ensemble. Vous pouvez utiliser les groupes de validation pour activer ou désactiver de manière sélective la validation des contrôles associés dans une page. D'autres opérations de validation, comme l'affichage d'un contrôle ValidationSummary ou l'appel à la méthode GetValidators, peuvent référencer le groupe de validation.

Vous pouvez tester l'état de la page et de contrôles individuels dans votre propre code. Par exemple, vous pouvez tester l'état des contrôles de validation avant de mettre à jour un enregistrement de données à l'aide des informations entrées par l'utilisateur. Si vous détectez un état non valide, vous ignorez la mise à jour. En général, en cas d'échec d'une vérification de validation, vous ignorez l'ensemble de votre traitement et vous retournez la page à l'utilisateur. Les contrôles de validation ayant détecté des erreurs génèrent alors un message d'erreur qui s'affiche dans la page. Vous pouvez afficher toutes les erreurs de validation en un seul emplacement à l'aide d'un contrôle ValidationSummary.

Remarque :

Les contrôles liés aux données qui mettent à jour, insèrent ou suppriment des données, comme les contrôles GridView, FormView et DetailsView, vérifient automatiquement que les contrôles de validation ont réussi avant d'exécuter une opération de mise à jour des données.

Au moment de la validation

Les contrôles de validation effectuent la vérification des entrées dans le code serveur. Lorsque l'utilisateur soumet une page au serveur, les contrôles de validation sont appelés un par un afin de vérifier les entrées de l'utilisateur. Si une erreur de validation est détectée dans l'un des contrôles d'entrée, la page a un état non valide. Vous pouvez ainsi tester sa validité avant l'exécution de votre code. La validation a lieu après l'initialisation de la page (c'est-à-dire, une fois que l'état d'affichage et les données de publication ont été traités), mais avant que le gestionnaire d'événements Change ou Click ne soit appelé.

Si le navigateur de l'utilisateur prend en charge ECMAScript (Javascript), les contrôles de validation peuvent également effectuer la validation à l'aide du script client. Ceci peut améliorer le temps de réponse de la page, dans la mesure où les erreurs sont détectées immédiatement et où les messages d'erreur sont affichés dès que l'utilisateur quitte le contrôle contenant l'erreur. Si la validation côté client est disponible, vous disposez d'un meilleur contrôle sur la présentation des messages d'erreur et vous pouvez afficher un résumé des erreurs dans une boîte de message. Pour plus d'informations, consultez Validation côté client pour les contrôles serveur ASP.NET.

ASP.NET effectue la validation sur le serveur même si les contrôles de validation l'ont déjà effectuée sur le client. Ceci vous permet de tester la validité dans vos gestionnaires d'événements serveur. En outre, tester à nouveau au niveau du serveur contribue à empêcher les utilisateurs de contourner la validation en désactivant ou en modifiant le script client.

Vous pouvez appeler la validation dans votre propre code en appelant la méthode Validate d'un contrôle de validation. Pour plus d'informations, consultez Comment : valider par programme les contrôles serveur ASP.NET.

Validation pour plusieurs conditions

Chaque contrôle de validation exécute en général un seul test. Vous souhaiterez cependant parfois vérifier plusieurs conditions. Par exemple, vous pouvez vouloir spécifier qu'une entrée utilisateur soit requise et qu'elle soit restreinte à l'entrée de dates comprises dans une plage donnée.

Vous pouvez attacher plusieurs contrôles de validation à un contrôle d'entrée dans une page. Dans ce cas, les tests effectués par les contrôles sont résolus à l'aide d'un opérateur logique AND, qui signifie que les données saisies par l'utilisateur doivent réussir tous les tests pour être considérées valides.

Dans certains cas, plusieurs entrées à des formats différents peuvent être valides. Par exemple, si vous invitez l'utilisateur à entrer un numéro de téléphone, vous pouvez l'autoriser à entrer un numéro de téléphone local, national ou international (ou tout autre type de numéro en fonction des spécificités de votre pays). Utiliser plusieurs contrôles de validation ne fonctionnerait pas dans cette instance puisque l'entrée d'utilisateur doit réussir tous les tests pour être valide. Pour effectuer ce type de test (une opération OR logique dans laquelle un seul test doit réussir), vous utilisez le contrôle de validation RegularExpressionValidator et vous spécifiez plusieurs critères valides dans le contrôle. Vous pouvez aussi utiliser le contrôle de validation CustomValidator et écrire votre propre code de validation.

Affichage des informations relatives aux erreurs

Les contrôles de validation ne sont normalement pas visibles dans la page rendue. Cependant, si le contrôle détecte une erreur, il affiche le texte du message d'erreur que vous aurez spécifié. Le message d'erreur peut être affiché de différentes façons. Le tableau suivant répertorie ces options d'affichage.

Méthode d'affichage

Description

Inline

Chaque contrôle de validation peut afficher de façon individuelle un message d'erreur sur place (généralement à côté du contrôle où l'erreur s'est produite).

Résumé

Les erreurs de validation peuvent être regroupées et affichées à un seul emplacement, par exemple en haut de la page. Cette stratégie est souvent utilisée en même temps que l'affichage d'un message à côté des champs d'entrée comportant des erreurs. Si l'utilisateur utilise Internet Explorer version 4.0 ou ultérieure, le résumé peut être affiché dans une boîte de message.

Si vous utilisez des groupes de validation, il vous faut un contrôle ValidationSummary pour chaque groupe distinct.

Sur place et résumé

Le message d'erreur peut être différent dans le résumé et sur place. Vous pouvez utiliser cette option pour afficher un message d'erreur plus court sur place, avec davantage de détails dans le résumé.

Personnalisé

Vous pouvez personnaliser le message d'erreur en capturant les informations relatives à l'erreur et en créant votre propre sortie.

Si vous utilisez l'option d'affichage sur place ou résumé, vous pouvez mettre en forme le texte du message d'erreur en utilisant le langage HTML.

Note de sécurité :

Si vous créez des messages d'erreur personnalisés, veillez à ne pas afficher d'informations susceptibles d'aider un utilisateur malveillant à mettre votre application en danger. Pour plus d'informations, consultez Comment : afficher des messages d'erreur sécurisés.

Modèle objet de validation

Vous pouvez interagir avec les contrôles de validation à l'aide du modèle objet exposé par les contrôles de validation et par la page. Chaque contrôle de validation expose sa propre propriété IsValid. Vous pouvez la tester pour savoir si un test de validation de ce contrôle a réussi ou échoué. La page expose également une propriété IsValid qui résume l'état IsValid de tous les contrôles de validation de la page. Cette propriété vous permet d'exécuter un test unique pour savoir si vous pouvez poursuivre votre propre traitement.

La page expose également une collection Validators contenant la liste de tous les contrôles de validation de la page. Vous pouvez parcourir cette collection pour examiner l'état des contrôles de validation individuels.

Remarque :

Le modèle objet pour la validation côté client présente quelques différences. Pour plus d'informations, consultez Validation côté client pour les contrôles serveur ASP.NET.

Personnalisation de la validation

Il existe plusieurs façons de personnaliser le processus de validation :

  • Vous pouvez spécifier le format, le texte et l'emplacement des messages d'erreur. Vous pouvez aussi spécifier si les messages d'erreur doivent apparaître individuellement ou sous forme de résumé.

  • Vous pouvez créer une validation personnalisée à l'aide d'un contrôle CustomValidator. Le contrôle appelle votre logique, mais fonctionne comme les autres contrôles de validation pour la définition de l'état d'erreur, l'affichage des messages d'erreur, etc. Cela permet de créer facilement une logique de validation personnalisée, tout en continuant à utiliser l'infrastructure de validation de la page.

  • En ce qui concerne la validation côté client, vous pouvez intercepter l'appel à la validation et lui substituer ou ajouter votre propre logique de validation.

Voir aussi

Autres ressources

Contrôles ASP.NET de validation