アンソニー・ムーア
Microsoft Corporation
2000年10月
概要:ASP+を使用してWebコントロールを確認する詳細な説明
導入
この記事では、ASP+検証がどのように機能するかを詳細に説明しています。検証コントロールを使用して複雑なページを生成する場合、または検証フレームワークを拡張する場合は、この記事を読むことをお勧めします。検証コントロールの使用を学びたい場合、または検証コントロールを使用するかどうかを決定する場合は、「ASP+(英語)のユーザー入力検証」を参照してください。
はじめる
ASP+開発プロセス全体を通して、検証を理解することが重要であることを知っています。今日のほとんどの商用Webサイトを見ると、これらのサイトには、多くの手書きコードを実行することで明らかに検証されている多くのフォームがあることがわかります。検証コードを書くことは興味深い仕事ではありません。データテーブルを表示したり、その場でチャートを生成したりするコードを作成したい場合は魅力的かもしれませんが、この「クールな」アプローチがnull値を名前フィールドに禁止できることを同僚に確認することはできません。
他の理由から、Webアプリケーションの検証も非常に面倒です。 HTML 3.2には、ユーザーから取得できるコンテンツに多くの制限があります。そのため、ユーザーが特定の文字やビープ音を入力することを禁止するなど、より完全に機能するクライアントに使用できる手法を適用できません。ブラウザスクリプトを使用すると、より強力な検証が得られる場合があります。ただし、クライアントのブラウザに必ずしもスクリプトが存在するわけではなく、悪意のあるユーザーがバイパスできるため、この方法を証明することは困難です。したがって、サイトのセキュリティを確保するために、サーバーで同じ検査を実行する必要があります。
ASP+を開発するとき、当初の意図は、1つのコントロールのみを使用して検証を処理することでした。これは、エラーを表示できるテキストボックスコントロールである可能性があります。しかし、私がコントロールを設計していたとき、私はこの願いを実現できないことがわかりました。多数のデータ入力フォームを見て、できるだけ多くのフォームで動作できるソリューションを見つけようとしました。データ入力フォームには多くの興味深い機能があることがわかりました。
エラーメッセージまたはアイコンは多くの場合、入力要素に隣接していますが、ほとんどの場合、テーブルの異なるセルにあります。
多くの場合、すべてのエラーを要約するためにページに領域があります。
多くのサイトには、クライアントスクリプトが含まれており、フィードバックをより高速に提供しながら、サーバーを行き来しないようにします。
クライアントスクリプトを含む多くのサイトは、エラーが発生したときに情報ボックスを表示します。
テキスト入力は検証するだけでなく、ドロップダウンリストやラジオボタンも検証します。
フィールドが空の場合、サイトは通常、エントリが無効な場合とは異なるメッセージまたはアイコンを表示します。
多くの有効性チェックは、一般的に使用される式の良い代替品です。
検証は通常、2つの入力間の比較に基づいています。
90%以上の検証タスクは、名前や郵便番号のチェックなどの一般的な操作です。ほとんどのサイトはまだこれらの作業を繰り返し行っているようです。
なぜなら、サイト間の違いは、各サイトのすべての検証タスクを処理するための完璧なソリューションを取得するには大きすぎることが多いためです。
上記のすべてを考慮に入れて、最終的なソリューションには、5つのバリデーターコントロール、検証ムマリーコントロール、およびページオブジェクトとの統合が含まれていました。また、ソリューションを拡張する必要があり、クライアントとサーバーの両方でAPIが協力する必要があることも明らかです。
私たちの研究で実施されたさまざまな検証を通して、より大きなツールボックスが必要であると思われることがわかりました。 Microsoft®ActiveX®などのほとんどのコンポーネント環境では、検証制御のすべての機能を1つのコントロールに統合し、異なるモードで異なるプロパティを処理しようとした可能性があります。しかし、幸いなことに、Microsoft®.NETフレームワークには魔法の継承があり、特定のプロパティの特定の検証を実行するための一連のコントロールを提供します。
これらのコントロールによって行われた作業のほとんどは、一般的な親ベースバリデーターに実装されています。また、すべての作業を行うために、Basevalidatorまたは他のコントロールから派生することもできます。実際、Basevalidatorでさえ、独自のテキストプロパティを実装するにはあまりにも怠zyですが、ラベルプロパティから継承しています。
いつ、何が起こったのですか?
一連のイベントを理解することは、検証Webコントロールを含むページを使用する場合に非常に効果的です。検証条件がオプションである場合は、クライアントとサーバーで確認がいつ実行されるかを正確に知る必要があります。独自の検証ルーチンを書きたい場合は、非常に時間がかかるか、副作用があります。同時に、検証ルーチンを呼び出すタイミングを理解することも重要です。
まず、サーバーを見てみましょう。