0

我有以下代码

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

我已经检查过按下检测 F5 并刷新,但我的解决方案会有所不同,因为我需要在 C# 代码中执行此操作。

谢谢

4

1 回答 1

0

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

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

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

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

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

于 2012-04-13T06:02:22.690 回答