【发布时间】:2011-09-30 17:16:03
【问题描述】:
如何确定用户是否按 F5 刷新我的页面(类似于 SO 的实现方式。如果刷新页面,问题计数器不会增加)。我测试了许多教程中提到的许多代码 sn-ps,但没有一个能正常工作。
为了更清楚,假设我有一个空的 Web 表单,并且想检测用户是否在客户端按下了 F5(导致刷新未提交)。
我可以使用会话变量,但如果用户导航到我网站的另一个页面,然后返回,我想将其视为新访问,而不是刷新。所以这不是会话范围的变量。
谢谢。
更新:我能找到的唯一解决方法是从基本页面继承我的页面,覆盖如下加载方法:
public class PageBase : System.Web.UI.Page
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.Session["LastViewedPage"] = Request.RawUrl;
}
}
如果我想知道这是否是一次刷新,请在每个页面中:
if (this.Session["LastViewedPage"].ToString() == Request.RawUrl)
{
// This is a refresh!
}
【问题讨论】:
-
你说'我可以使用会话变量'那为什么不只存储上次访问的页面呢?
-
因为我必须将它存储在每个页面中。实际上,使用基本页面可能不是一个坏主意...
标签: asp.net webforms refresh asp.net-4.0