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.vb)

 次のように各イベントハンドラにプログラムを記述してください。

index.aspx.vb

  1. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.  'ポストバックのときは処理をしない
  3.  If Me.IsPostBack Then
  4.   Return
  5.  End If
  6.  'DropDownListを初期化
  7.  Dim vehicle(2) As ListItem
  8.  vehicle(0) = New ListItem("車", "Car")
  9.  vehicle(1) = New ListItem("バス", "Bus")
  10.  vehicle(2) = New ListItem("タクシー", "Taxi")
  11.  Me.ddlVehicle.Items.AddRange(vehicle)
  12.  'CheckBoxListを初期化
  13.  Dim fruits(1) As ListItem
  14.  fruits(0) = New ListItem("メロン")
  15.  fruits(1) = New ListItem("すいか")
  16.  Me.chkFruits.Items.AddRange(fruits)
  17. End Sub
  18. Protected Sub btnSend_Click(sender As Object, e As EventArgs) Handles btnSend.Click
  19.  '送信のためのURLを作成
  20.  Dim url As String = "receive.aspx?text=" + Me.txtMessage.Text
  21.  url += "&vehicle=" + ddlVehicle.SelectedValue
  22.  'CheckBoxコントロールはチェックされた項目を調べる
  23.  url += "&fruits="
  24.  For Each li As ListItem In Me.chkFruits.Items
  25.   If li.Selected Then
  26.    url &= li.Value & ","
  27.   End If
  28.  Next
  29.  '余分についたカンマを除去
  30.  If url.EndsWith(",") Then
  31.   url = url.Remove(url.LastIndexOf(","), 1)
  32.  End If
  33.  'ページ遷移
  34.  Me.Response.Redirect(url)
  35. End Sub

○ デザイン(receive.aspx)

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

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

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

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

index.aspx.vb

  1. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.  '受信した内容を表示
  3.  Me.lblQueryString.Text = Me.ClientQueryString
  4.  Me.lblMessage.Text = Me.Request("text")
  5.  Me.lblVehicle.Text = Me.Request("vehicle")
  6.  Me.lblFruits.Text = Me.Request("fruits")
  7. End Sub

○ 実行結果

 index.aspxを実行してください。

実行結果
実行結果

○ 解説

 index.aspx.vbの11~15行目と、18~21行目は、それぞれのリストコントロールに項目を追加しています。今回は、ListItem配列に項目をあらかじめ準備して、リストコントロールのItemsコレクションのAddRangeメソッドの引数に渡しています。これにより、項目が設定されます。

 26行目では、送信先のURLを作成しています。データを渡すためにURLにデータを追加します。Webページのファイル名の後に「?キー=値&キー=値」というようにセットします。

 receive.aspxe.vbの6行目では、PageオブジェクトのQueryStringプロパティを参照して要求のあったURLにセットされたデータを表示しています。その中のデータを取得するには、HttpRequestオブジェクトのitemプロパティを使います。このプロパティはRequest(“キー名”)のようにアクセスできます。7~9行目では送信されたデータを表示しています。

前へ   次へ