如何使用asp.net创建2分钟倒数计时器

问题描述

我想使用Asp.net在文本框下创建一个2分钟的计时器,我希望计时器在文本框下的标签中,因此双击计时器图标后,我在控制页中编写了以下代码

 int seconds = int.Parse(Label1.Text);
        if (seconds > 0)


            Label1.Text = (seconds - 1).ToString("mm:ss");

        else
            Timer1.Enabled = false;
@H_502_4@

代码在aspx文件

<span "CodeAsk">ألم تتلقى الرمز ؟</span><asp:Label ID="Label1" runat="server" text="2"></asp:Label>
        <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="120000"></asp:Timer>
@H_502_4@

但是它不起作用,我的代码有什么问题?

解决方法

但是它不起作用,我的代码有什么问题?

计时器需要与 UpdatePanel 控件结合使用。您可以通过updatepanel的 AsyncPostBackTrigger 方法触发计时器的ontick事件。

对于将Label的文本转换成计时器形式,您需要使用TimeSpan time = TimeSpan.FromSeconds(seconds);来实现,可以参考this

 <form runat="server">
        <asp:ScriptManager runat="server" ID="ScriptManager1" />
        <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="1000">
        </asp:Timer>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <span id="CodeAsk">ألم تتلقى الرمز ؟</span><br />
                <asp:Label ID="Label1" runat="server" Text="2"></asp:Label>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
            </Triggers>
        </asp:UpdatePanel>
    </form>

后面的代码:

protected void Page_Load(object sender,EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                TimeSpan time = TimeSpan.FromSeconds(Convert.ToInt32(Label1.Text) * 60);
                string str = time.ToString(@"hh\:mm\:ss");
                Label1.Text = str;
            }
        }

        protected void Timer1_Tick(object sender,EventArgs e)
        {
            TimeSpan result = TimeSpan.FromSeconds(TimeSpan.Parse(Label1.Text).TotalSeconds - 1);
            string fromTimeString = result.ToString(@"hh\:mm\:ss");
            Label1.Text = fromTimeString;
        }

这是测试结果:

enter image description here