ここではASP.NETの検証コントロールについて紹介します。

検証コントロールの種類

以下はASP.NETで利用できる検証コントロールの種類です。

コントロール説明
CompareValidator比較チェック
ユーザーが入力コントロール内に入力した値を、別の入力コントロールに入力された値か、定数値と比較します。
※入力値が空の場合は検証をスキップします。
RangeValidator範囲チェック
入力コントロールの値が指定された範囲内の値であるかどうかをチェックします。
※入力値が空の場合は検証をスキップします。
RegularExpressionValidator正規表現チェック
関連付けられた入力コントロールの値が正規表現で指定されたパターンに一致するかどうかを検証します。
※入力値が空の場合は検証をスキップします。
RequiredFieldValidator必須チェック
関連する入力コントロールを必須フィールドにします。
CustomValidator カスタムチェック
入力コントロールのユーザー定義の検証を行います。
ValidationSummaryすべての検証コントロールの結果を、Web ページ上のインラインまたはメッセージ ボックスのいずれかまたは両方で表示します。


検証コントロールの共通プロパティ

以下は ValidationSummary コントロールを除く、検証コントロールの共通のプロパティです。

プロパティ説明
ControlToValidate検証する入力コントロールのIDを指定します。
CssClassクライアントでWebサーバー コントロールによって表示されるCSSクラスを取得または設定します。
既定値は Empty です。
Display検証コントロールにエラー メッセージを表示するときの動作を取得または設定します。
EnableClientScriptクライアント側での検証を有効にするかどうかを示す値を取得または設定します。
クライアント側の検証が有効な場合は True。それ以外の場合は False。 既定値は True です。
Enabled検証コントロールを有効にするかどうかを示す値を取得または設定します。
検証コントロールを有効にする場合は True。それ以外の場合は False。 既定値は True です。
ErrorMessage検証が失敗したときに ValidationSummary コントロールに表示されるエラー メッセージのテキストを取得または設定します。
IsValid関連付けられている入力コントロールの検証が成功したかどうかを示す値を取得または設定します。
関連付けられている入力コントロールの検証が成功した場合は True。それ以外の場合は False。 既定値は True です。
SetFocusOnError検証が失敗したときに ControlToValidate プロパティで指定されたコントロールにフォーカスが設定されるかどうかを示す値を取得または設定します。
フォーカスを設定する場合は True。それ以外の場合は False。 既定値は False です。
Text検証が失敗したときに検証コントロール内に表示されるテキストを取得または設定します。
ValidationGroup検証コントロールが属する検証グループの名前を取得または設定します。


CompareValidator コントロール

CompareValidator コントロールは、データ型、値の大小を比較する検証するコントロールです。

以下は CompareValidator コントロールを配置したWebフォームです。メールアドレスとメールアドレス(確認用)を比較します。

Webフォーム(.aspx)のコードは以下のようになります。10行目から14行目が CompareValidator コントロールです。

<form id="form1" runat="server">
    <div>
        比較チェック<br />
        <br />
        メールアドレス<br />
        <asp:TextBox ID="txtEmail1" runat="server" Columns="50"></asp:TextBox>
        <br />
        メールアドレス(確認用)<br />
        <asp:TextBox ID="txtEmail2" runat="server" Columns="50"></asp:TextBox>&nbsp;
        <asp:CompareValidator ID="CompareValidator1" runat="server"
            ControlToCompare="txtEmail1" ControlToValidate="txtEmail2"
            EnableClientScript="False"
            ErrorMessage="確認用のメールアドレスと異なります。" SetFocusOnError="True">
        </asp:CompareValidator>
        <br />
        <br />
        <asp:Button ID="btnSubmit" runat="server" Text="確定" />
    </div>
</form>

CompareValidator コントロールに設定したプロパティ

プロパティ説明設定値
ControlToCompare検証対象の入力コントロールtxtEmail1
ControlToValidate検証対象の入力コントロールと比較する入力コントロールtxtEmail2
EnableClientScript クライアント側での検証を有効にするかどうかを示す値を取得または設定します。
[確定] ボタンを押して検証しまするので Fasle に設定します。
False
ErrorMessage検証が失敗したときにのエラーメッセージ確認用のメールアドレスと異なります。
Operator実行する比較演算Equal
SetFocusOnError検証が失敗したときにのフォーカスの設定True
Type比較対象の値が変換されるデータ型String

異なるメールアドレスを入力して [確定] ボタンをクリックするとメッセージが表示されます。


RangeValidator コントロール

RangeValidator コントロールは、入力コントロールの値が指定された範囲内の値であるかどうかを検証するコントロールです。

以下は RangeValidator コントロールを配置したWebフォームです。年齢の範囲(0~120)をチェックします。

Webフォーム(.aspx)のコードは以下のようになります。8行目から14行目が RangeValidator コントロールです。

<form id="form1" runat="server">
    <div>
        範囲チェック<br />
        <br />
        年齢<br />
        <asp:TextBox ID="txtAge" runat="server" Columns="3"></asp:TextBox>
        歳&nbsp;
        <asp:RangeValidator ID="RangeValidator1" runat="server"
            ControlToValidate="txtAge"
            EnableClientScript="False"
            ErrorMessage="年齢は0~120歳の範囲で入力してください。"
            EnableViewState="False" MaximumValue="120" MinimumValue="0"
            SetFocusOnError="True" Type="Integer">
        </asp:RangeValidator>
        <br />
        <br />
        <asp:Button ID="btnSubmit" runat="server" Text="確定" />
    </div>
</form>

RangeValidator コントロールに設定したプロパティ

プロパティ説明設定値
ControlToValidate検証対象の入力コントロールと比較する入力コントロール txtAge
EnableClientScript クライアント側での検証を有効にするかどうかを示す値を取得または設定します。
[確定] ボタンを押して検証しまするので Fasle に設定します。
False
ErrorMessage 検証が失敗したときにのエラーメッセージ 年齢は0~120歳の範囲で入力してください。
MaximumValue検証範囲の最大値120
MinimumValue検証範囲の最小値 0
SetFocusOnError検証が失敗したときにのフォーカスの設定True

起動して実行してみます。範囲外の年齢を入力して [確定] ボタンをクリックするとメッセージが表示されます。


RegularExpressionValidator コントロール

RegularExpressionValidator コントロールは、入力コントロールの値が正規表現で指定されたパターンに一致するかどうかを検証するコントロールです。

以下は RegularExpressionValidator コントロールを配置したWebフォームです。年齢の範囲(0~120)をチェックします。


Webフォーム(.aspx)のコードは以下のようになります。7行目から12行目が RegularExpressionValidator コントロールです。

<form id="form1" runat="server">
    <div>
        正規表現チェック<br />
        <br />
        電話番号<br />
        <asp:TextBox ID="txtTel" runat="server" Columns="15"></asp:TextBox>&nbsp;
        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
            ControlToValidate="txtTel" EnableClientScript="False" 
            ErrorMessage="電話番号の形式が違います。"
            ValidationExpression="(0\d{1,4}-|\(0\d{1,4}\) ?)?\d{1,4}-\d{4}"
            SetFocusOnError="True" >
        </asp:RegularExpressionValidator>
        <br />
        <br />
        <asp:Button ID="btnSubmit" runat="server" Text="確定" />
    </div>
</form>

RegularExpressionValidator コントロールに設定したプロパティ

プロパティ説明設定値
ControlToValidate検証対象の入力コントロールと比較する入力コントロール txtTel
EnableClientScript クライアント側での検証を有効にするかどうかを示す値を取得または設定します。
[確定] ボタンを押して検証しまするので Fasle に設定します。
False
ErrorMessage 検証が失敗したときにのエラーメッセージ 電話番号の形式が違います。
ValidationExpressionフィールドの検証に使用するパターンを決定する正規表現“(0\d{1,4}-|(0\d{1,4}) ?)?\d{1,4}-\d{4}”
SetFocusOnError検証が失敗したときにのフォーカスの設定True

ValidationExpression プロパティで正規表現エディターを開くと、あらかじめ正規表現のパターンが用意されていますので [日本の電話番号] を選択します。

起動して実行してみます。 形式の違う電話番号を入力して [確定] ボタンをクリックするとメッセージが表示されます。


RequiredFieldValidator コントロール

RequiredFieldValidator コントロールは、入力コントロールを必須フィールドにするコントロールです。

以下は RequiredFieldValidator コントロールを配置したWebフォームです。名前を必須にします。


Webフォーム(.aspx)のコードは以下のようになります。7行目から12行目が RequiredFieldValidator コントロールです。

<form id="form1" runat="server">
    <div>
        必須チェック<br />
        <br />
        名前<br />
        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>&nbsp;
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
            ControlToValidate="txtName"
            EnableClientScript="False"
            ErrorMessage="名前を入力してください。"
            SetFocusOnError="True">
        </asp:RequiredFieldValidator>
        <br />
        <br />
        <asp:Button ID="btnSubmit" runat="server" Text="確定" />
    </div>
</form>

RequiredFieldValidator コントロールに設定したプロパティ

プロパティ説明設定値
ControlToValidate検証対象の入力コントロールと比較する入力コントロール txtName
EnableClientScript クライアント側での検証を有効にするかどうかを示す値を取得または設定します。
[確定] ボタンを押して検証しまするので Fasle に設定します。
False
ErrorMessage 検証が失敗したときにのエラーメッセージ 名前を入力してください。
SetFocusOnError検証が失敗したときにのフォーカスの設定True

起動して実行してみます。 名前を入力せずに [確定] ボタンをクリックするとメッセージが表示されます。


CustomValidator コントロール

CustomValidator コントロールは、入力コントロールを独自のルールで検証するコントロールです。

以下は CustomValidator コントロールを配置したWebフォームです。名前に半角スペースが含まれるかをチェックします。


Webフォーム(.aspx)のコードは以下のようになります。7行目から12行目が CustomValidator コントロールです。

<form id="form1" runat="server">
    <div>
        正規表現チェック<br />
        <br />
        電話番号<br />
        <asp:TextBox ID="txtTel" runat="server" Columns="15"></asp:TextBox>&nbsp;
        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
            ControlToValidate="txtTel" EnableClientScript="False" 
            ErrorMessage="電話番号の形式が違います。"
            ValidationExpression="(0\d{1,4}-|\(0\d{1,4}\) ?)?\d{1,4}-\d{4}"
            SetFocusOnError="True" >
        </asp:RegularExpressionValidator>
        <br />
        <br />
        <asp:Button ID="btnSubmit" runat="server" Text="確定" />
    </div>
</form>

CustomValidator コントロールに設定したプロパティ

プロパティ説明設定値
ControlToValidate検証対象の入力コントロールと比較する入力コントロール txtName
EnableClientScript クライアント側での検証を有効にするかどうかを示す値を取得または設定します。
[確定] ボタンを押して検証しまするので Fasle に設定します。
False
ErrorMessage 検証が失敗したときにのエラーメッセージ 姓と名の間に半角スペースを入力してください。
SetFocusOnError検証が失敗したときにのフォーカスの設定True

CustomValidator コントロールでは、サーバーサイドでの検証ルールを ServerValidate イベントハンドラーに定義する必要があります。
以下は .aspx.cs ファイルに ServerValidate イベントハンドラーを追加して半角スペースが含まれるかをチェックしています。チェックした結果を IsVailid メソッドをセットしています。

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
    if (args.Value.Contains(" "))
    {
        args.IsValid = true;
    }
    else
    {
        args.IsValid = false;
    }
}

起動して実行してみます。 名前の間に半角スペースがない値を入力して [確定] ボタンをクリックするとメッセージが表示されます。


ValidationSummary コントロール

ValidationSummary コントロールは、検証コントロールが実施した検証結果をサマリー表示するコントロールです。

以下は ValidationSummary コントロールを配置したWebフォームです。名前と年齢のチェックをしてエラー項目には*を表示して、画面下にエラーメッセージを表示させます。


Webフォーム(.aspx)のコードは以下のようになります。25行目が ValidationSummary コントロールです。

<form id="form1" runat="server">
    <div>
        検証メッセージのサマリー<br />
        <br />
        名前<br />
        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>&nbsp;
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
            ControlToValidate="txtName"
            EnableClientScript="False"
            ErrorMessage="名前を入力してください。"
            SetFocusOnError="True">*</asp:RequiredFieldValidator>
        <br />
        <br />
        年齢<br />
        <asp:TextBox ID="txtAge" runat="server" Columns="3"></asp:TextBox>
        歳&nbsp;
        <asp:RangeValidator ID="RangeValidator1" runat="server"
            ControlToValidate="txtAge"
            ErrorMessage="年齢は0~120歳の範囲で入力してください。" MaximumValue="120" MinimumValue="0"
            SetFocusOnError="True" Type="Integer" EnableClientScript="False">*</asp:RangeValidator>
        <br />
        <br />
        <asp:Button ID="btnSubmit" runat="server" Text="確定" />
    </div>
    <asp:ValidationSummary ID="ValidationSummary1" runat="server" EnableClientScript="False" />
</form>

ValidationSummary コントロールに設定したプロパティ

プロパティ説明設定値
EnableClientScript クライアント側での検証を有効にするかどうかを示す値を取得または設定します。
[確定] ボタンを押して検証しまするので Fasle に設定します。
False

また、RequiredFieldValidator コントロールと RangeValidator コントロールの Textプロパティには「*(アスタリスク)」を設定します。

起動して実行してみます。 名前は未入力して、年齢に範囲外の値を入力して [確定] ボタンをクリックするとメッセージが表示されます。


以上、ASP.NETの検証コントロールについて解説しました。