aspxページの部分クラスの背後にあるコードはなぜですか?
5 に答える
このMSDN ページ(ASP.NET ページ クラスの概要) を参照してください。
ページがコンパイルされると、ASP.NET は .aspx ファイルに基づいて部分クラスを生成します。このクラスは分離コード クラス ファイルの部分クラスです。生成された部分クラス ファイルには、ページのコントロールの宣言が含まれています。この部分クラスを使用すると、コントロールを明示的に宣言しなくても、コード ビハインド ファイルを完全なクラスの一部として使用できます。
このチャートを参照してください:
代替テキスト http://img30.imageshack.us/img30/7692/msdnchart.gif
このようにして、ロジックを含む 1 つのクラスと、デザイナーのものを含む 1 つのクラスができます。コンパイル時に全体として生成されます。
クラスの他の部分(デザイナーのもの)が開発者から隠されているため
たとえば、これの代わりに
public MyBasePage : System.Web.UI.Page
{
...
protected System.Web.UI.Label lblName;
protected void Page_Load(object sender, EventArgs e)
{
}
...
}
ASP.NETは、これらの宣言をさまざまな物理ファイルに作成し、これを残します
public partial class MyBasePage : System.Web.UI.Page
{
...
protected void Page_Load(object sender, EventArgs e)
{
}
...
}
より詳しい情報:
部分ファイルのもう1つの理由は、クラス定義の一部がツールによって生成され(そして、ある時点で再生成される可能性があります)、クラスの残りの部分がユーザーによって実装される場合を処理するためです。
このような場合、部分クラスを使用しないと、コードが上書きされるか、生成プロセスでそのジョブを実行するのが困難になります(実行できる場合)。
部分クラスを配置すると、生成されたコードをコードに触れることなく簡単に再生成できます。
これのもう1つの良い例は、LINQ-to-SQLにDataContextクラスを使用する場合です。本当に賢いものが1セットの部分クラスファイルに生成され、検証などのために、他の部分クラスに安全な実装を提供できます。再生成があなたの仕事を破壊しないという知識。
Partial 宣言を使用すると、他のファイルにコードを記述できます。コードを同じ名前空間に配置し、クラスに同じ名前を付けるだけで、それらは同じファイルにあるかのように扱われます。生成されたファイルに機能を追加するのに最適です。私はこれを最も頻繁に使用して、LinqToSql オブジェクトに関数/プロパティを追加します。
Aspx.cs は PARTIAL クラスを使用します。これは、このクラスでアクセスされるコントロール (TextBox、GridView など) が .Aspx ファイル (つまり、物理的に別のファイル) で宣言されているため、1 つのクラスにコントロール宣言 (.aspx ファイル) と、宣言されたコントロールに基づく別のビジネス ロジックが含まれているためです。 .aspx ファイル。それらがコンパイルされると、全体が単一のクラスと見なされます。