页面刷新后如何防止上次事件的触发?

时间:2010-10-09 00:23:29

标签: c# .net asp.net vb.net

每次刷新浏览器时,我的按钮的事件处理程序再次触发。你怎么防止这种情况?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

这基本上意味着在获取Button_Click事件之后,您执行重定向,可能使用QueryString参数来指示生成的页面要显示的内容。

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