以上のように、scriptエレメント内部に定義したメソッドはすべてPageクラスの派生クラスのメンバとして定義される。従って、こうしたメソッドの内部では、前回解説したIsPostBackプロパティのように、Pageクラスのメソッドやプロパティへアクセスすることが可能だ。PageクラスにはIsPostBackプロパティ以外にもいくつか利用頻度の高いプロパティやメソッドが定義されているので、ここでPageクラスのメンバについて解説しておこう。
Pageクラスには非常にたくさんのメソッドとプロパティが定義されているが、頻繁に利用されるメンバはそれほど多くはない。比較的利用頻度が高いと思われるPageクラスのメンバをピックアップして、次の2つの表に示す。
プロパティ | 型 | 機能 |
---|---|---|
Application | System.Web.HttpApplicationState | 同一のアプリケーションでの複数のセッションで共有される情報を保存しておくコレクション |
IsPostBack | bool | ポストバックされたリクエストを処理していればtrue |
IsValid | bool | ページに含まれるすべての検証サーバ・コントロールの検証に成功するとtrue |
Request | HttpRequest | クライアントから送信された情報が格納されたオブジェクト |
Response | HttpResponse | クライアントへの出力をコントロールするオブジェクト |
Server | HttpServerUtility | ユーティリティ的なメソッドが定義されたクラス |
Session | HttpSessionState | セッションが処理されている間、維持され続ける情報を保存しておくコレクション |
Trace | TraceContext | トレース情報の出力に利用するオブジェクト。詳しくは後述 |
Pageクラスの主要なプロパティ |
メソッド | 機能 |
---|---|
MapPath | 仮想パスを物理パスに変換する |
Validate | ページに含まれるすべての検証サーバ・コントロールの検証を行う |
Pageクラスの主要なメソッド |
ASPの経験があれば、見慣れたプロパティがそろっていることに気付くだろう。Request、Response、Serverオブジェクトは、これなくしてはASPアプリケーションが成立しないとさえいえるASPの御三家オブジェクトであるし、ApplicationやSessionオブジェクトもおなじみのオブジェクトであろう。見慣れないプロパティは、IsPostBack、IsValid、Traceプロパティぐらいのはずだ。IsValidプロパティとValidateメソッドを参照するサーバ・コントロールの検証については次回以降解説する予定でいるので、ここではRequest、Response、Serverプロパティについて解説していく。
■PageクラスのRequestプロパティ
名前が示すとおり、Requestプロパティには、クライアントからサーバへ送信されたリクエストにまつわる情報が格納されているHttpRequest型オブジェクトである。基本的に、クライアントから送信されたHTTPリクエストが解析され、アクセスしやすい形で構造化されたオブジェクトだと考えればよい。
ただし、リクエストに含まれる情報のうち最もアクセス頻度が高いと思われる、フォームに入力された情報は、サーバ・コントロール・オブジェクトを通してアクセスできるので、Requestプロパティの使用頻度はそれほど高くはない。主に、リスト4.4に示すように、GETメソッドを利用してURLの一部として送信されたパラメータへアクセスするとき、またはリスト4.5に示すように、クライアントから送信されたクッキーを参照するときなど、フォーム以外の情報へアクセスするために利用することになるだろう。
<%@ PAGE LANGUAGE="C#" %>
<html>
<script runat="server">
void Page_Load(object sender, EventArgs e) {
if (!isPostBack) {
TextBox1.Text = Request.QueryString["query"];
}
}
</script>
<body>
<form runat="server">
<asp:TextBox id="TextBox1" runat="server" />
<asp:Button Text="Submit" />
</form>
</body>
</html>
<%@ PAGE LANGUAGE="C#" %>
<html>
<script runat="server">
void Page_Load(object sender, EventArgs e) {
String[] keys = Request.Cookies.AllKeys;
for (int i = 0; i < keys.Length; i++) {
Response.Write(keys[i] + ":" + Request.Cookies[keys[i]] + "<br>");
}
}
</script>
<body>
</body>
</html>
また、HttpRequestクラスにはデバッグに便利なSaveAsメソッドが用意されている。このメソッドを、
Request.SaveAs("c:\\debug.txt", true);
のように呼び出せば、リスト4.6に示すように、クライアントから送られてきたリクエストが生の状態でファイルに保存することができる。
POST /aspnet/Request/hoge03.aspx HTTP/1.1
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 153
.
.
__VIEWSTATE=dDwyMDA1MzM2OTYxOzs%2BKFxIkT0e9AQPgtAR8MNLbB0jNGI
%3D&t1=%E3%81%82%&_ctl1=Submit
HttpRequestクラスの主要なプロパティとメソッドを次に挙げておく。
プロパティ | 型 | 機能 |
---|---|---|
Form | NameValueCollection | フォーム変数が格納されたコレクション。サーバ・コントロールcの値はRequest.Form["c"]で参照できる |
QueryString | NameValueCollection | GETメソッドを利用して、URLの一部として送信されたパラメータを含むコレクション。「http://〜/default.aspx?filename=sample.txt」としてリクエストされたとき、filenameの値(sample.txt)は「Request.QueryString["filename"]」で参照できる |
ServerVariables | NameValueCollection | CONTENT_LENGTHやREMOTE_ADDRといったサーバ変数が格納されたコレクション。このコレクションに格納された情報の大半は、HttpRequestクラスのプロパティとしてアクセスできる |
Cookies | HttpCookieCollection | クライアントから送信されたクッキーが格納されたコレクション |
Params | NameValueCollection | QueryString、Form、ServerVariables、Cookiesの各要素がすべて格納されたコレクション |
Files | HttpFileCollection | フォームからアップロードされたファイルが格納されたコレクション |
HttpRequestクラスの主要なプロパティ |
メソッド | 機能 |
---|---|
SaveAs | クライアントから送信された情報をそのままファイルに保存する |
MapPath | 引数に指定された仮想パスに対応する物理パスを戻す |
HttpRequestクラスの主要メソッド |
Copyright© Digital Advantage Corp. All Rights Reserved.