HttpContextオブジェクトによるページ遷移

 HttpContextクラスを利用するとデータをオブジェクトに包み込んでデータを送信します。PageオブジェクトのContextプロパティでHttpContextオブジェクトを取得できます。

■ 主なプロパティ

■ Requestプロパティ

 現在のHTTP要求に対するHttpRequestオブジェクトを取得します。

■ Responseプロパティ

 現在のHTTP要求に対するHttpResponseオブジェクトを取得します。

■ Serverプロパティ

 Web要求の処理で使用されるメソッドを提供するHttpServerUtilityオブジェクトを取得します。

 このコンテキストクラスには様々なオブジェクトが入っています。その中のHttpServerUtillityオブジェクト(Serverプロパティ)が持つTransferメソッドで遷移することができます。

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

サンプルダウンロード

○ 作成の準備

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

○ デザイン(Default.aspx)

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

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

○ デザイン(Default2.aspx)

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

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

○ プログラム

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.  'TextBoxコントロールのTextプロパティの値をコレクションに追加
  20.  Context.Items.Add("TextBox", TextBox1.Text)
  21.  'DropDownListコントロールでは、選択された項目の名前をコレクションに追加
  22.  Context.Items.Add("DropDownList", DropDownList1.SelectedItem.Text)
  23.  'CheckBoxListコントロールでは、項目のコレクションをそのまま送信
  24.  Context.Items.Add("CheckBoxList", CheckBoxList1.Items)
  25.  'TransferメソッドによってDefault2.aspxへ遷移
  26.  Context.Server.Transfer("Default2.aspx")
  27. End Sub

Default2.aspx.vb

  1. Protected Sub Page_Load (ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.  Dim i As ListItem
  3.  'テキストボックスに入力された文字列や選択された項目の取得
  4.  Label1.Text = "テキストボックスに入力された文字列は「" & Context.Items("TextBox") & "」です。"
  5.  Label2.Text = "ドロップダウンリストで選択されたのは「" & Context.Items("DropDownList") & "」です。"
  6.  With Label3
  7.   .Text = "チェックボックスリストで選択されたのは「"
  8.   '受信した項目をカンマで区切って取り出す
  9.   For Each i In Context.Items("CheckBoxList")
  10.    If i.Selected Then
  11.     .Text &= i.Text & ","
  12.    End If
  13.   Next
  14.   '余分に付けすぎたカンマを削除
  15.   If .Text.EndsWith(",") Then
  16.    .Text = .Text.Remove(.Text.LastIndexOf(","), 1)
  17.   End If
  18.   .Text &= "」です。"
  19.  End With
  20. End Sub

 Default2.aspxへの値の受け渡しに、オブジェクトに項目を追加しています。この方法はURLにデータを埋め込んで送信するGET送信と異なり、渡されているデータを直接見ることはできないものになります。(POST送信)

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

○ 実行結果

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

実行結果
実行結果

 入力したり選択したりした情報が次のページに表示されます。しかし、URLにデータは付加されていません。HTMLヘッダーにデータが付加されて送られます。

前へ   次へ