1

我的 C# 中有一个具有单击事件的按钮。这很好用。然而,在按下 F5 刷新页面后,我注意到按钮事件被触发。每次我单击 F5 时都会发生这种情况。我添加了 if(page.IsPostBack) 并且该方法仍在运行。

单击 F5 Refresh 按钮时,有什么方法可以阻止此方法触发?

谢谢!

http://pastebin.com/9ycNraaT

4

4 回答 4

1

尝试Response.Redirect("Your page ") 在您的添加/更新代码之后使用。这不是一个好的做法,但它会帮助你。

于 2011-03-30T08:58:26.100 回答
1

if(!page.IsPostBack)

不是如果(page.IsPostBack)

于 2011-03-30T09:16:43.857 回答
0

没门。如果在刷新后单击按钮(并发布数据),将发送相同的数据。

于 2011-03-30T08:47:48.050 回答
0

如果您有一个需要运行一次的页面,您应该在代码中实现防止同一方法运行多次的逻辑。在伪代码中:

if (canExecuteMethod()) {
    executeMethod();
} else {
    displayMessageThatMethodCannotBeExecuted();
}

例如,您可以使用 来检查 Session 变量canExecuteMethod(),当它不存在并且设置在 中时,它会返回 false executeMethod()

function canExecuteMethod() {
     return Session["methodIsExecuting"] == null 
         || Session["methodIsExecuting"] == false;
}

function executeMethod() {
    Session["methodIsExecuting"] = true;
    // ...
}

当然,使用 Session 变量有其限制,因此您可能需要考虑使用数据库或 AppSettings 变量。

于 2011-03-30T09:15:51.813 回答