更新 : 2007 年 11 月
検証グループを使用すると、ページ上の検証コントロールをセットとして編成できます。各検証グループは、ページ上の他の検証グループとは別に検証を実行できます。
検証グループは、グループ化するすべてのコントロールの ValidationGroup プロパティを同じ名前 (文字列) に設定することによって作成できます。検証グループには任意の名前を割り当てることができますが、グループのすべてのメンバに同じ名前を使用する必要があります。
ポストバック時には、Page クラスの IsValid プロパティが、現在の検証グループに含まれている検証コントロールだけに基づいて設定されます。現在の検証グループは、検証を実行するコントロールが決定します。たとえば、検証グループが LoginForm のボタン コントロールをクリックした場合、ValidationGroup プロパティが LoginForm に設定されているすべての検証コントロールが有効ならば、IsValid プロパティは true を返します。その他のコントロール (DropDownList コントロールなど) も、コントロールの CausesValidation プロパティが true に設定されていれば (および、AutoPostBack プロパティが true に設定されていれば)、検証をトリガできます。
プログラムで検証を実行するには、validationGroup パラメータを受け取る Validate メソッドのオーバーロードを呼び出して、その検証グループに対してのみ強制的に検証を実行します。Validate メソッドを呼び出すとき、IsValid プロパティは、それまでに検証されたすべてのグループの有効性を表します。これには、ポストバックの結果として検証されたグループと、プログラムによって検証されたグループの両方が含まれます。いずれかのグループのコントロールが無効である場合、IsValid プロパティは false を返します。
ValidationGroup プロパティを使用して、Button コントロールがサーバーにポストバックされたときに検証するコントロールを指定する方法を次のコード例に示します。このページには、ユーザーからのデータをキャプチャする 3 つのテキスト ボックスと、ユーザーがテキスト ボックスを空欄のままにしていないことを確認する 3 つの RequiredFieldValidator コントロールが含まれています。最初の 2 つのテキスト ボックス用の RequiredFieldValidator コントロールは PersonalInfoGroup 検証グループに属しており、3 番目のテキスト ボックス用の RequiredFieldValidator コントロールは LocationInfoGroup 検証グループに属しています。Button1 をクリックすると、PersonalInfoGroup 検証グループに属するコントロールだけが検証されます。Button2 をクリックすると、LocationInfoGroup 検証グループに属するコントロールだけが検証されます。
<%@ 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 runat="server">
<title>Button.ValidationGroup Example</title>
</head>
<body>
<form id="form1" runat="server">
<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" runat="server">
<title>Button.ValidationGroup Example</title>
</head>
<body>
<form id="form1" runat="server">
<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>