我在asp.net vb頁面上有一個按鈕和一個標籤,當按下按鈕時,我需要一個倒計時器,以10分鐘開始並每秒更新一次,09:59,09:58,09:57等....我需要計時器繼續倒計時,儘管任何回發或臨時重定向到一個不同的頁面。通過回發持久化的asp.net(VB)倒數計時器
到目前爲止,我已經嘗試使用Asp.Net定時器(與異步觸發器/更新面板),但秒倒計時這需要做1秒回發,並將成爲相當資源昂貴,當有數百用戶訪問系統。它目前將確切的倒計時時間寫入會話變量,然後在頁面重新加載時檢索 - 這是一種非常醜陋的方法,但它們只能讓它工作。
更新 - 我已經找到了解決我的問題:
使用這個偉大的Javascript倒計時腳本http://scripts.hashemian.com/js/countdown.js
ASPX頁面:
<asp:Literal runat="server" ID="jsTimeMarker"/>
<script type="text/javascript" src="http://scripts.hashemian.com/js/countdown.jss"></script>
<asp:Button runat="server" Text="10 Mins" ID="btn10Mins"/>
代碼頁背後:
Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
' Set Countdown Timer based on if Cookie is set
If Not Request.Cookies("CountDownTimer") Is Nothing Then
TimeMarkerRender(Request.Cookies("CountDownTimer")("Data"))
End If
End If
End Sub
Sub TimeMarkerRender(TargetDateTime As String)
Dim sb As StringBuilder = New StringBuilder()
sb.Append("<script type=""text/javascript"">")
'sb.Append("TargetDate = ""08/28/2013 18:11:29"";")
sb.Append("TargetDate = " & "'" & TargetDateTime & "'" & ";")
sb.Append("CountActive = true;")
sb.Append("CountStepper = -1;")
sb.Append("LeadingZero = true;")
sb.Append("DisplayFormat = ""%%M%%:%%S%%"";")
sb.Append("FinishMessage = ""Finished"";")
sb.Append("</script> ")
jsTimeMarker.Text = sb.ToString()
End Sub
Protected Sub btn10Mins_Click(sender As Object, e As EventArgs) Handles btn10Mins.Click
Response.Cookies("CountDownTimer")("Data") = Now.AddMinutes(10).ToString("MM/dd/yyyy HH:mm:ss")
Response.Redirect(Request.RawUrl)
End Sub
你能證明你的代碼。你試過了什麼? –
您正在製作的方法聽起來與我將要做的相似,儘管可能不使用'Session'而是使用'ViewState'。 你可能會逃脫使用JavaScript來倒計時,但如果這是一個在線考試,你可能不想使用JavaScript,因爲用戶可以禁用此功能。 –
@Secret Squirrel - 它不適用於在線考試 - 用戶在接聽電話時按下按鈕。他們需要知道什麼時候10分鐘到了,所以他們可以終止通話。以前我從來沒有對ViewState做過任何事情 - 你有沒有例子? – James