如果用户按 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 问题,因为它做了它应该做的事情