次の方法で共有


検証グループの指定

更新 : 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>

    &nbsp

    <asp:textbox id="NameTextBox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <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>

    &nbsp

    <asp:textbox id="AgeTextbox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <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>

    &nbsp

    <asp:textbox id="CityTextbox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <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>

    &nbsp

    <asp:textbox id="NameTextBox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <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>

    &nbsp

    <asp:textbox id="AgeTextBox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <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>

    &nbsp

    <asp:textbox id="CityTextBox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <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>

参照

その他の技術情報

検証 ASP.NET コントロール