【问题标题】:Asp.net Timer resets on page refreshAsp.net 计时器在页面刷新时重置
【发布时间】:2015-12-28 10:42:40
【问题描述】:

我正在使用一个简单的 asp.net 计时器,并将此代码作为后端

protected void Timer1_Tick(object sender, EventArgs e)
{
    int seconds = int.Parse(Label1.Text);
    if (seconds > 0)
        Label1.Text = (seconds - 1).ToString();
    else
        Timer1.Enabled = false;
}

计时器与我前端的 UpdatePanel 中的标签和按钮一起分组。

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Image ID="RedBox" runat="server" ImageUrl="~/images/redbox.png" Visible="false" CssClass="redbox1" ClientIDMode="Static" />
        <asp:Button ID="schlbtn1" runat="server" Text="Go To Lectures" CssClass="btn btn-lg btn-success btn-block" OnClick="schlbtn1_Click" Visible="true" ForeColor="Black" ViewStateMode="Enabled" ClientIDMode="Static" />
        <asp:Label ID="Label1" runat="server" Visible="false" CssClass="timerlbl" Font-Size="XX-Large">60</asp:Label>
        <asp:Timer ID="Timer1" runat="server" Interval="1000" OnTick="Timer1_Tick" Enabled="false">
        </asp:Timer>
    </ContentTemplate>
</asp:UpdatePanel>

我正在寻找一种方法,让计时器不会在每次页面刷新时都重置。即使客户端不在同一页面上,我也需要计时器继续倒计时直到它达到 0。我尝试了睡眠方法,但认为这不是解决方案。请提出任何建议。

【问题讨论】:

    标签: c# asp.net timer


    【解决方案1】:

    将超时存储在会话中:

    添加到页面加载:

    if (Session["timer"] == null)
    {
        InitTimer(120); // or whatever initial value is
    }
    

    添加方法:

    public void InitTimer(int secs)
    {
        Session.Add("timer", secs);
        Timer1.Enabled = true;
    }
    

    更改刻度方法:

    protected void Timer1_Tick(object sender, EventArgs e)
    {
        int seconds = (int)Session("timer");
        if (seconds > 0)
        {
            seconds--;
            Session["timer"] = seconds;
            Label1.Text = seconds.ToString();
        }
        else
            Timer1.Enabled = false;
    }
    

    【讨论】:

    • Haris 不幸的是,这对我不起作用。你能想出更可解释的解决方案吗?
    • 好的。完全改变了!
    • int seconds = (int)Session("timer"); 更改为int seconds = (int)Session["timer"];。它应该可以工作。
    猜你喜欢
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多