防止在没有page.redirect的情况下重新发送表单

本文关键字:情况下 新发送 表单 redirect page | 更新日期: 2023-09-27 18:30:57

也许你们中的一些人知道这个问题,如果按 F5 刷新浏览器,表单会重新提交。我正在寻找一种防止这种情况的方法,我找到的只是提交后在同一页面上进行重定向的解决方案

Response.Redirect(Request.RawUrl);

这确实有效,但我的问题是,我需要在回发后将 javascript 注入占位符,因此由于重定向,此信息会丢失。

PlaceHolder p1 = this.NamingContainer.Parent.FindControl("phPostScript") as PlaceHolder;
GenerateJsTag(script,p1);
Response.Redirect(Request.RawUrl);

有没有办法防止在没有重定向的情况下重新提交?

谢谢

防止在没有page.redirect的情况下重新发送表单

有没有办法防止在没有重定向的情况下重新提交?

即使有,您也应该坚持提交后重定向的方法。

关于回发后的JS,我相信即使在重定向后刷新后,您也希望看到那些JS输出。

您可以做的是重定向到Request.RawUrl+"#someValue",然后在 pageLoad 中(不在 IsPostBack 内),您可以再次注入这些脚本,知道您已经通过该哈希键向用户展示了这一点(也可以是 cookie 或查询字符串,并不重要) - 或显示类似("消息已被接受"...)之类的消息或类似的东西。

尝试将以下 JavaScript 代码添加到 aspx 页。

此外,您不应该尝试禁用 F5,因为有很多用户在浏览您的网站时可能需要使用 F5。

//bind keydown event to method that disables F5
$(document).on("keydown", PreventRefresh);
function PreventRefresh(e) {
          var code = e.which || e.keyCode;
          if (code === 116) {
               e.preventDefault();
            }
}