在我的一个网站上,我需要在15分钟后实现网页的自动刷新。
为了达到这个目的,我已经编写了以下代码行
<meta http-equiv="refresh" content="60;url=" />
但是我遇到一个问题,即在15分钟的页面持续时间后,页面将刷新为新的页面加载。
在我的页面上,我使用了具有城市列表的组合框,有一种情况,我从索引3的此列表中选择一个项目。之后我只是使页面空闲,15分钟后页面刷新我写的脚本用于自动回发(如上所述)。但问题在于,由于此页面被重新加载为(!PostBack)
内的新页面和代码执行,这将重新填充组合框并在索引1处重置。
请帮我解决这个问题?
我的基本要求是,每当用户到达该页面并使其空闲较长时间时,会话不应该过期,因此我在脚本上面编写,以便会话可以正常进行。
答案 0 :(得分:2)
这是一个很好的javascript技巧,可以让会话保持活跃状态 - 而不是刷新整个页面。
<img id="keepAliveIMG" width="1" height="1" src="/img/ui/spacer.gif?" />
<script language="javascript" type="text/javascript">
var myImg = document.getElementById("keepAliveIMG");
if (myImg){
window.setInterval(function(){
myImg.src = myImg.src.replace(/\?.*$/, '?' + Math.random());
}, 6000);
}
</script>
(根据需要更改计时器的时间 - 现在是6秒)
类似文章:What is the best approach to handle session timeouts in asp.net
答案 1 :(得分:1)
我认为计时器(启用了Viewstate)会执行您正在寻找的内容 - 刷新页面但保留当前数据和选择。只需确保在Page_Load和Tick事件中,您不会重新绑定任何数据。
使用此方法不在您的绑定代码周围,因此它仅在第一次加载页面时绑定
if (!IsPostBack)
{
}
在您的ASPX页面上放置一个计时器
<asp:Timer id="Timer1" Interval="900000" />
900000应该是15分钟(毫秒)。