不使用page.redirect阻止重新发送表单

时间:2016-01-18 08:39:47

标签: c# asp.net .net webforms

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

Response.Redirect(Request.RawUrl);

这可行,但我的问题是,我需要在回发后将javascript注入占位符,因此重定向导致此信息丢失。

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

有没有办法阻止重新提交没有重定向?

由于

2 个答案:

答案 0 :(得分:2)

  

有没有办法阻止重新提交没有重定向?

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

关于回帖后的JS,我相信你想在重定向后刷新后看看那些JS输出。

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

答案 1 :(得分:2)

尝试将以下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();
            }
}