Spécification de groupes de validation
Mise à jour : novembre 2007
Les groupes de validation vous permettent d'organiser des contrôles de validation sur une page en ensembles. Chaque groupe de validation peut effectuer une validation indépendamment des autres groupes de validation de la page.
Vous pouvez créer un groupe de validation en affectant à la propriété ValidationGroup le même nom (chaîne) pour tous les contrôles que vous souhaitez grouper. Vous pouvez assigner n'importe quel nom à un groupe de validation, mais vous devez utiliser le même nom pour tous les membres du groupe.
Lors de la publication, la propriété IsValid de la classe Page est définie seulement en fonction des contrôles de validation dans le groupe de validation actuel. Le groupe de validation actuel est déterminé par le contrôle qui a provoqué la validation. Si, par exemple, un utilisateur clique sur un contrôle bouton avec un groupe de validation de LoginForm, la propriété IsValid retourne alors la valeur true si tous les contrôles de validation dont la propriété ValidationGroup a la valeur LoginForm sont valides. D'autres contrôles tels qu'un contrôle DropDownList peuvent également déclencher la validation si la propriété CausesValidation du contrôle a la valeur true (et que la propriété AutoPostBack a la valeur true.)
Pour valider par programme, vous pouvez appeler la surcharge de méthode Validate qui accepte le paramètre validationGroup pour forcer la validation de ce groupe de validation uniquement. Notez que lorsque vous appelez la méthode Validate, la propriété IsValid reflète la validation de tous les groupes validés jusqu'ici. Il peut s'agir à la fois d'un groupe validé à la suite d'une publication et du groupe validé par programme. Si les contrôles dans l'un ou l'autre groupe n'est pas valide, la propriété IsValid retourne false.
L'exemple de code suivant montre comment utiliser la propriété ValidationGroup pour spécifier les contrôles à valider quand un contrôle Button effectue une publication sur le serveur. La page contient trois zones de texte pour capturer les données de l'utilisateur et trois contrôles RequiredFieldValidator pour garantir que l'utilisateur ne laisse pas une zone de texte vide. Les contrôles RequiredFieldValidator pour les deux premières zones de texte sont dans le groupe de validation PersonalInfoGroup et le contrôle RequiredFieldValidator pour la troisième zone de texte est dans le groupe de validation LocationInfoGroup. Lorsqu'un clic est effectué sur Button1, seuls les contrôles du groupe de validation PersonalInfoGroup sont validés. Lorsqu'un clic est effectué sur Button2, seul le contrôle du groupe de validation LocationInfoGroup est validé.
<%@ page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<title>Button.ValidationGroup Example</title>
</head>
<body>
<form id="form1" >
<h3>Button.ValidationGroup Example</h3>
<asp:label id="NameLabel"
text="Enter your name:"
runat="Server"
AssociatedControlID="NameTextBox">
</asp:label>
 
<asp:textbox id="NameTextBox"
runat="Server">
</asp:textbox>
 
<asp:requiredfieldvalidator id="RequiredFieldValidator1"
controltovalidate="NameTextBox"
validationgroup="PersonalInfoGroup"
errormessage="Enter your name."
runat="Server">
</asp:requiredfieldvalidator>
<br /><br />
<asp:label id="AgeLabel"
text="Enter your age:"
runat="Server"
AssociatedControlID="AgeTextbox">
</asp:label>
 
<asp:textbox id="AgeTextbox"
runat="Server">
</asp:textbox>
 
<asp:requiredfieldvalidator id="RequiredFieldValidator2"
controltovalidate="AgeTextBox"
validationgroup="PersonalInfoGroup"
errormessage="Enter your age."
runat="Server">
</asp:requiredfieldvalidator>
<br /><br />
<!--When Button1 is clicked, only validation
controls that are a part of PersonalInfoGroup
are validated.-->
<asp:button id="Button1"
text="Validate"
causesvalidation="true"
validationgroup="PersonalInfoGroup"
runat="Server" />
<br /><br />
<asp:label id="CityLabel"
text="Enter your city of residence:"
runat="Server"
AssociatedControlID="CityTextbox">
</asp:label>
 
<asp:textbox id="CityTextbox"
runat="Server">
</asp:textbox>
 
<asp:requiredfieldvalidator id="RequiredFieldValidator3"
controltovalidate="CityTextBox"
validationgroup="LocationInfoGroup"
errormessage="Enter a city name."
runat="Server">
</asp:requiredfieldvalidator>
<br /><br />
<!--When Button2 is clicked, only validation
controls that are a part of LocationInfoGroup
are validated.-->
<asp:button id="Button2"
text="Validate"
causesvalidation="true"
validationgroup="LocationInfoGroup"
runat="Server" />
</form>
</body>
</html>
<%@ page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="head1" >
<title>Button.ValidationGroup Example</title>
</head>
<body>
<form id="form1" >
<h3>Button.ValidationGroup Example</h3>
<asp:label id="NameLabel"
text="Enter your name:"
runat="Server"
AssociatedControlID="NameTextBox">
</asp:label>
 
<asp:textbox id="NameTextBox"
runat="Server">
</asp:textbox>
 
<asp:requiredfieldvalidator id="RequiredFieldValidator1"
controltovalidate="NameTextBox"
validationgroup="PersonalInfoGroup"
errormessage="Enter your name."
runat="Server">
</asp:requiredfieldvalidator>
<br /><br />
<asp:label id="AgeLabel"
text="Enter your age:"
runat="Server"
AssociatedControlID="AgeTextBox">
</asp:label>
 
<asp:textbox id="AgeTextBox"
runat="Server">
</asp:textbox>
 
<asp:requiredfieldvalidator id="RequiredFieldValidator2"
controltovalidate="AgeTextBox"
validationgroup="PersonalInfoGroup"
errormessage="Enter your age."
runat="Server">
</asp:requiredfieldvalidator>
<br /><br />
<!--When Button1 is clicked, only validation
controls that are a part of PersonalInfoGroup
are validated.-->
<asp:button id="Button1"
text="Validate"
causesvalidation="true"
validationgroup="PersonalInfoGroup"
runat="Server" />
<br /><br />
<asp:label id="CityLabel"
text="Enter your city of residence:"
runat="Server"
AssociatedControlID="CityTextBox">
</asp:label>
 
<asp:textbox id="CityTextBox"
runat="Server">
</asp:textbox>
 
<asp:requiredfieldvalidator id="RequiredFieldValidator3"
controltovalidate="CityTextBox"
validationgroup="LocationInfoGroup"
errormessage="Enter a city name."
runat="Server">
</asp:requiredfieldvalidator>
<br /><br />
<!--When Button2 is clicked, only validation
controls that are a part of LocationInfoGroup
are validated.-->
<asp:button id="Button2"
text="Validate"
causesvalidation="true"
validationgroup="LocationInfoGroup"
runat="Server" />
</form>
</body>
</html>