我有2个asp.net页面..页面A和页面B. 单击页面A上的链接,用户将被重定向到页面B.当在页面B上,如果用户单击浏览器的后退按钮,我需要强制调用页面A的页面刷新。 我如何实现此功能? 注意:代码需要兼容不同的浏览器...即IE,firefox,opera等
答案 0 :(得分:1)
有一些按钮属性,如Autopostback,你可以尝试一下,看看是否有帮助!
答案 1 :(得分:1)
我认为Javascript无法判断它是第一次访问还是来自后退按钮。因此,我将需要更新的页面部分放在UpdatePanel中,然后执行JavaScript以在每次页面加载时始终刷新这些部分。不是很优雅,但它解决了我的问题。
function addLoad(fn) {
if (window.addEventListener) {
window.addEventListener("load", fn, false);
return true;
} else if (window.attachEvent) {
var r = window.attachEvent("onload", fn);
return r;
} else {
return false;
}
}
function refreshBack()
{
__doPostBack("<%= updatePanel1.ClientID %>", "");
__doPostBack("<%= updatePanel2.ClientID %>", "");
}
addLoad(refreshBack);
答案 2 :(得分:0)
您可以在页面B上设置会话变量,并检查页面A上是否存在该会话变量,并相应地处理它。
答案 3 :(得分:0)
我想说最好的办法就是告诉浏览器不要缓存页面。
<% Page.Response.Expires = 0; %>
如果这不能满足您的需求,您需要使用javascript来强制刷新。
Psuedo代码:
if (cookie does not exist)
set cookie with 10 second expiration
else if cookie exists {
is cookie expired? {
set new cookie
refresh page
}
}
答案 4 :(得分:0)
function SetCookie (name, value) {
var argv=SetCookie.arguments;
var argc=SetCookie.arguments.length;
var expires=(argc > 2) ? argv[2] : null;
var path=(argc > 3) ? argv[3] : null;
var domain=(argc > 4) ? argv[4] : null;
var secure=(argc > 5) ? argv[5] : false;
document.cookie=name+"="+escape(value)+
((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
((path==null) ? "" : ("; path="+path))+
((domain==null) ? "" : ("; domain="+domain))+
((secure==true) ? "; secure" : "");
}
function getCookie(c_name)
{
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1)
{
c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1)
{
c_value = null;
}
else
{
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1)
{
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start,c_end));
}
return c_value;
}
if (getCookie('first_load'))
{
if (getCookie('first_load')==true)
{
window.location.reload(true); // force refresh page-liste
SetCookie("first_load",false);
}
}
SetCookie("first_load",true);
答案 5 :(得分:0)
您可以尝试通过这种方式
protected override void OnInit(EventArgs e)
{
//Refresh page on back button
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.MinValue);
base.OnInit(e);
}