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

C# 如何检测是否按下了刷新按钮(F5),c#,asp.net,C#,Asp.net,我有下面的代码 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //do something } else { // do something else } } protected void Button1_Click(objec

我有下面的代码

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/刷新按钮,我将如何防止代码执行任何操作

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


谢谢

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

它不是ASP.Net术语中的回发-您的页面只是再次被请求(GET)。你无法阻止这一点——这就像转到网站上的其他页面,然后通过一些导航单击“上一步”

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

  • 访问第1页-设置标识第1页进程已运行的会话或cookie
  • 访问第2页-设置识别第2页进程运行的会话或cookie
  • 返回到第1页-检查会话或cookie变量是否存在,若存在,则不要运行第1页进程

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

您无法检测页面是否已刷新。顺便问一句,为什么需要这样做?你想解决的第一个问题是什么?@zerkms是的,你可以,但它需要很多代码。@Aristos:有详细信息吗?请记住,再次关闭和打开并不会让人耳目一新。那么?@zerkms我制作了一个基于idea的版本:如果用户已经按下提交按钮一次(导致回发),然后再执行F5,服务器会认为这是另一次回发。我想这就是OP想要解决的问题。请参考@MrLister-同样的故事,它可以是GET或POST-我在ASP.Net中更具体地描述了postback一词(OP的帖子中对此不清楚)。参见Sunil Chavan的链接以获取灵感。