首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP.NET Timer 控制項不觸發?改用前端定時刷新

     編輯:程式設計綜合問答

現象

在 ASP.NET WebForms 中拖入 <asp:Timer> 並設定 Interval、OnTick,但伺服器端事件從未觸發。

根本原因

ASP.NET WebForms 是「請求-回應」模型:頁面生命週期結束後,伺服器端物件即銷毀,無法在背景持續運行計時器。Timer 控制項實際上是透過 JavaScript 定時發起 PostBack,若前端腳本錯誤或 UpdatePanel 設定不當,將不會觸發。

替代方案:前端 Meta Refresh 或 AJAX 輪詢

方案一:HTML Meta 標籤(最簡單)

<meta http-equiv="refresh" content="30"> <!-- 30 秒自動整頁重新載入 -->

方案二:JavaScript setInterval + AJAX 部分更新

<script>
setInterval(function() {
    $.post("Handler.ashx", function(data) {
        $("#targetDiv").html(data);
    });
}, 30000); // 30 秒
</script>

方案三:SignalR 即時推送(現代應用推薦)

伺服器主動推送更新至客戶端,避免輪詢開銷。

若必須使用 Timer 控制項

  • 確保 ScriptManager 存在且 EnablePartialRendering="true"。
  • Timer 放在 UpdatePanel 內,並設定 Triggers。
  • 檢查瀏覽器 Console 是否有 JavaScript 錯誤阻擋 PostBack。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved