2009-09-08 60 views
1

如何在asp.net中每小時顯示一次?如何在asp.net中每隔一小時顯示一次?

僅用於開始小時一次的顯示信息的例子?

我用於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

這是否需要顯示給網站的所有用戶,他們可能會看到這一次或應用程序的用戶需要每小時顯示一次? – 2009-09-08 07:23:57

+0

是非常小時,所有人 – 2009-09-08 07:26:54

回答

0

可以使用

window.setInterval 

方法

它反覆調用的函數,每次調用該函數之間的固定時間延遲。

intervalID = window.setInterval(func, delay[, param1, param2, ...]); 

更多信息這樣做可能是有NextTime一個會話變量,以顯示在頁面上項目的

window.setInterval

0

在客戶端?

我知道這樣做的唯一方法是通過JavaScript計時器。

+0

是在客戶端上,但我可以使用asp.net ajax計時器控件嗎? – 2009-09-08 07:17:10

0

的一種方式。如果它的null可以顯示該項目(或獲得NextTime預定)。在每次頁面刷新時,如果當前時間在下一次之後,則顯示該項並將NextTime會話變量重置爲下一小時。

這隻有在用戶正在瀏覽網站並且頁面正在刷新時纔有效。

+0

保護無效Timer1_Tick(對象發件人,EventArgs e) { MessageBoxShow(Session [「playsound」]); Session [「playsound」] = 1; } 但總是空? – 2009-09-08 07:33:29

+0

不需要計時器。你會做檢查在每個頁面加載播放聲音。 – 2009-09-08 07:37:27

+0

我沒有得到-1?請解釋? – 2009-09-08 09:08:28

0

您可以使用javascript變量window.name來保持頁面刷新之間的值。

您可以在那裏存儲「上次檢查時間」,並將其與當前時間進行比較。

如果用戶導航到另一個站點,並且該站點清除此變量,那麼您的回到原點。

1

聽起來像您的會話可能已超時。如果,之間的AJAX調用,您的會話在服務器上到期,那麼ToString調用可以是空引用操作:

MessageBoxShow(Session["playsound"].ToString());

這似乎與什麼AJAX客戶端腳本試圖告訴你一致。

這也可能是Session["playsound"];未初始化的結果。

ASP.NET的默認會話終止持續時間爲20分鐘,如果您正在執行一小時的長時間計時器,您應該注意這一點。

0

一個簡單的答案是使用一個小的cookie來存儲原始時間,然後每隔一段時間查詢一次(〜5分鐘?)通過這種方式,會話不會耗盡,如果用戶離開頁面,則不是SOL(如果這是您想要的)。免責聲明:我沒有真正將腳趾蘸入AJAX,儘管我整個夏天都在編寫ASP.net,所以如果這不可能,請原諒。

相關問題