2009-08-25 14 views
7

なぜコードはaspxページの部分クラスの背後にあるのですか?aspxコードビハインドファイルが部分クラスとして宣言されているのはなぜですか?

+0

質問のタイトルを編集する必要があります。 _stupid_質問ではありません。 –

+2

"サウスパークのギャリソン氏。"愚かな質問はなく、愚かな人だけです。 OK、それはここには当てはまらないので、私はその引用を気に入っています。 :D – Powerlord

+0

唯一の愚かな質問はあなたが尋ねないものです。 – belugabob

答えて

12

私はあなたがこのMSDN Page(ASP.NETページクラスの概要)を参照することになります。

ページがコンパイルされると、ASP.NET は の.aspxファイルに基づいて、部分クラスを生成します。このクラスは、コードビハインドクラスファイルの部分的な クラスです。 生成された部分クラスファイル には、ページの コントロールの宣言が含まれています。この部分クラスを使用すると、 のコードビハインドファイルを なしで完全なクラスの一部として の一部として使用して、コントロール を明示的に宣言する必要があります。あなたのロジックが含まれている一つのクラスとデザイナーのものが含まれている1つのクラスを持っている

alt text http://img30.imageshack.us/img30/7692/msdnchart.gif

この方法:

は、このチャートを参照してください。コンパイル時には、全体として生成されます。

+1

これは、「チャートにしてはならないものをチャートにする」チャートの1つです。 – womp

+0

「コードビハインドページの継承モデルは、単一ファイルページの継承モデルよりも少し複雑です」このMSDN記事のセクションは、このグラフをよく理解するのに非常に役立ちました。 –

4

クラス(デザイナーのもの)の他の部分があるのでそれは、ASP.NETは残して、異なる物理ファイルにそれらの宣言を作成する代わりに、この

public MyBasePage : System.Web.UI.Page 
{ 
    ... 
    protected System.Web.UI.Label lblName; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
    ... 
} 

の、例えば開発者

から隠されていますこの

public partial class MyBasePage : System.Web.UI.Page 
{ 
    ... 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    ... 
} 

さらに詳しい情報:

+0

あなたは精巧にできますか?それはwinformsデザイナーのファイルと同じですか? – andrewWinn

+0

@andrewWinn - これはwinformsデザイナーファイルと同じです。ASP.NET 1.1では、コードビハインドの先頭にすべてのコントロール宣言があり、下部に折り畳まれた領域が "すべてのイベントが配線されている「デザイナー生成、変更しない」。 –

+0

@jaun、あなたが提供したリンクは機能していません。 – ShaileshDev

1

パーシャル宣言では、他のファイルにコードを書くことができます。同じ名前空間に入れてクラスに名前を付けるだけで、同じファイルにあるかのように扱われます。生成されたファイルに機能を追加するのに最適です。私はLinqToSqlオブジェクトに関数/プロパティを追加するのに最も頻繁に使用します。

+0

さらに、醜いコードをすべてあなたから偶然それを編集する。あなたは今それを編集するためにはるかに意図的でなければなりません.... – klabranche

1

部分的なファイルの他の理由は、クラス定義のいくつかがツールによって生成され(ある時点で再生成される可能性がある)、クラスの残りの部分が実装される場合を処理するためです。

このような場合、部分的なクラスを使用しないと、コードが上書きされたり、生成プロセスがジョブを実行するのが困難になります(まったく問題がない場合)。

部分クラスを使用すると、生成されたコードをコードに触れることなく簡単に再生成することができます。

LINQ-to-SQL用のDataContextクラスを使用した場合のもう1つの良い例は、本当に巧妙なものが部分クラスファイルの1つのセットに生成され、再世代があなたの仕事を破壊することはないという知識で安全です。

0

Aspx.csは、このクラスでアクセスされるコントロール(TextBox、GridViewなど)が.Aspxファイルで宣言されているため、PARTIALクラスを使用します。物理的に別のファイル)、コントロール宣言(.aspxファイル)と、.aspxファイルで宣言されたコントロールに基づく別のビジネスロジックが含まれます。彼らは全体として単一のクラスとみなされてコンパイルされます。

関連する問題