防止在浏览器刷新时重新提交webform,而不会丢失viewstate

重复: 当浏览器重新加载/返回时,如何防止数据库再次被写入?


如果用户请求从浏览器刷新,是否有一种优雅的方法可以阻止.aspx页面重新提交表单数据?

理想情况下不会丢失视图状态。

编辑:对我来说最优雅的解决方案是将相关控件包装在asp.net ajax UpdatePanel中。 大家好

没有优雅的方式,但有选择。 如其他一个答案中所述,您可以执行HTTP重定向响应。 另一种解决方案是通过Ajax或iframe等方式提交。

生成并在页面中插入唯一标识符,该页面也存储在服务器上。 存储表单提交时,不要让该值多次传递。

更新 :这是唯一“正确”的方法。 当我这样说时,我的意思是在服务器端存储一些东西。 任何基于客户行为的东西都可能是错误的。 这些实现不涉及潜在的浏览器错误,不兼容性,禁用javascript,连接超时等。

服务器端的某些东西需要知道已执行此特定操作并在服务器端停止它。 我强调这一点,因为通常需要这样做才能阻止客户刷新并发出多个订单(可能还有多个账单)。 如果服务器实际上没有接收并采取行动(例如,在超时的情况下),这也允许客户端正常刷新。

邮寄后重定向