定义间隔后自动刷新ASP.NET网页?

时间:2010-08-20 07:21:38

标签: asp.net

在我的一个网站上,我需要在15分钟后实现网页的自动刷新。

为了达到这个目的,我已经编写了以下代码行

<meta http-equiv="refresh" content="60;url=" />

但是我遇到一个问题,即在15分钟的页面持续时间后,页面将刷新为新的页面加载。

在我的页面上,我使用了具有城市列表的组合框,有一种情况,我从索引3的此列表中选择一个项目。之后我只是使页面空闲,15分钟后页面刷新我写的脚本用于自动回发(如上所述)。但问题在于,由于此页面被重新加载为(!PostBack)内的新页面和代码执行,这将重新填充组合框并在索引1处重置。

请帮我解决这个问题?

我的基本要求是,每当用户到达该页面并使其空闲较长时间时,会话不应该过期,因此我在脚本上面编写,以便会话可以正常进行。

2 个答案:

答案 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分钟(毫秒)。