HttpResponseオブジェクトを使ったページ遷移

 HttpResponseクラスのRedirectメソッドを使ったページ遷移の方法を見てみましょう。PageオブジェクトのResponseプロパティでHttpResponseオブジェクトを取得できます。

■ 主なプロパティ

■ Cookiesプロパティ

 応答のcookieコレクションを取得します。

■ Expiresプロパティ

 ブラウザでキャッシュされたページの有効期限が切れるまでの時間を分単位で設定します。

■ 主なメソッド

■ Redirectメソッド

 クライアントを新しいURLにリダイレクトします。

■ SetCookieメソッド

 Cookieコレクションの既存のcookieを更新します。

 ページを遷移する際には、「Redirect」メソッドを使います。データをほかのフォームへ送信する際にURLに埋め込んで送ることができます。この方法をGET送信といいます。

例: 
 http://localhost/Default.aspx?id=123&name=nagura

 受信するフォームでは、「HttpRequest」クラスを使用して、情報を取り出します。PageオブジェクトのRequestプロパティでHttpRequestオブジェクト取得できます。

■ 主なプロパティ

■ Cookiesプロパティ

 クライアントから送信されたcookiesのコレクションを取得します。

■ QueryStringプロパティ

 HTTPクエリ文字列変数のコレクションを取得します。

プロジェクトの種類 ASP.NET Webアプリケーション
プロジェクト名 HttpResponseTest

サンプルダウンロード

○ 作成の準備

 WebサイトにWebフォームを2枚追加してください。(Default.aspx、Default2.aspx)

○ デザイン(Default.aspx)

 次の図のようにコントロールを配置してください。

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

○ デザイン(Default2.aspx)

 次の図のようにコントロールを配置してください。

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

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

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

Default.aspx.vb

  1. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.  If Not IsPostBack Then
  3.   TextBox1.Text = ""
  4.   With DropDownList1.Items
  5.    .Clear()
  6.    .Add("車")
  7.    .Add("バス")
  8.    .Add("トラック")
  9.   End With
  10.   With CheckBoxList1.Items
  11.    .Clear()
  12.    .Add("メロン")
  13.    .Add("スイカ")
  14.   End With
  15.   Button1.Text = "ポストバック"
  16.  End If
  17. End Sub
  18. Protected Sub Button1_Click (ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
  19.  Dim s As String
  20.  Dim i As ListItem
  21.  'Redirectメソッドの引数に指定するURLを作成
  22.  s = "Default2.aspx?TextBox=" & TextBox1.Text & "&DropDownList=" & _
  23.   DropDownList1.SelectedItem.Text & "&CheckBoxList="
  24.  'CheckBoxListコントロールはチェックされた項目を調べてからデータ送信を指定
  25.  For Each i In CheckBoxList1.Items
  26.   If i.Selected Then
  27.    s &= i.Text & ","
  28.   End If
  29.  Next
  30.  '余分に付けすぎたカンマを削除
  31.  If s.EndsWith(",") Then
  32.   s = s.Remove(s.LastIndexOf(","), 1)
  33.  End If
  34.  'RedirectメソッドでDefault2.aspxへ遷移
  35.  Response.Redirect(s)
  36. End Sub

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

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

Default2.aspx.vb

  1. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.  Me.Label1.Text = Me.ClientQueryString
  3.  Me.Label2.Text = "テキストボックスに入力された内容は「" & _
  4.   Request.QueryString.Item("TextBox") & "」です。"
  5.  Me.Label3.Text = "ドロップダウンリストで選択されたのは「" & _
  6.   Request.QueryString.Item("DropDownList") & "」です。"
  7.  Me.Label4.Text = "チェックボックスリストで選択されたのは「" & _
  8.  Request.QueryString.Item("CheckBoxList") & "」です。"
  9. End Sub

 Default2.aspxへの値の受け渡しに、「GET要求」を利用しています。この方法はURLにキーと値のペアを付加して送信する方法です。Default.aspxで、そのURLを生成しています。

 一方、受け取り側であるDefault2.aspxはHttpRequestオブジェクトのQueryStringプロパティを利用して受け取ります。このプロパティの中にコレクションとして渡されるデータが入っています。キー値で格納されていますので、取得したいデータのキー値をインデックスとして指定します。受け取るデータは全て文字列扱いになります。

○ 実行結果

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

実行結果
実行結果

 ページを遷移すると、URLの後ろにデータが付加されて送られているのがわかります。

前へ   次へ