Response.Redirect()禁用后退按钮

时间:2012-05-01 12:00:53

标签: c# asp.net redirect iis-7 post-redirect-get

据我了解,Response.Redirect("http://stackoverflow.com");告诉浏览器向另一个网址发起请求。

其中一个结果是浏览器“记住”重定向,并允许按“返回”。

但是,我有一个网站,其中Response.Redirect禁用了按下浏览器的“后退”按钮的功能,就像浏览器打开了一个新窗口一样。 (与Server.Transfer不同,不会忘记浏览历史记录。)

重定向过去曾经正常工作,所以我怀疑这个问题与IIS服务器(IIS7)有关。

如果将此问题移至ServerFault.com,我会提前道歉。

更新

  1. 以下是一些代码:

    protected void btnClickMe_Click(object sender, EventArgs e)
    {
        // ...
        // some server-side logic
        // ...
    
        Response.Redirect("NewPage.aspx?ProductID=" + idNum);
    }
    
  2. 关于“禁用按下浏览器的”后退“按钮的功能”,我的意思是按钮无法按下。与打开新窗口时相同。按钮是灰色的,单击它完全没有效果。

  3. 更新2

    已经使用IE6和IE8进行了测试。

2 个答案:

答案 0 :(得分:0)

问题不在于Response.Redirect();

当我在OldPage.aspx上时,我在地址栏中输入了一个新URL。浏览器加载新网站后,它会禁用后退按钮。

结论:OldPage.aspx有问题,而不是重定向到NewPage.aspx。

我仍然不知道为什么会这样,但这是一个完全不同的问题。

答案 1 :(得分:0)

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) //check if the webpage is loaded for the first time.
        {
            ViewState["PreviousPage"] = 
        Request.UrlReferrer;//Saves the Previous page url in ViewState
        }
    }
    protected void btnBack_Click(object sender, EventArgs e)
    {
        if (ViewState["PreviousPage"] != null)  //Check if the ViewState 
                        //contains Previous page URL
        {
            Response.Redirect(ViewState["PreviousPage"].ToString());//Redirect to 
        //Previous page by retrieving the PreviousPage Url from ViewState.
        }
    }