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 メソッドがあり、これによってクライアントへデータを返信することができるのです。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 ASP.NET 入門