如果用户按 F5 或在 asp.net 中刷新,如何防止数据发送?

Posted

技术标签:

【中文标题】如果用户按 F5 或在 asp.net 中刷新,如何防止数据发送?【英文标题】:how to prevent data from sending if user press F5 or refresh in asp.net? 【发布时间】:2012-09-03 10:10:59 【问题描述】:

我有 asp.net 表单应用程序当用户单击 F5 或刷新时出现错误,它将输入上次数据输入的数据。如果用户单击 F5 或刷新,他们是否会阻止发送数据?

【问题讨论】:

@aelnajjar 至少看看这里! ***.com/questions/3759572/avoid-form-re-submit 和 ***.com/questions/2526568/… 这个问题已经被问过很多次了! 【参考方案1】:

在 ASP.NET 中,通过重定向到自身很容易将页面重置为其初始状态。这里有 3 种方法可以做到:

    Response.Redirect(Request.Path);

其中请求的路径以如下形式呈现:/MyApp/MyFile.aspx

    Response.Redirect(Request.RawUrl);

其中不仅暴露了路径,还暴露了任何查询字符串参数,例如: /MyApp/MyFile.aspx?foo=bar

    Response.Redirect(Request.Url.ToString());

其中不仅暴露了 path 和 querystring 参数,而且还提供了以下形式的绝对引用: MyServer/MyApp/MyFile.aspx?foo=bar

【讨论】:

【参考方案2】:

对此的常见解决方案称为Post Redirect Get (PRG),其中浏览器在任何帖子后立即重定向到 HTTP Get 页面。请参阅 Post Redirect Get in asp.net 了解 Web 表单实现。

【讨论】:

【参考方案3】:

有多种方法可以防止这种情况发生。最简单的就是Response.Redirect到另一个页面,可以刷新,不会有任何后果。

// process form post
Response.Redirect("anotherpage.aspx");

【讨论】:

以上是关于如果用户按 F5 或在 asp.net 中刷新,如何防止数据发送?的主要内容,如果未能解决你的问题,请参考以下文章

回发后 F5 的 asp.net 问题,因为它做了它应该做的事情

Asp.net MVC 5 视图在使用 F5 重新加载页面之前不呈现

vue禁止浏览器F5进行刷新和监听浏览器刷新事件

检测页面刷新 jQuery 或 C# ASP.Net

F5 后 JQuery 加载

使用一个HttpModule拦截Http请求,来检测页面刷新(F5或正常的请求)