重复: How can I prevent database being written to again when the browser does a reload/back?
如果用户从浏览器请求刷新,是否有一种优雅的方法可以阻止.aspx页面重新提交表单数据?
理想情况下不会丢失视图状态。
编辑:对我来说最优雅的解决方案是将相关控件包装在asp.net ajax UpdatePanel中。大家好。
答案 0 :(得分:4)
生成并在页面中插入唯一标识符,该页面也存储在服务器上。在提交表单时存储,并且不要让该值多次传递。
更新:这是执行此操作的唯一“正确”方法。当我这样说时,我的意思是在服务器端存储一些东西。任何基于客户行为的东西都可能是错误的。这些实现不涉及潜在的浏览器错误,不兼容性,禁用javascript,连接超时等。
服务器端的某些东西需要知道已执行此特定操作并在服务器端停止它。我强调这一点,因为通常需要这样做才能阻止客户刷新并发出多个订单(可能还有多个账单)。如果服务器实际上没有收到并采取行动(例如,在超时的情况下),这也允许客户端正常刷新。
答案 1 :(得分:1)
答案 2 :(得分:1)
没有优雅的方式,但有选择。如其他一个答案中所述,您可以执行HTTP重定向响应。另一种解决方案是通过Ajax等手段或通过iframe提交。