ASP.NET Web ページの概要

更新 : 2007 年 11 月

ASP.NET Web ページでは、Web サイトの動的コンテンツを作成できます。静的 HTML ページ (.htm ファイルまたは .html ファイル) では、サーバーはファイルを読み込み、読み込んだファイルをそのままの状態でブラウザに送信することで Web 要求を実行します。これに対して、ユーザーが ASP.NET Web ページ (.aspx ファイル) を要求すると、そのページは Web サーバー上でプログラムとして実行されます。ページの実行時に、値の計算、データベース情報の読み取りや書き込み、他のプログラムの呼び出しなど、Web サイトから要求されるあらゆるタスクを実行できます。出力時には、ページでマークアップ (HTML または他のマークアップ言語の要素) が動的に生成され、この動的出力がブラウザに送信されます。

このトピックでは、Web アプリケーションにおける ASP.NET Web ページの動作の基本的な特性の概要について説明します。

ポストバックとラウンド トリップ

ASP.NET ページは、サーバー上でコードとして実行されます。したがって、ページを処理するために、ページはユーザーがボタンをクリックしたときに (場合によっては、ユーザーがチェック ボックスをオンにしたり、ページの他のコントロールと対話したりしたとき)、サーバーに送信されるように構成されます。サーバー コードを実行し、ユーザーに対して新しいバージョンを表示できるように、ページがサーバーに送信されるたびに、そのページ自体に再度送信されます。

ASP.NET Web ページの処理サイクルは、次のとおりです。

  1. ユーザーがページを要求します (ページは HTTP GET メソッドによって要求されます)。ページが初めて実行されます。前処理を実行するようにページをプログラミングしている場合は、その前処理が実行されます。

  2. ページはマークアップをブラウザに動的に表示するため、ユーザーには他のページと同様の Web ページとして表示されます。

  3. ユーザーは情報を入力したり、利用できる選択項目を選択してから、ボタンをクリックします (ユーザーがボタンではなくリンクをクリックした場合は、そのページから別のページに移動するだけであり、最初のページではそれ以降の処理は発生しません)。

  4. ページが Web サーバーにポストされます (ブラウザは、HTTP POST メソッドを実行します。ASP.NET では、これをポストバックと呼びます)。具体的には、ページはそのページ自体にポストバックされます。たとえば、ユーザーが Default.aspx ページを使用している場合、ページ上のボタンをクリックすると、そのページは Default.aspx のターゲットでサーバーにポストバックされます。

  5. Web サーバー上で、ページが再び実行されます。ユーザーが入力または選択した情報をページで使用できるようになります。

  6. ページはプログラミングされている処理を実行します。

  7. ページはそのページ自体をブラウザに再び表示します。

ユーザーがページで作業を続けている間、このサイクルが続きます。ユーザーがボタンをクリックするたびに、ページ内の情報が Web サーバーにポストされ、ページが再び実行されます。この各サイクルをラウンド トリップと呼びます。ページの処理は Web サーバー上で行われるため、ページで実行できる各アクションごとに、サーバーへのラウンド トリップが必要となります。

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

ASP.NET Web ページでは、クライアント スクリプトを実行できます。クライアント スクリプトでは、サーバーへのラウンド トリップは必要はありません。クライアント スクリプトは、ユーザー入力の検証や一部の種類の UI をプログラミングする際に役立ちます。詳細については、「ASP.NET Web ページのクライアント スクリプト」を参照してください。

ページ間ポスティング

ページをそのページ自体ではなく、別のページにポストすることが必要な場合もあります。これは、ページ間ポスティングと呼びます。たとえば、顧客のオーダーを処理する一連のページを作成するとします。各ページは、シーケンスの中での次のページにポストできます。詳細については、「ASP.NET Web ページにおけるページ間ポスティング」を参照してください。

ページの有効期間

デスクトップ アプリケーションのフォームとは異なり、ユーザーがフォームを使用している間に、ASP.NET Web ページが起動して実行されることはありません。また、ページがアンロードされるのは、ユーザーが [閉じる] をクリックした場合だけです。これは、Web が本質的には切断されているためです。ブラウザが Web サーバーのページを要求すると、ブラウザとサーバーはその要求を処理する間だけ接続されます。Web サーバーがブラウザにページを表示すると、接続は終了します。ブラウザが同じ Web サーバーに対して別の要求を行うと、それが同じページの要求であっても、この要求は新しい要求として処理されます。

切断されているという Web の特性は、ASP.NET ページを実行する方法に影響します。ユーザーが ASP.NET Web ページを要求すると、そのページの新しいインスタンスが作成されます。ページは処理を実行し、ブラウザにマークアップを表示した後、破棄されます。ユーザーがボタンをクリックしてポストバックを実行すると、ページの新しいインスタンスが作成され、ページは処理を実行し、再び破棄されます。したがって、各ポストバックとラウンド トリップの結果として、ページの新しいインスタンスが作成されることになります。

詳細については、「ASP.NET Web ページの作成」を参照してください。

ページの状態の保持

通常の HTTP プロトコルでは、サーバーがページに関して保持する情報は、ユーザーがページ上のコントロールを使用して指定した情報だけです。ページがポストされたときに、ブラウザはこの情報だけをサーバーに送信するためです。変数の値やプロパティの設定など、その他の情報は破棄されます。ASP.NET では、次の方法でその他のページ情報を保存できます。

  • ASP.NET では、次のラウンド トリップまでの間、コントロールの設定 (プロパティ) が保存されます。これを、コントロールの状態の保存と呼びます。

  • ASP.NET は、次のラウンド トリップまでの間、独自の変数およびアプリケーション固有またはセッション固有の情報を保存できるように、状態管理機能を備えています。

  • ASP.NET は、ページが初めて要求されたときと、ページがポストされたときを区別して検出できるため、それに応じたプログラミングを行うことができます。たとえば、ページが初めて表示されたときにデータベースから情報を読み取り、各ポストバック時には読み取らないようにできます。

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

    ページ情報をキャッシュしてページを最適化するようにサーバーを構成できます。ただし、アプリケーション プログラミングを目的とする場合は、サーバーが処理を完了するとすぐにページは破棄されると考えるのが最も明快です。

詳細については、「ASP.NET の状態管理の概要」を参照してください。

ASP.NET Web ページのプログラミング

.NET Framework では、Visual Basic、C#、J# などのさまざまな言語を使用して、ASP.NET Web ページのサーバー コードを作成できます。ASP.NET Web ページには、ブラウザ内で実行するクライアント スクリプトを含めることができます。ASP.NET の一部の関数は、クライアント スクリプトを生成し、ページに挿入します。この場合、ASP.NET はブラウザ間で最適な機能を実現するために、常に ECMAScript (JavaScript) を生成します。また、カスタム機能のための独自のクライアント スクリプトを追加することもできます。この場合、対象とするブラウザと互換性のあるクライアント スクリプト言語を使用できます。

サーバー コントロール

すべての Web ページと同様に、ASP.NET Web ページにも静的テキストを含めることができます。ただし、ほとんどの場合、テキスト ボックス、チェック ボックス、ボタンなどのコントロールをページに追加します。これらのコントロールを使用すると、ユーザーがページとやり取りし、ページをポストバックするときにサーバーに情報を送信できます。

ASP.NET には、Web サーバー コントロールと呼ばれるコントロールのコレクションが用意されています。ASP.NET サーバー コントロールは、対応する HTML フォーム要素に似ている場合があります。たとえば、ASP.NET の TextBox コントロールは、HTML の <input type="text"> タグに似ています。ただし、ASP.NET サーバー コントロールでは、HTML 要素よりも多彩なプログラミングが可能です。また、HTML 要素よりもさらに広範な機能を提供する ASP.NET サーバー コントロールもあります。ASP.NET Web ページで使用できるサーバー コントロールには、カレンダー コントロール、リストやグリッドを表示するデータ バインド コントロール、サイトのセキュリティを強化するログイン コントロールなど、さまざまなコントロールがあります。

詳細については、「ASP.NET Web サーバー コントロールの概要」を参照してください。

ページ イベントとサーバー コントロール イベント

ASP.NET Web ページとコントロールは、Windows フォームに見られるようなイベント モデルをサポートしています。たとえば、ユーザーが ASP.NET Web ページ上の Button サーバー コントロールをクリックすると、ページがサーバーにポストバックされ、ページが再作成され、Click イベントが発生します。ページにコードを追加することによって、この Click イベントに応答できます。

ページが初期化されるときには、そのページ自体が有効期間イベントを発生させます (Page_Init イベントや Page_Load イベントなど)。そのため、ページの起動時にコードを実行できます (ページは各ラウンド トリップで作成され、再初期化されることに留意してください)。各コントロールでは、独自のイベントが発生します。ボタン コントロールでは、Click イベントが発生し、チェック ボックス コントロールとオプション ボタン コントロールでは、CheckedChanged イベントが発生します。また、リスト ボックス コントロールとドロップダウン リスト コントロールでは、SelectedIndexChanged イベントが発生します。Calendar コントロールなどの一部のコントロールで発生するイベントは、単純な Click イベントに比べると抽象的なイベントです。たとえば、Calendar コントロールでは、ユーザーが別の月に移動したときに VisibleMonthChanged イベントが発生します。

ほとんどの ASP.NET サーバー コントロールでは、サーバー コード内で処理できるごくわずかなイベントしかサポートしていません。イベントを処理するには、ページでラウンド トリップを実行し、ユーザーの選択をページに送信して処理できるようにする必要があります。サーバー コントロールは、onmouseover などの発生頻度の高いイベントは公開していません。このようなイベントが発生するたびにサーバーへのラウンド トリップが行われると、ページの応答時間に大きく影響するためです。ただし、onmouseover などのクライアント側のイベントを発生させるように、ASP.NET サーバー コントロールを構成できます。この場合、コントロールはサーバーにポストバックしないため、クライアント スクリプトを作成してイベントに応答します。

イベントおよびイベント ハンドラの作成方法と使用方法の詳細については、「ASP.NET Web ページのサーバー イベント処理」を参照してください。

ブラウザの互換性

ASP.NET Web ページの処理は Web サーバー上で発生するため、ASP.NET Web ページはすべてのブラウザまたはモバイル デバイスと互換性があります。Web ページは、スタイルやレイアウトなどの機能に対して、ブラウザ準拠の正しいマークアップ (XHTML またはその他のマークアップ言語) を自動的に表示します。また、携帯電話など、特定のデバイスに対して出力を表示するために特別にデザインされたコントロールを含む Web ページを作成することもできます。詳細については、「ASP.NET モバイル Web ページの作成」を参照してください。

参照

概念

ASP.NET Web サーバー コントロールの概要