HttpContextクラスを利用するとデータをオブジェクトに包み込んでサーバー内でデータを送信します。PageオブジェクトのContextプロパティでHttpContextオブジェクトを取得できます。
プロパティ名 | 概要 |
---|---|
Request | 要求されたWebページに対するHttpRequestオブジェクトを取得する |
Response | 要求されたWebページに対するHttpResponseオブジェクトを取得する |
Server | HttpServerUtilityオブジェクトを取得する |
このHttpContextクラスにはいろいろなオブジェクトが入っています。その中のHttpServerUtillityオブジェクト(Serverプロパティ)が持つTransferメソッドで遷移することができます。
プロジェクトの種類 | ASP.NET Webアプリケーション |
---|---|
プロジェクト名 | HttpContextTest |
○ 作成の準備
「HttpResponseTest」プロジェクトを修正して作成しましょう。HttpResponseTestフォルダーをコピーして、作成するプロジェクト名にフォルダー名を変更してください。
○ デザイン(index.aspx)
Webフォーム内の見出しをRedirect → Transferに変更してください。
○ プログラム(index.aspx.cs)
次のようにbtnSend_Clickイベントハンドラを修正してください。
index.aspx.cs
○ デザイン(receive.aspx)
Webフォーム内の見出しをRedirect → Transferに変更してください。また、lblQueryStringを削除してください。
○ プログラム(receive.aspx.cs)
次のようにプログラムを記述してください。
receive.aspx.cs
○ 実行結果
index.aspxを実行してください。
○ 解説
index.aspx.csの37、40行目では、ユーザーが入力した文字列をHttpContextオブジェクトに追加しています。コレクションにキー名、値のセットで登録します。43行目ではCheckBoxListコントロールをHttpContextオブジェクトに追加しています。
Receive.aspx.csの15、16行目は、HttpContextオブジェクトに追加しておいた文字列を、キー名を指定して取り出しています。HttpContextオブジェクトはオブジェクト型のデータを保存します。そのため、取り出したときにどのようなデータ型かを指定する必要があります。今回は、ToStringメソッドを使って文字列表現を取得しています。
19行目ではHttpContextオブジェクトから、前のページで保存しておいたCheckBoxListコントロールを取り出しています。HttpContextオブジェクトから取り出したデータをCheckBoxListコントロールとして扱うためにCheckBoxList型にキャストして変数に格納しています。あとは、項目のリストを一つ一つ確認して、チェックされている項目を取り出して表示しています。
今回のサンプルでは実行後のWebブラウザーのアドレス欄を見るとわかるように、URLが変化していません。サーバー内部で転送され、転送先の処理が結果としてWebブラウザーに表示されています。サーバーの内部でデータの転送が扱われるため、データのデータ型は文字列以外でも扱うことができます。