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
- 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
- Dim s As String
- Dim i As ListItem
- 'Redirectメソッドの引数に指定するURLを作成
- s = "Default2.aspx?TextBox=" & TextBox1.Text & "&DropDownList=" & _
- DropDownList1.SelectedItem.Text & "&CheckBoxList="
- 'CheckBoxListコントロールはチェックされた項目を調べてからデータ送信を指定
- For Each i In CheckBoxList1.Items
- If i.Selected Then
- s &= i.Text & ","
- End If
- Next
- '余分に付けすぎたカンマを削除
- If s.EndsWith(",") Then
- s = s.Remove(s.LastIndexOf(","), 1)
- End If
- 'RedirectメソッドでDefault2.aspxへ遷移
- Response.Redirect(s)
- End Sub
○ プログラム(Default2.aspx.vb)
次のように各イベントハンドラにプログラムを記述してください。
Default2.aspx.vb
- Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- Me.Label1.Text = Me.ClientQueryString
- Me.Label2.Text = "テキストボックスに入力された内容は「" & _
- Request.QueryString.Item("TextBox") & "」です。"
- Me.Label3.Text = "ドロップダウンリストで選択されたのは「" & _
- Request.QueryString.Item("DropDownList") & "」です。"
- Me.Label4.Text = "チェックボックスリストで選択されたのは「" & _
- Request.QueryString.Item("CheckBoxList") & "」です。"
- End Sub
Default2.aspxへの値の受け渡しに、「GET要求」を利用しています。この方法はURLにキーと値のペアを付加して送信する方法です。Default.aspxで、そのURLを生成しています。
一方、受け取り側であるDefault2.aspxはHttpRequestオブジェクトのQueryStringプロパティを利用して受け取ります。このプロパティの中にコレクションとして渡されるデータが入っています。キー値で格納されていますので、取得したいデータのキー値をインデックスとして指定します。受け取るデータは全て文字列扱いになります。
○ 実行結果
index.aspxを実行してください。
実行結果
ページを遷移すると、URLの後ろにデータが付加されて送られているのがわかります。
前へ 次へ