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

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

【问题讨论】:

标签: c# asp.net webforms


【解决方案1】:

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

  1. Response.Redirect(Request.Path);

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

  1. Response.Redirect(Request.RawUrl);

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

  1. 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");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-23
        • 2011-07-21
        • 2013-08-17
        • 2020-05-01
        相关资源
        最近更新 更多