ASP.NET ページ クラスの概要
更新 : 2007 年 11 月
ASP.NET のページが要求され、マークアップをブラウザに表示するときに実行されるコードは、ページ用に作成したコードだけではありません。ASP.NET では、実行時に、ページの実行に必要なタスクを実際に実行する 1 つ以上のクラスを生成およびコンパイルします。このトピックでは、実行時に生成されるコードの概要について説明します。
ページ クラスのコードの生成と実行
ASP.NET のページは、ページ内のサーバー側の要素 (コントロールなど) と、記述したイベント処理コードを結合して一体として実行されます。そのため、ページをアセンブリにプリコンパイルする必要はありません。ASP.NET は、ユーザーから初めて要求されたときにページを動的にコンパイルして実行します。ページ、またはページが依存するリソースに何らかの変更があった場合、ページは自動的に再コンパイルされます。コンパイラが作成するクラスは、ページが単一ファイル モデルを使用する場合と、分離コード モデルを使用する場合によって異なります。
ASP.NET では、サイトの配置のサポートだけでなく、パフォーマンスの向上、およびエラー チェックを実行する目的で、Web サイトのプリコンパイルがサポートされています。詳細については、「ASP.NET Web サイトのプリコンパイルの概要」を参照してください。プリコンパイルは、シングルファイル モデルと分離コード ページ モデルの両方に使用でき、両方のモデルの出力は同じです。
単一ファイル ページ
単一ファイル ページでは、マークアップ、サーバー側の要素、およびイベント処理コードはすべて 1 つの .aspx ファイルに含まれます。ページがコンパイルされると、コンパイラは、Page 基本クラスから派生する新しいクラス、または @ Page ディレクティブの Inherits 属性で定義されるカスタム基本クラスを生成しコンパイルします。たとえば、アプリケーションのルート ディレクトリに SamplePage1 という名前の新しい ASP.NET Web ページを作成すると、ASP.SamplePage1_aspx という名前の新しいクラスが Page クラスから派生します。アプリケーションのサブフォルダ内のページに対しては、サブフォルダ名が、生成されるクラスの一部として使用されます。生成されたクラスには、.aspx ページ内のコントロールの宣言、イベント ハンドラ、およびその他のカスタム コードが含まれます。
ページが生成されると、生成されたクラスはアセンブリにコンパイルされます。このアセンブリはアプリケーション ドメインに読み込まれます。ページ クラスはインスタンス化および実行されて、出力がブラウザにレンダリングされます。コントロールを追加したり、コードを変更したりして、生成されたクラスに影響を及ぼす変更をページに加えた場合、コンパイルされたクラス コードは無効になり、新しいクラスが生成されます。ASP.NET でのコンパイルの詳細については、「ASP.NET コンパイルの概要」を参照してください。
単一ファイル ASP.NET Web ページ内のページ クラスの継承モデルを次の図に示します。
分離コード ページ
分離コード モデルでは、ページのマークアップとサーバー側の要素は、コントロール宣言を含めて .aspx ファイルに格納され、ページ コードは別個のコード ファイルに格納されます。コード ファイルには部分クラスが含まれます。部分クラスとは、ページの完全なクラスを構成するコード全体の一部だけが含まれることを示すキーワード partial (Visual Basic では Partial) を使用したクラス宣言です。部分クラスには、アプリケーションがページで必要とするコードを追加します。通常、このコードはイベント ハンドラで構成されますが、必要なメソッドやプロパティを追加することもできます。
分離コード ページの継承モデルは、単一ファイル ページの継承モデルよりも多少複雑です。継承モデルは次のようになります。
分離コード ファイルには、基本ページ クラスから継承される部分クラスが含まれます。基本ページ クラスには、Page クラスを使用でき、また Page から派生する別のクラスを使用することもできます。
.aspx ファイルには、分離コードの部分クラスを指す @ Page ディレクティブの Inherits 属性が含まれます。
ページをコンパイルすると、ASP.NET は .aspx ファイルに基づいた部分クラスを生成します。このクラスは、分離コード クラス ファイルの部分クラスです。生成された部分クラス ファイルには、ページのコントロールの宣言が含まれます。この部分クラスにより、コントロールを明示的に宣言しなくても分離コード ファイルを完全なクラスの一部として使用できます。
最後に、ASP.NET は、手順 3 で生成されたクラスを継承する別のクラスを生成します。この 2 回目に生成されたクラスには、ページをビルドするのに必要なコードが含まれます。2 回目に生成されたクラスと分離コード クラスは、ブラウザへの出力をレンダリングするために実行される 1 つのアセンブリにコンパイルされます。
分離コード ASP.NET Web ページのページ クラスの継承モデルを次の図に示します。