也许有些人知道问题,如果按F5按刷新浏览器,表单会重新提交。 我正在寻找一种方法来防止这种情况,我发现的是在提交后在同一页面上进行重定向的解决方案
Response.Redirect(Request.RawUrl);
这可行,但我的问题是,我需要在回发后将javascript注入占位符,因此重定向导致此信息丢失。
PlaceHolder p1 = this.NamingContainer.Parent.FindControl("phPostScript") as PlaceHolder;
GenerateJsTag(script,p1);
Response.Redirect(Request.RawUrl);
有没有办法阻止重新提交没有重定向?
由于
答案 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();
}
}