【问题标题】:Auto refresh ASP.NET web page after defined interval?在定义的时间间隔后自动刷新 ASP.NET 网页?
【发布时间】:2010-08-20 07:21:38
【问题描述】:

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

为此,我编写了以下代码行

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

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

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

请帮我解决这个问题?

我的基本要求是,每当用户到达该页面并使其空闲更长时间时,会话不应过期,因此我正在编写上面的脚本,以便会话处于活动状态。

【问题讨论】:

  • 真的需要刷新整个页面吗?你不能把任何需要刷新的东西都包装在 AJAX UpdatePanel 中吗?
  • 我的要求是,每当用户到达该页面并使其空闲时,会话不应从该页面过期。因此我编写了自动刷新脚本。还有其他方法可以使会话生效吗?

标签: asp.net


【解决方案1】:

这是一个很好的 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

【讨论】:

  • 谢谢,你能解释一下我应该在 或 的什么地方写这段代码。这是如何工作的?
  • @Hemant 您将它放在页面底部,就在正文关闭之前。我在这里所做的是每 6 秒重新加载一个 1x1 像素的小空图像,因此服务器不会关闭会话。为了避免缓存,我在图像的末尾放置了一个随机数。脚本必须在 img 之后!另一种方法是在页面加载后进行 onload 并调用脚本。
  • 我只写了同样的 javascript 代码,但不写图像标签。没有图像它仍然可以正常工作。怎么样?
  • @Hemant 写下你看到的代码(特别是如果你不明白它在做什么) 其他一切——我不知道,需要查看整页才能理解。如果找不到 id=keepAliveImg 的 Image 标签,该函数不会运行。
  • @Hemant - 只需复制/粘贴到页面末尾即可。就是这样。
【解决方案2】:

我认为计时器(打开 Viewstate)可以满足您的需求——刷新页面但保留当前数据和选择。只需确保在 Page_Load 和 Tick 事件中,您没有重新绑定任何数据。

使用它来绕过你的绑定代码,这样它只会在页面第一次加载时绑定

if (!IsPostBack)
{
}

在您的 ASPX 页面上放置一个计时器

<asp:Timer id="Timer1" Interval="900000" />

900000 应该是 15 分钟,以毫秒为单位。

【讨论】:

  • 我刚刚注意到您关于为什么要进行刷新的评论。您可能还希望将 Timer 包围在 UpdatePanel 中,以便用户看不到刷新。您也可以考虑只更改 Session.Timeout 间隔。
猜你喜欢
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 2018-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
相关资源
最近更新 更多