如何在asp.net中每小时显示一次?
仅在一小时的开始时间显示messese的示例?
我用于asp.net ajax定时器控件?
protected void Timer1_Tick(object sender, EventArgs e)
{
MessageBoxShow(Session["playsound"].ToString());
Session["playsound"] = 1;
}
但总是空?
---------------------------
Message from webpage
---------------------------
Object reference not set to an instance of an object.
---------------------------
OK
---------------------------
答案 0 :(得分:1)
听起来你的会话可能已经超时了。如果在AJAX调用之间,您的会话在服务器上到期,则ToString
调用可能在空引用上运行:
MessageBoxShow(Session["playsound"].ToString());
这似乎与AJAX客户端脚本试图告诉您的内容一致。
这也可能是Session["playsound"];
未初始化的结果。
ASP.NET的默认会话到期持续时间为20分钟,如果您正在执行一小时计时器,请注意这一点。
答案 1 :(得分:0)
在客户端?
我知道这样做的唯一方法是通过javascript计时器。
答案 2 :(得分:0)
您可以使用
window.setInterval
方法
它重复调用一个函数,每次调用该函数之间都有固定的时间延迟。
intervalID = window.setInterval(func, delay[, param1, param2, ...]);
阅读更多信息
答案 3 :(得分:0)
这样做的一种方法是使用NextTime的会话变量来显示页面上的项目。如果它的null可以立即显示该项(或者安排NextTime)。在每次刷新页面时,如果当前时间在下一个时间之后,则显示该项目并将NextTime会话变量重置为下一个小时。
这仅在用户浏览网站并刷新页面时才有效。
答案 4 :(得分:0)
您可以使用javascript变量window.name,它在页面刷新之间保持其值。
您可以在其中存储“上次检查时间”并将其与当前时间进行比较。
如果用户导航到另一个站点并且该站点清除了此变量,则返回到原点。
答案 5 :(得分:0)
一个简单的答案是使用一个小cookie来存储原始时间,然后每隔一段时间查询一次(约5分钟?),这样会话就不会耗尽,如果用户离开,你就不是SOL页面(如果这是你想要的)。
免责声明:尽管我整个夏天都在编写ASP.net,但我还没有真正把我的脚趾浸入AJAX,所以请原谅我,如果这是不可能的。