在按钮上显示倒数计时器

时间:2015-09-19 08:54:34

标签: c# asp.net

我找到了一个用于设置倒数计时器的代码,但它只显示分页而不是秒,当页面加载时我也希望当用户点击按钮然后倒计时应该开始,并且时间(例如10:59)应显示在点击按钮。 以下是代码:

aspx代码(ASP.net C#)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Reservation.aspx.cs" Inherits="Reservation" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>

    </head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:ScriptManager ID="ScriptManagerTimer" runat="server"></asp:ScriptManager>
         <asp:Timer ID="timer1" runat="server" Interval="1000" OnTick="timer1_tick"></asp:Timer>
       <asp:UpdatePanel id="updPnl" 
        runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <asp:Button ID="btnTimer" runat="server" BackColor="#05CC00" Height="35px" Text="Reserve" Width="89px" style="border-radius:8px" OnClick="btnTimer_Click"/>
            &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        </ContentTemplate>
        <Triggers>
        <asp:AsyncPostBackTrigger ControlID="timer1" EventName ="tick" />
       </Triggers>
     </asp:UpdatePanel>

    </div>

    </form>

</body>
</html>

aspx.cs代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Reservation : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        if (!ScriptManagerTimer.IsInAsyncPostBack)
            Session["timeout"] = DateTime.Now.AddMinutes(10).ToString();
    }

    protected void timer1_tick(object sender, EventArgs e)
    {
        if (0 > DateTime.Compare(DateTime.Now,
       DateTime.Parse(Session["timeout"].ToString())))
        {
            btnTimer.Text = ((Int32)DateTime.Parse(Session["timeout"].
            ToString()).Subtract(DateTime.Now).Minutes).ToString();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

if (0 > DateTime.Compare(DateTime.Now,
   DateTime.Parse(Session["timeout"].ToString())))
    {

        btnTimer.Text = ((Int32)DateTime.Parse(Session["timeout"].
        ToString()).Subtract(DateTime.Now).Minutes).ToString("HH:mm:ss");
    }

TimeSpan.ToString()提供各种字符串格式。更多信息:MSDN

:)