如何检测是否按下了刷新按钮(F5)

时间:2012-04-13 05:20:00

标签: c# asp.net

我有以下代码

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
           //do something 
        }
        else
        {
            // do something else
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        //do something       
    }
}

关键是如果我按下F5 /刷新按钮或点击按钮就会发生回发。如果单击F5 /刷新按钮,我将如何阻止代码执行任何操作?

我已经检查了Detect F5 being pressed and Refresh但我的解决方案会有所不同,因为我需要在C#代码中执行此操作。

由于

1 个答案:

答案 0 :(得分:0)

您正在尝试在客户端捕获某些内容 - 因此必须是客户端脚本(如链接中所述)。

这不是ASP.Net术语中的回发 - 您的页面只是再次被请求(GET)。你无法阻止这一点 - 就像去你网站上的其他页面并点击一些导航一样。

如果您要阻止运行某些类型的服务器端代码(超过x次),那么您可以考虑会话或cookie,并在运行任何进程之前将其读取。一个简单的样本:

  • 访问第1页 - 设置标识第1页进程的会话或cookie
  • 访问第2页 - 设置标识第2页进程的会话或cookie
  • 返回第1页 - 检查是否存在会话或cookie变量,如果存在,请不要运行第1页进程。

另一种选择,如果可行则使用ASP.Net缓存。