BaseValidator クラス

検証コントロールの抽象基本クラスの役割を果たします。

名前空間: System.Web.UI.WebControls
アセンブリ: System.Web (system.web.dll 内)

構文

'宣言
Public MustInherit Class BaseValidator
    Inherits Label
    Implements IValidator
'使用
Dim instance As BaseValidator
public abstract class BaseValidator : Label, IValidator
public ref class BaseValidator abstract : public Label, IValidator
public abstract class BaseValidator extends Label implements IValidator
public abstract class BaseValidator extends Label implements IValidator
適用できません。

解説

BaseValidator クラスは、すべての検証コントロールのコア実装を提供します。検証コントロールは、関連付けられた入力コントロール内のユーザー入力を検証するために使用されます。ユーザーが入力した値が検証に合格しない場合は、検証コントロールからエラー メッセージが表示されます。検証コントロールは入力コントロールから切り離されているので、入力コントロールに関連するページ内のどの場所にでもエラー メッセージを配置できます。ASP.NET には、特定の種類の検証を実行する複数の検証コントロールが用意されています。これらのコントロールを次の表に示します。

検証コントロール

説明

CompareValidator

CompareValidator.Operator プロパティを ValidationCompareOperator.DataTypeCheck に設定することにより、他の入力コントロールに入力された値、定数値、または適切なデータ型に対して値を検証します。

CustomValidator

ユーザーが用意したカスタム検証ルーチンを使用して値を検証します。

RangeValidator

値が値の範囲内にあるかどうかを検証します。

RegularExpressionValidator

正規表現を使用して値を検証します。

RequiredFieldValidator

必要なフィールドに値が入力されたかどうかを検証します。

検証コントロールは、常に関連付けられている入力コントロールをサーバー上で検証します。検証コントロールはクライアント側で実装することもでき、スクリプトに対応しているブラウザ (Internet Explorer Version 4.0 以降など) によりクライアント上で検証を実行できます。クライアント側の検証で、ユーザーによる入力をサーバーに送信する前にチェックすることによって、検証プロセスが強化されます。これによりフォームを送信する前にクライアントでエラーを検出し、サーバー側での検証に必要な情報のラウンド トリップが発生しないようにできます。

複数の検証コントロールを 1 つの入力コントロールに関連付けて、異なる基準で検証を実行できます。たとえば、TextBox コントロールには複数の検証コントロールを適用できます。RangeValidator コントロールを使用すると、TextBox コントロールに入力された値が必ず指定範囲内に収まるように設定できます。また RequiredFieldValidator コントロールを使用すると、ユーザーが必ず値を入力するように設定できます。

ASP.NET には、サーバーに対するポストバック機能を持つ多数のコントロールが用意されています。これらのコントロールのうち、いずれかのコントロールの CausesValidation プロパティを true に設定すると、そのコントロールがサーバーにポストバックするときに検証が実行されます。サーバーへのポストバック機能を持つコントロールを次に示します。

メモメモ :

これらのコントロールの一部は、AutoPostBack プロパティを true に設定すると、サーバーにポスト バックします。

これらの各コントロールには ValidationGroup プロパティがあります。このプロパティを設定すると、そのコントロールでサーバーへのポストバックが発生するときに、指定したグループ内の検証コントロールだけが検証されます。検証コントロールをグループ化するには、各検証コントロールの ValidationGroup プロパティを同じ値に設定します。

入力コントロールを検証コントロールに関連付けるには、ControlToValidate プロパティを使用します。検証が失敗した場合に検証コントロールで表示するテキストを指定するには、Text プロパティを使用します。ValidationSummary コントロールを使用して、そのページで検証に失敗したすべてのコントロールの要約を表示することもできます。ValidationSummary コントロールに表示するテキストを指定するには、ErrorMessage プロパティを使用します。

メモメモ :

Text プロパティを設定せずに ErrorMessage プロパティを設定すると、ErrorMessage プロパティの値も検証コントロール内に表示されます。

検証コントロールを使用する場合は、処理を実行する前にサーバー側の検証結果を確認する必要があります。ポストバックが終了してからイベント メソッドを呼び出す直前までの間に、ページは検証コントロールを呼び出して検証結果を Page.IsValid プロパティに集約します (Validate メソッドを使用して検証コントロールを明示的に呼び出すこともできます)。独自のコードを使用する場合、入力を処理する前に、Page.IsValid プロパティが true を返すことを確認する必要があります。検証が失敗した場合、クライアントでポストバックが発生するのをスクリプト対応のブラウザが防ぐ場合もありますが、検証済みデータを処理する前に必ずサーバー コードで Page.IsValid を確認する必要があります。

検証は手動でも実行できます。ページ上のすべての検証コントロールを検証するには、Page.Validate メソッドを使用します。個別の検証コントロールを検証するには、そのコントロールの Validate メソッドを使用します。

メモメモ :

Page_Load メソッドで Page.IsValid プロパティを使用する場合は、最初に明示的に Page.Validate メソッドを呼び出す必要があります。検証は、ページの Control.Load イベントが終了してから Click イベントまたは Command イベントのイベント ハンドラが処理されるまでの間に実行されるため、Page.Validate メソッドが呼び出されるまで Page.IsValid プロパティは更新されません。代案として、Page_Load メソッドの代わりに Click イベントまたは Command イベントのイベント ハンドラにコードを配置することもできます。

一部の Web サーバー コントロールでは検証コントロールがサポートされません。検証コントロールで検証できる標準コントロールを次に示します。

メモメモ :

検証する入力コントロールに対しては、System.Web.UI.ValidationPropertyAttribute 属性を適用する必要があります。

検証が失敗した場合、SetFocusOnError プロパティを true に設定して、関連付けられた入力コントロールにフォーカスを設定できます。

BaseValidator のインスタンスの初期プロパティ値の一覧については、BaseValidator コンストラクタのトピックを参照してください。

ユーザー補助

このコントロールに既定でレンダリングされるマークアップは、Web Content Accessibility Guidelines (WCAG) 1.0 の優先度 1 ガイドラインなどのユーザー補助に関する標準に適合しない可能性があります。このコントロールのユーザー補助サポートの詳細については、「ASP.NET コントロールとユーザー補助」を参照してください。

継承元へのメモ : BaseValidator クラスから継承する場合は、EvaluateIsValid のメンバをオーバーライドする必要があります。

使用例

複数の検証コントロールを使用して、ユーザーが TextBox コントロールに有効値を入力するようにするコード例を次に示します。

セキュリティに関するメモセキュリティに関するメモ :

この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。詳細については、「スクリプトによる攻略の概要」を参照してください。

<%@ Page Language="VB" AutoEventWireup="False" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
 
  Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs) Handles SubmitButton.Click
 
    If Page.IsValid Then
    
      MessageLabel.Text = "Page submitted successfully."
    
    Else
    
      MessageLabel.Text = "There is an error on the page."
    
    End If
    
  End Sub
 
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>Validator Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <h3>Validator Example</h3>
     
      Enter a number from 1 to 10.
      <asp:textbox id="NumberTextBox" 
        runat="server"/>

      <asp:rangevalidator id="NumberCompareValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"  
        type="Integer"
        display="Dynamic" 
        errormessage="Please enter a value from 1 to 10."
        maximumvalue="10"
        minimumvalue="1"  
        text="*"
        runat="server"/>

      <asp:requiredfieldvalidator id="TextBoxRequiredValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"
        display="Dynamic" 
        errormessage="Please enter a value."
        text="*"
        runat="server"/>

      <br /><br />

      <asp:button id="SubmitButton"
        text="Submit"
        runat="server"/>
 
      <br /><br />
       
      <asp:label id="MessageLabel" 
        runat="server"/>

      <br /><br />

      <asp:validationsummary
        id="ErrorSummary"
        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">
<script runat="server">
 
  void Button_Click(Object sender, EventArgs e) 
  {
    if (Page.IsValid)
    {
      MessageLabel.Text = "Page submitted successfully.";
    }
    else
    {
      MessageLabel.Text = "There is an error on the page.";
    }
  }
 
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>Validator Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <h3>Validator Example</h3>
     
      Enter a number from 1 to 10.
      <asp:textbox id="NumberTextBox" 
        runat="server"/>

      <asp:rangevalidator id="NumberCompareValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"  
        type="Integer"
        display="Dynamic" 
        errormessage="Please enter a value from 1 to 10."
        maximumvalue="10"
        minimumvalue="1"  
        text="*"
        runat="server"/>

      <asp:requiredfieldvalidator id="TextBoxRequiredValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"
        display="Dynamic" 
        errormessage="Please enter a value."
        text="*"
        runat="server"/>

      <br /><br />

      <asp:button id="SubmitButton"
        text="Submit"
        onclick="Button_Click"
        runat="server"/>
 
      <br /><br />
       
      <asp:label id="MessageLabel" 
        runat="server"/>

      <br /><br />

      <asp:validationsummary
        id="ErrorSummary"
        runat="server"/>
 
    </form>
  </body>
</html>
<%@ Page Language="JScript" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
 
  function Button_Click(sender, e : EventArgs) 
  {
    if (Page.IsValid)
    {
      MessageLabel.Text = "Page submitted successfully.";
    }
    else
    {
      MessageLabel.Text = "There is an error on the page.";
    }
  }
 
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>Validator Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <h3>Validator Example</h3>
     
      Enter a number from 1 to 10.
      <asp:textbox id="NumberTextBox" 
        runat="server"/>

      <asp:rangevalidator id="NumberCompareValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"  
        type="Integer"
        display="Dynamic" 
        errormessage="Please enter a value from 1 to 10."
        maximumvalue="10"
        minimumvalue="1"  
        text="*"
        runat="server"/>

      <asp:requiredfieldvalidator id="TextBoxRequiredValidator" 
        controltovalidate="NumberTextBox"
        enableclientscript="False"
        display="Dynamic" 
        errormessage="Please enter a value."
        text="*"
        runat="server"/>

      <br /><br />

      <asp:button id="SubmitButton"
        text="Submit"
        onclick="Button_Click"
        runat="server"/>
 
      <br /><br />
       
      <asp:label id="MessageLabel" 
        runat="server"/>

      <br /><br />

      <asp:validationsummary
        id="ErrorSummary"
        runat="server"/>
 
    </form>
  </body>
</html>

継承階層

System.Object
   System.Web.UI.Control
     System.Web.UI.WebControls.WebControl
       System.Web.UI.WebControls.Label
        System.Web.UI.WebControls.BaseValidator
           System.Web.UI.WebControls.BaseCompareValidator
           System.Web.UI.WebControls.CustomValidator
           System.Web.UI.WebControls.RegularExpressionValidator
           System.Web.UI.WebControls.RequiredFieldValidator

スレッド セーフ

この型の public static (Visual Basicでは共有) メンバはすべて,スレッド セーフです。インスタンス メンバの場合は,スレッド セーフであるとは限りません。

プラットフォーム

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

バージョン情報

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0

参照

関連項目

BaseValidator メンバ
System.Web.UI.WebControls 名前空間
CompareValidator
CustomValidator
RangeValidator
RegularExpressionValidator
RequiredFieldValidator
ValidationSummary
CausesValidation
ErrorMessage
Text
ValidationGroup