1

asp.net vbページにボタンとラベルがあり、ボタンが押されたときに、カウントダウンタイマーが10分から始まり、09:59、09:58、09:57などの秒ごとに更新する必要があります...ポストバックや一時的に別のページにリダイレクトされても、タイマーがカウントダウンを続ける必要があります。

これまでのところ、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
4

2 に答える 2

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
于 2013-08-28T16:11:45.770 に答える