2010-10-09 89 views
1

每次刷新浏览器时,我的按钮的事件处理程序都会再次触发。你如何防止这一点?如何防止页面刷新后发生上次事件?

+0

如果您想重新提交数据,浏览器是否会提示您? – Marko 2010-10-09 00:35:23

+0

我有时见过,但其他时间没有 – Prabhu 2010-10-09 00:37:16

回答

2

一种方法可能是使用HTTPModule。您可以使用Javascript生成客户端GUID,并将其发布回您的服务器。然后,如果用户刷新,则比较该GUID并查看它是否已存在于您的服务器上。如果它存在,那么它是一个刷新,你不应该执行你的按钮事件处理程序的方法。在blog post中描述了此实现的一个示例。

另一个想法可能是在用户按下按钮后重定向页面(或将其重定向到自己)。这将给一个干净的回发和刷新它不应该再次提交事件。

1

我总是尝试使用PRG(Post-Redirect-Get)模式,即使它对Web Forms系统看起来有点不自然。

这基本上意味着得到一个Button_Click事件后,你做一个重定向,也许使用QueryString参数来指示结果页面显示什么。

如果您没有使用UpdatePanel进行部分页面更新,那么无论如何,您都不会“失去”那么多。 (如果您使用的是partials,刷新页面不一定会重新发布!)