【问题标题】:How to detect if Refresh button(F5) is pressed如何检测是否按下了刷新按钮(F5)
【发布时间】:2012-04-25 12:14:15
【问题描述】:

我有以下代码

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# 代码中执行此操作。

谢谢

【问题讨论】:

  • 无法检测页面是否刷新
  • 顺便说一句,你为什么需要那个?您最初尝试解决的问题是什么?
  • @zerkms 是的,你可以,但它需要很多代码。
  • @Aristos:有什么细节吗?请记住,再次关闭和打开不会令人耳目一新。那么?
  • @zerkms 我制作了一个基于想法的版本:codeproject.com/Articles/68371/…

标签: c# asp.net


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 好吧,如果用户已经按了一次提交按钮(导致回发),然后按 F5,服务器会认为这是另一个回发。我认为这就是 OP 想要解决的问题。
  • @MrLister - 同样的故事,它可以是 GET 或 POST - 我更具体地说明了 ASP.Net 中的术语 postback(这在OP的帖子)。请参阅 Sunil Chavan 的链接以获取灵感。
猜你喜欢
  • 2010-10-28
  • 2015-10-30
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
相关资源
最近更新 更多