ASP.NET ではそれぞれのページが Page クラスから派生したクラスのオブジェクトである
前回は最も単純な ASP.NET ページを書きました。先へ進む前に、 これをもう少し詳しくみてみましょう。
例えば、以前の説明では「Response.Write というメソッドを使って...」 などと書きましたが、 そもそもこれは一体なんでしょうか。
それを理解するには、ASP.NET ではそれぞれのページが Page クラスから派生したクラスのオブジェクトである、ということを理解する必要があります。
次のコードで実際の型をみてみましょう。
<%@ Page Language="C#" %> <html> <body> <p> <% Type t; t = this.GetType(); while(true) { Response.Write( t.ToString() + "<br>" ); if ( t == typeof( System.Object ) ) { break; } t = t.BaseType; }; %> </p> </body> </html>
上記のコードを simplest-showtype.aspx として実行すると、結果は次のようになるはずです。
ASP.simplest_showtype_aspx System.Web.UI.Page System.Web.UI.TemplateControl System.Web.UI.Control System.Object
これはどういうことかというと、クラスが次のように派生しているということを意味します。
このページそのものは ... ASP.simplest_showtype_aspx クラスのオブジェクトですが、
これは System.Web.UI.Page から派生しています。これの親は...
System.Web.UI.TemplateControl であり、さらに親は...
System.Web.UI.Control であり、さらに親は...
System.Object です。
・・・ということを表しています。
ポイントは、 「 "ファイル名".aspx として作った ASP.NET ページは、System.Web.UI.Page から派生した ASP."ファイル名"_aspx クラスのオブジェクトになる」ということです。
ちなみに、もう一歩踏み込んだ実験は ASP.NET ページのページはどこから派生しているか? で行ってますので、 興味のある方はご覧ください。
さて、これを踏まえて先ほどの問題「Response.Write とは何か?」 を考えましょう。
Response は System.Web.UI.Page のプロパティ
Response は実は System.Web.UI.Page のプロパティです。Response プロパティは現在のコンテキストの HttpResponse オブジェクトを返します。
HttpResponse クラスには Write メソッドがあり、これによってクライアントへデータを返信することができるのです。