asp.net - 如何避免页面刷新时的按钮事件

标签 asp.net events refresh

我有 .aspx 页面,该页面通过单击按钮将数据插入到数据库中。但是当我按下按钮时,它是正确的。我收到了“成功插入数据”的成功消息。在这种情况下,如果我按“F5”或刷新页面,它将触发按钮单击事件。为什么会这样?如何避免这种情况?

最佳答案

当用户单击 F5(或使用工具栏按钮刷新页面)时,它将导致一个与前一个相同的新请求被发送到服务器。 Button.Click事件将再次引发,但您有几种方法可以保护自己免受两次插入数据的影响。

恕我直言,最好的方法是使用 Post/Redirect/Get pattern .在您的代码中,在保存数据的位置之后,执行 302 重定向到确认页面:

protected void btnSaveStuff_Click(object sender, EventArgs e)
{
    SaveStuffToDatabase();
    Response.Redirect("confirmation.aspx");
}

使用模式时,POST到原始页面不会在浏览器历史记录中结束,刷新结果页面将导致最终GET重复,这应该是安全的。

关于asp.net - 如何避免页面刷新时的按钮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2167490/

相关文章:

c# - 为什么在 MVC 4 中通过 CSS 在文本框的一 Angular 不显示图像?

javascript - 关闭 "blur"上的表单 -- 有更好的方法吗?

ios - 如何在 Swift iOS 中通过 QR 扫描仪扫描时在日历中添加事件

php - 在页面上显示mysql数据而不刷新页面-下拉列表

asp.net-mvc - ASP.NET MVC 与 Azure B2C 刷新 ID token 问题

c# - 如何在 ASP.NET MVC 中更改菜单标题(垂直到水平)

asp.net - Visual Studio 2013。您没有足够的权限访问计算机上的 IIS 网站

asp.net - ssl 在第一次登录时让我的 session 为空

javascript - 我无法通过 javascript 中的 $().click(calculator.press ("") 访问我的计算器对象

ios - 删除 TableView 单元格并刷新 View Controller 后刷新 TableView