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

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3.  //ポストバックのときは処理をしない
  4.  if (this.IsPostBack)
  5.  {
  6.   return;
  7.  }
  8.  //DropDownListを初期化
  9.  ListItem[] vehicle = new ListItem[3];
  10.  vehicle[0] = new ListItem("車", "Car");
  11.  vehicle[1] = new ListItem("バス", "Bus");
  12.  vehicle[2] = new ListItem("タクシー", "Taxi");
  13.  this.ddlVehicle.Items.AddRange(vehicle);
  14.  //CheckBoxListを初期化
  15.  ListItem[] fruits = new ListItem[2];
  16.  fruits[0] = new ListItem("メロン");
  17.  fruits[1] = new ListItem("すいか");
  18.  this.chkFruits.Items.AddRange(fruits);
  19. }
  20. protected void btnSend_Click(object sender, EventArgs e)
  21. {
  22.  //送信のためのURLを作成
  23.  string url = "receive.aspx?text=" + this.txtMessage.Text;
  24.  url += "&vehicle=" + this.ddlVehicle.SelectedValue;
  25.  //CheckBoxコントロールはチェックされた項目を調べる
  26.  url += "&fruits=";
  27.  foreach (ListItem li in this.chkFruits.Items)
  28.  {
  29.   if (li.Selected)
  30.   {
  31.    url += li.Value + ",";
  32.   }
  33.  }
  34.  //余分についたカンマを除去
  35.  if (url.EndsWith(","))
  36.  {
  37.   url = url.Remove(url.LastIndexOf(","), 1);
  38.  }
  39.  //ページ遷移
  40.  this.Response.Redirect(url);
  41. }

○ デザイン(receive.aspx)

 Webフォーム(receive.aspx)を追加して、次のようにコントロールを配置してください。

コントロールの配置例
コントロールの配置例

○ プログラム(receive.aspx.cs)

 次のようにプログラムを記述してください。

index.aspx.cs

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3.  //受信した内容を表示
  4.  this.lblQueryString.Text = this.ClientQueryString;
  5.  this.lblMessage.Text = this.Request["text"];
  6.  this.lblVehicle.Text = this.Request["vehicle"];
  7.  this.lblFruits.Text = this.Request["fruits"];
  8. }

○ 実行結果

 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行目では送信されたデータを表示しています。

前へ   次へ