HttpResponseオブジェクトを使ったページ遷移
HttpResponseクラスのRedirectメソッドを使ったページ遷移の方法を見てみましょう。PageオブジェクトのResponseプロパティでHttpResponseオブジェクトを取得できます。
■ 主なプロパティ
プロパティ名
|
概要
|
Cookies
|
応答のクッキーコレクションを取得する
|
HttpResponeの主なプロパティ
■ 主なメソッド
メソッド名
|
概要
|
Redirect
|
クライアントを引数で指定したURLにリダイレクトする
|
HttpResponeの主なプロパティ
ページを遷移するにはRedirectメソッドを使います。データをほかのフォームへ送信する際にURLに埋め込んで送ることができます。この方法をGET送信といいます。
例:
http://localhost/index.aspx?id=123&name=suzuki
受信するフォームでは、HttpRequestクラスを使用して情報を取り出します。PageオブジェクトのRequestプロパティでHttpRequestオブジェクト取得できます。
■ 主なプロパティ
プロパティ名
|
概要
|
Cookies
|
クライアントから送信されたクッキーのコレクションを取得する
|
QueryString
|
HTTPクエリ文字列変数のコレクションを取得する
|
HttpRequestの主なプロパティ
プロジェクトの種類 |
ASP.NET Webアプリケーション |
プロジェクト名 |
HttpResponseTest |
サンプルダウンロード
○ デザイン(index.aspx)
Webフォームを追加して、次のようにコントロールを配置してください。
コントロールの配置例
○ プログラム(index.aspx.cs)
次のように各イベントハンドラにプログラムを記述してください。
index.aspx.cs
- protected void Page_Load(object sender, EventArgs e)
- {
- //ポストバックのときは処理をしない
- if (this.IsPostBack)
- {
- return;
- }
- //DropDownListを初期化
- ListItem[] vehicle = new ListItem[3];
- vehicle[0] = new ListItem("車", "Car");
- vehicle[1] = new ListItem("バス", "Bus");
- vehicle[2] = new ListItem("タクシー", "Taxi");
- this.ddlVehicle.Items.AddRange(vehicle);
- //CheckBoxListを初期化
- ListItem[] fruits = new ListItem[2];
- fruits[0] = new ListItem("メロン");
- fruits[1] = new ListItem("すいか");
- this.chkFruits.Items.AddRange(fruits);
- }
- protected void btnSend_Click(object sender, EventArgs e)
- {
- //送信のためのURLを作成
- string url = "receive.aspx?text=" + this.txtMessage.Text;
- url += "&vehicle=" + this.ddlVehicle.SelectedValue;
- //CheckBoxコントロールはチェックされた項目を調べる
- url += "&fruits=";
- foreach (ListItem li in this.chkFruits.Items)
- {
- if (li.Selected)
- {
- url += li.Value + ",";
- }
- }
- //余分についたカンマを除去
- if (url.EndsWith(","))
- {
- url = url.Remove(url.LastIndexOf(","), 1);
- }
- //ページ遷移
- this.Response.Redirect(url);
- }
○ デザイン(receive.aspx)
Webフォーム(receive.aspx)を追加して、次のようにコントロールを配置してください。
コントロールの配置例
○ プログラム(receive.aspx.cs)
次のようにプログラムを記述してください。
index.aspx.cs
- protected void Page_Load(object sender, EventArgs e)
- {
- //受信した内容を表示
- this.lblQueryString.Text = this.ClientQueryString;
- this.lblMessage.Text = this.Request["text"];
- this.lblVehicle.Text = this.Request["vehicle"];
- this.lblFruits.Text = this.Request["fruits"];
- }
○ 実行結果
index.aspxを実行してください。
実行結果
○ 解説
index.aspx.csの21~25行目と、28~31行目は、それぞれのリストコントロールに項目を追加しています。今回は、ListItem配列に項目をあらかじめ準備して、リストコントロールのItemsコレクションのAddRangeメソッドの引数に渡しています。これにより、項目が設定されます。
37行目では、送信先のURLを作成しています。データを渡すためにURLにデータを追加します。Webページのファイル名の後に「?キー=値&キー=値」というようにセットします。
receive.aspxe.csの15行目では、PageオブジェクトのQueryStringプロパティを参照して要求のあったURLにセットされたデータを表示しています。その中のデータを取得するには、HttpRequestオブジェクトのitemプロパティを使います。このプロパティはRequest[“キー名”]のようにアクセスできます。16~18行目では送信されたデータを表示しています。
前へ 次へ