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
- Protected Sub Page_Load (ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- If Not IsPostBack Then
- TextBox1.Text = ""
- With DropDownList1.Items
- .Clear()
- .Add("車")
- .Add("バス")
- .Add("トラック")
- End With
- With CheckBoxList1.Items
- .Clear()
- .Add("メロン")
- .Add("スイカ")
- End With
- Button1.Text = "ポストバック"
- End If
- End Sub
- Protected Sub Button1_Click (ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
- 'TextBoxコントロールのTextプロパティの値をコレクションに追加
- Context.Items.Add("TextBox", TextBox1.Text)
- 'DropDownListコントロールでは、選択された項目の名前をコレクションに追加
- Context.Items.Add("DropDownList", DropDownList1.SelectedItem.Text)
- 'CheckBoxListコントロールでは、項目のコレクションをそのまま送信
- Context.Items.Add("CheckBoxList", CheckBoxList1.Items)
- 'TransferメソッドによってDefault2.aspxへ遷移
- Context.Server.Transfer("Default2.aspx")
- End Sub
Default2.aspx.vb
- Protected Sub Page_Load (ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- Dim i As ListItem
- 'テキストボックスに入力された文字列や選択された項目の取得
- Label1.Text = "テキストボックスに入力された文字列は「" & Context.Items("TextBox") & "」です。"
- Label2.Text = "ドロップダウンリストで選択されたのは「" & Context.Items("DropDownList") & "」です。"
- With Label3
- .Text = "チェックボックスリストで選択されたのは「"
- '受信した項目をカンマで区切って取り出す
- For Each i In Context.Items("CheckBoxList")
- If i.Selected Then
- .Text &= i.Text & ","
- End If
- Next
- '余分に付けすぎたカンマを削除
- If .Text.EndsWith(",") Then
- .Text = .Text.Remove(.Text.LastIndexOf(","), 1)
- End If
- .Text &= "」です。"
- End With
- End Sub
Default2.aspxへの値の受け渡しに、オブジェクトに項目を追加しています。この方法はURLにデータを埋め込んで送信するGET送信と異なり、渡されているデータを直接見ることはできないものになります。(POST送信)
一方、受け取り側であるDefault2.aspxはContextプロパティのItemプロパティを利用して受け取ります。このプロパティの中にコレクションとして渡されるデータが入っています。キー値で格納されていますので、取得したいデータのキー値をインデックスとして指定します。受け取るデータはオブジェクト扱いになります。
○ 実行結果
index.aspxを実行してください。
実行結果
入力したり選択したりした情報が次のページに表示されます。しかし、URLにデータは付加されていません。HTMLヘッダーにデータが付加されて送られます。
前へ 次へ