Partager via


Résultats de la validation dans des cas particuliers pour les contrôles serveur ASP.NET

Mise à jour : novembre 2007

La validation permet de garantir que les informations entrées par l'utilisateur répondent aux critères que vous spécifiez. Dans la plupart des cas, il s'agit d'une opération directe. Cependant, les situations dans lesquelles les entrées sont validées entraînent parfois des conditions spéciales. Il est important que vous compreniez ces conditions, la façon dont la validation est effectuée et les résultats potentiels d'une tentative de validation.

Comparaison à des champs vides

Les contrôles de validation autres que le contrôle RequiredFieldValidator considèrent qu'un champ vide est valide. Vous devez utiliser le contrôle RequiredFieldValidator afin d'empêcher tout utilisateur de laisser un champ vide. Par exemple, si vous attachez un contrôle RangeValidator à un champ date, la validation réussit si l'utilisateur entre une date comprise dans la plage spécifiée ou s'il laisse le champ vide. Si vous souhaitez vous assurer que l'utilisateur entre une date, vous devez ajouter un contrôle RequiredFieldValidator au champ date en plus du contrôle de la plage.

Comparaison à un autre contrôle

Lorsque vous utilisez le contrôle CompareValidator, vous pouvez spécifier que la validation doit être effectuée par rapport à la valeur d'un autre contrôle. Vous pouvez, par exemple, avoir deux champs d'entrée de dates : une date de début et une date de fin. L'utilisation d'un contrôle CompareValidator garantit que la date de début est antérieure ou égale à la date de fin.

Note de sécurité :

Les entrées d'utilisateur dans une page Web ASP.NET peuvent inclure un script client nuisible. Par défaut, la page valide les entrées d'utilisateur qui n'incluent pas de script ou d'éléments HTML. Pour plus d'informations, consultez Vue d'ensemble des attaques de script.

Si les contrôles de validation sont incapables de résoudre la valeur de l'autre contrôle, aucune erreur n'est déclenchée et la vérification de validation réussit. Cette situation se produit si la valeur de l'autre contrôle est manquante ou ne peut pas être convertie dans le type de données du contrôle CompareValidator.

Les tests spécifiques effectués par ces contrôles et leurs résultats possibles sont les suivants :

  • Si aucune valeur n'a été attribuée au contrôle cible entré dans la propriété ControlToValidate du contrôle d'origine, la propriété IsValid prend la valeur true et la validation réussit.

  • Si la valeur du contrôle cible dans la propriété ControlToValidate ne peut pas être convertie dans le type de données approprié, la propriété IsValid est considérée comme false.

  • Si la valeur du contrôle cible dans la propriété ControlToCompare ne peut pas être convertie dans le type de données approprié, la propriété IsValid est considérée comme true.

  • Finalement, si tous ces tests réussissent, alors les deux contrôles sont non vides et peuvent être convertis en types de données appropriés. Le contrôle effectue réellement la comparaison et attribue la valeur appropriée à IsValid.

Cette stratégie permet d'éviter que plusieurs erreurs ne soient signalées pour une même entrée non valide. Les contrôles de validation sont conçus pour tester et faire un rapport sur une seule valeur, ainsi que pour afficher un message aussi précis que possible lorsqu'une erreur est rencontrée.

Reprenons l'exemple de la date de fin et supposons que l'utilisateur entre une date de début non valide. L'utilisateur entre ensuite une date de fin. Lorsque la vérification de validation est effectuée (généralement sur le serveur), la même date non valide peut déclencher une erreur pour le champ date de début et le champ date de fin. Pour éviter ceci, la validation de la date de fin (qui dépend d'un autre champ) ne déclenche pas d'erreur.

Vous devez donc vérifier que la validation est suffisante pour chaque champ individuel. Dans cet exemple, il vous incombe de vous assurer que l'utilisateur a entré une date correcte dans le champ date de début. Dans de nombreux cas, vous devrez inclure un contrôle RequiredFieldValidator en plus du contrôle de validation qui teste le contenu d'une entrée spécifique. Il est également utile dans certains cas d'ajouter un contrôle CompareValidator avec sa propriété Operator définie avec la valeur DataTypeCheck, qui effectue un simple contrôle de type sans effectuer de comparaison par rapport à une autre valeur ou un autre contrôle.

Voir aussi

Concepts

Types de validation pour les contrôles serveur ASP.NET

Autres ressources

Contrôles ASP.NET de validation