在Refresh上运行的asp.net停止按钮事件

时间:2011-03-30 08:42:38

标签: c# asp.net event-handling page-refresh

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

单击F5刷新按钮时,有没有办法阻止此方法触发?

谢谢!

http://pastebin.com/9ycNraaT

4 个答案:

答案 0 :(得分:1)

尝试在添加/更新代码后使用Response.Redirect("Your page ")。这不是好习惯,但它会帮助你。

答案 1 :(得分:1)

如果(!page.IsPostBack)

不是if(page.IsPostBack)

答案 2 :(得分:0)

没办法。如果在刷新后单击按钮(并发布数据),则会发出相同的数据。

答案 3 :(得分:0)

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

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

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

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

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

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