ASP.NET サーバー コントロールに対する特別な場合の検証結果

更新 : 2007 年 11 月

検証では、ユーザーが入力した内容が指定された条件を満たすことを確認します。ほとんどの場合、これは単純な操作です。ただし、入力を検証するときに特別な状況が発生する場合もあります。それがどのような状況であるか、また、その場合に検証をどのように実行し、検証の試みがどのような結果になるかを理解することが重要です。

空白フィールドとの比較

RequiredFieldValidator コントロール以外のすべての検証コントロールは、フィールドが空白の場合は有効であると見なします。フィールドを空白のままにできないようにする場合は、RequiredFieldValidator コントロールを使用する必要があります。たとえば、日付フィールドに RangeValidator コントロールを追加した場合、ユーザーが指定された範囲の日付を入力するか、またはフィールドを空白のままにすると、検証は合格となります。ユーザーが必ず日付を入力するようにするには、範囲の検査と共に RequiredFieldValidator コントロールを対象の日付フィールドに追加する必要があります。

ほかのコントロールとの比較

CompareValidator コントロールを使用すると、他のコントロールの値に対して検証を行うように指定できます。たとえば、開始日と終了日の 2 つのフィールドに日付を入力する場合を考えます。CompareValidator コントロールを使って、開始日が必ず終了日以下となるようにできます。

c6k4b2x3.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

ASP.NET Web ページのユーザー入力には、悪意のあるクライアントのスクリプトが含まれている可能性があります。既定では、ページは、ユーザー入力にスクリプトまたは HTML 要素が含まれていないことを検証します。詳細については、「スクリプトによる攻略の概要」を参照してください。

検証コントロールがほかのコントロールの値を解決できない場合、エラーは発生せず、検証チェックは合格になります。これは、他のコントロールに値が欠落しているか、他のコントロールの値を CompareValidator コントロールのデータ型に変換できない場合に生じます。

これらのコントロールによって実行される固有のテスト、および起こり得る結果を次に示します。

  • 検証コントロールの ControlToValidate プロパティに検証対象として入力されたコントロールに値がない場合、IsValid プロパティは true と見なされ、検証は合格になります。

  • ControlToValidate プロパティに設定された対象のコントロールの値が適切なデータ型に変換できない場合は、IsValid は false と見なされます。

  • ControlToCompare プロパティに設定された対象のコントロールの値が適切なデータ型に変換できない場合は、IsValid は true と見なされます。

  • 最後にこれらのテストがすべて合格になった場合は、両方のコントロールにはなんらかの値が存在し、必要なデータ型に変換できるため、このコントロールは実際に比較を実行して IsValid を適切に設定できます。

この方法は、同じ無効な入力に対して複数のエラーが報告されるのを防ぎます。検証コントロールは、1 つの値だけをテストして報告し、エラーが発生したときにはできる限り詳細なメッセージを表示できるようにデザインされています。

たとえば、終了日の例において、ユーザーが無効な開始日を入力したとします。次に、ユーザーは終了日を入力します。検証チェックが (通常はサーバー上で) 実行されると、同じ無効な日付が開始日フィールドと終了日フィールドの両方でエラーを発生させる可能性があります。これを防ぐために、終了日の検証 (他のフィールドに依存する検証) ではエラーが発生しません。

したがって、個別の各フィールドに対して十分な検証が行われるように考慮する必要があります。たとえば、ユーザーが開始日フィールドに適切な日付を入力したことを確認するかどうかは、開発者の判断に任されています。多くの場合には、特定の入力内容をテストする検証コントロールに加えて、RequiredFieldValidator コントロールを追加することをお勧めします。Operator プロパティがDataTypeCheck に設定されている CompareValidator コントロールを追加することは場合によっては役に立ちます。これにより、他の値またはコントロールとの比較を行わずに簡単な型のチェックを実行できます。

参照

概念

ASP.NET サーバー コントロールの検証の種類

その他の技術情報

検証 ASP.NET コントロール