在浏览器上单击C#强制页面加载

时间:2009-12-16 15:13:18

标签: c# asp.net caching

我想知道如何检测到从浏览器点击后退按钮。

我有以下情况。在我的网站上,我有一个搜索表单。当您执行两个搜索操作,然后单击后退按钮时,我的下拉框的值未正确存储。

想象一下,您首次搜索关键字,然后按标题搜索。现在,当您单击后退按钮时,您会看到关键字的结果,但在下拉列表中,标题仍然可见。我希望关键字在下拉列表中可见。

在我的会话中,我存储了搜索类型。所以这就是为什么我想知道如何强制在浏览器后面按一个page_load。

当我禁用缓存时,我收到此错误消息(IE 7)“网页已过期”

PS:我已经阅读了这个帖子,但它没有回答我的问题(Forcing page refresh on click of back button

2 个答案:

答案 0 :(得分:1)

也许您正在寻找错误的解决方案(ASP.NET解决方案而不是浏览器解决方案)。我认为控件显示的方式是因为浏览器试图提供帮助:

  • 您访问搜索页面,选择关键字,POST请求
  • 该页面显示关键字结果,您选择标题和POST请求
  • 页面显示标题结果,单击后退按钮
  • 浏览器会显示您离开时所看到的页面,或者重新发布您之前的请求。对于前者,您会在下拉列表中看到“标题”;对于后者,您会在下拉列表中看到“关键字”。

如果这真的困扰你,你可以吐出一些JavaScript来在页面加载时更改所选值。当然,如果您在更改该值时进行自动回发,则可能会引入另一个问题。

答案 1 :(得分:0)

另一个解决方案是在服务器端生成一个唯一的JavaScript变量(例如,GUID),并通过注册的脚本将其写入页面。接下来,在每个页面加载时,您将检查是否存在具有相同变量集的cookie,如果有,您可以放心,您正在查看缓存页面,并且您应该强制重新加载。否则,将变量存储到同一个cookie中以进行下一次加载。