かるあ のメモ

アクセスカウンタ

zoom RSS History コントロールを使ってみる。

<<   作成日時 : 2007/06/11 17:52   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

ASP.NET Futures (May 2007) をインストールすると、ASP.NET Ajax Extension に対応したヒストリーコントロールがインストールされます。
Ajax ではポストが裏側で動作するため、ページの状態が変更しても戻るボタンが有効になりません。ヒストリーコントロールでは非同期ポストバック時にステータスポイントを作成し、戻るボタンを有効にします。

このページを参考に実装してみます。
ASP.NET Futures (May 2007): Managing Browser History and Back Button Support in ASP.NET AJAX

とりあえず ASP.NET Futures AJAX Web Site でプロジェクトを作成します。
画面に下のようにコントロールを配置します。
画像






コントロール名説明
History1History 
UpdatePanel1UpdatePanel 
Label1Label時間を表示する。
Button1ButtonボタンがクリックされたらLabel1に現在時刻を表示する。
Button2Buttonステータスポイントを作成する。
ボタンが押された時にページの情報をヒストリーポイントに保存、
戻るボタンが押された時の処理を History1.Navigate のイベントハンドラに記述します。

Option Strict On
Option Explicit On

Imports System.Collections.Generic

Partial Class _Default
    Inherits System.Web.UI.Page

    ' ヒストリーオブジェクトに保存する値のキー
    Private Const pageStateKey1 As String = "pageStateKey1"

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = System.DateTime.Now.ToString()
    End Sub

    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
        ' 現在のヒストリーポイントを作成し、データを格納する。
        Dim pageData As New Dictionary(Of String, Object)
        pageData.Add(Label1.ID, Label1.Text)
        History1.AddHistoryPoint(pageStateKey1, pageData)
    End Sub

    Protected Sub History1_Navigate(ByVal sender As Object, ByVal args As Microsoft.Web.Preview.UI.Controls.HistoryEventArgs) Handles History1.Navigate
        ' ヒストリーオブジェクトからデータを取得する。
        If args.State.ContainsKey(pageStateKey1) Then
            Dim pageData As Dictionary(Of String, Object) = DirectCast(args.State(pageStateKey1), Dictionary(Of String, Object))
            Label1.Text = DirectCast(pageData.Item(Label1.ID), String)
        Else
            Label1.Text = String.Empty
        End If
    End Sub
End Class
最初は Page.Items をヒストリーポイントに突っ込めばページの情報をすべて保存できる!!
と思ったんですが、シリアライズでき無いと怒られたのと、やっぱり必要なデータだけ保存して復元したほうがいいよなーと思い直してこの形になりました。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
History コントロールを使ってみる。 かるあ のメモ/BIGLOBEウェブリブログ
文字サイズ:       閉じる