次の方法で共有


ASP.NET サーバー コントロールのクライアント側検証

更新 : 2007 年 11 月

ユーザーが使用しているブラウザがダイナミック HTML (DHTML) をサポートしている場合、ASP.NET 検証コントロールはクライアント スクリプトを使用して検証を行うことができます。コントロールがサーバーへのラウンド トリップなしにすぐにフィードバックを返すため、ページ上でのユーザーの操作性が向上します。

ほとんどの状況では、クライアント側の検証を使用するにあたって、ページまたは検証コントロールに変更を加える必要はありません。このコントロールはブラウザが DHTML をサポートしているかどうかを自動的に検出し、それに応じてチェックを実行します。クライアント側の検証では、サーバー側の検証と同じエラー表示機構が使用されます。

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

検証は、クライアント側で既に実行されていてもサーバーで実行されます。これにより、サーバー コードで有効性状態を確認でき、クライアント側検証をバイパスしたユーザーに対しても検証を行うことができます。

クライアント側の検証における相違点

クライアント側で検証が実行される場合、検証コントロールには以下の特徴が加わります。

  • 検証エラー メッセージを一覧表示する場合は、ユーザーがページを送信したときに表示されるメッセージ ボックスに一覧を表示できます。詳細については、「方法 : ASP.NET サーバー コントロールに対する検証エラー メッセージの表示を制御する」を参照してください。

  • 検証コントロールのオブジェクト モデルがクライアント上では少し異なります。このトピックの「クライアント検証のオブジェクト モデル」を参照してください。

クライアント側の検証に関連して、いくつかの小さな違いがあります。

  • クライアント側の検証が有効である場合は、クライアント側の検証を実行するために使用されるスクリプト ライブラリへの参照がページに含まれます。

  • RegularExpressionValidator コントロールを使用するとき、ECMAScript 互換言語 (Microsoft JScript など) が利用できる場合は、式をクライアント上でチェックできます。クライアント側での正規表現のチェックは、Regex クラスを使用してサーバー上で行われる正規表現のチェックとは少し異なります。

  • ページの送信前に Click イベントを受け取って処理するクライアント側のメソッドがページに含まれます。

クライアント検証のオブジェクト モデル

検証コントロールは、クライアント側でもサーバー側とほとんど同じオブジェクト モデルを提供します。たとえば、クライアント側でもサーバー側でも同じ方法で、検証コントロールの IsValid プロパティを読み取って検証をテストできます。

ただし、ページ レベルで公開される検証情報には違いがあります。サーバー上ではページはプロパティをサポートしますが、クライアント上ではグローバル変数を含みます。ページ上で公開される情報の違いを次の表に示します。

クライアント側のページ変数

サーバー側のページ プロパティ

Page_IsValid

IsValid

Page_Validators (配列)   ページ上のすべての検証コントロールへの参照を含みます。

Validators (コレクション)   すべての検証コントロールへの参照を含みます。

Page_ValidationActive   検証を行うかどうかを指定する Boolean 型の値です。プログラムによりクライアント側の検証をオフにするには、この変数を false に設定します。

同等の項目はありません。

yb52a4x0.alert_note(ja-jp,VS.90).gifメモ :

ページに関連する検証情報は、すべて読み取り専用と考えてください。

クライアント側の検証でエラーが発生した場合のページのポスト

クライアント側の検証が可能でも、クライアント側では行わずに、サーバー側の検証のみを実行することが必要な場合があります。たとえば、検証においてサーバー側でしか得ることができない情報やリソース (データベースへのアクセスなど) が必要となる場合は、サーバー側の検証が必要です。

既定では、クライアント側の検証を実行してページ上にエラーがある場合、ユーザーはサーバーにページをポストできません。ただし、エラーがあってもユーザーがページをポストできるようにすることが必要な場合もあります。たとえば、ページ上にキャンセル ボタンまたは移動ボタンが用意されているとき、コントロールの検証結果に関係なく、これらのボタンを押したときにページが送信されるようにする必要がある場合もあります。詳細については、「方法 : ASP.NET サーバー コントロールの検証を無効にする」を参照してください。

参照

概念

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

その他の技術情報

検証 ASP.NET コントロール