如何通过单击浏览器的后退按钮获得相同的页面

时间:2009-06-10 05:01:41

标签: c# asp.net ajax updatepanel back-button

我在我的aspx页面中使用带有c#的asp.net我在这个面板中有一个更新面板我有一些指向其他网站的链接,这些链接在同一个窗口中打开。点击这些链接后,当我通过浏览器的后退按钮返回时,我在更新面板上得不到相同的结果......

1 个答案:

答案 0 :(得分:6)

我已经实现了与以下文章相同的内容,如果您需要进一步的帮助,Plz让我知道,我将提供一些代码

http://rchern.wordpress.com/2008/05/11/updatepanel-backforward-browser-navigation/

首先,您必须启用ScriptManager历史记录EnableHistory =“true”
在这个例子中我们维护gridview分页,当用户浏览器返回按钮时 您在首次加载页面后添加了历史记录点。

private void AddHistoryPoint(String key, String value, String tile)
{
    ScriptManager scm = ScriptManager.GetCurrent(this.Page);
    if ((scm.IsInAsyncPostBack == true) && (scm.IsNavigating != true))
    {
        if (pageState == null)
        {
           NameValueCollection pageState = new NameValueCollection();
        }
        if (pageState[key] != null)
        {
            pageState[key] = value;
        }
        else
        {
            pageState.Add(key, value);
        }
        scm.AddHistoryPoint(pageState, tile);
    }
}

protected void grid_PageIndexChanged1(object sender, EventArgs e)
{
    AddHistoryPoint("pi", grdProject.PageIndex.ToString(), "Page Index- " + (grdProject.PageIndex + 1).ToString());
}


这里你必须处理ScriptManager Navigate Event

     protected void ScriptManager1_Navigate(object sender, System.Web.UI.HistoryEventArgs e)
{
    if (e.State != null)
    {
        if (e.State["pi"] != null)
        {
            grid.PageIndex = Convert.ToInt32(e.State["pi"]);
        }
    }
}