我必须在我的aspx页面上实现一个时钟和15分钟的倒计时自动收报机。请不要建议我的客户端脚本不符合我的要求,我通过使用asp ticker和更新面板知道我在服务器上生成的负载......我知道这些缺陷,但它是我的客户要求。
ASPX / HTML:
<asp:ScriptManager runat="server" ID="scr"/>
<asp:UpdatePanel runat="server" ID="up" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Timer runat="server" ID="timer1" OnTick="timer1_OnTick" Interval="1000"></asp:Timer>
<label id="lblTime" runat="server"></label>
<asp:Timer runat="server" ID="timer2" OnTick="timer2_OnTick" Interval="1000"></asp:Timer>
<label id="Label1" runat="server"></label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="timer1" EventName="Tick"/>
<asp:AsyncPostBackTrigger ControlID="timer2" EventName="Tick"/>
</Triggers>
</asp:UpdatePanel>
代码隐藏:
protected void timer1_OnTick(object sender, EventArgs e)
{
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTime indianTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi);
lblTime.InnerText = string.Format("{0:dd:MM:yyyy hh:mm:ss}", indianTime);
}
protected void timer2_OnTick(object sender, EventArgs e)
{
var ts = new TimeSpan(0, 14, 59);
var oneSecond = new TimeSpan(0, 0, 1);
ts = ts.Subtract(oneSecond);
Label1.InnerText = string.Format("{0}:{1}", ts.Minutes, ts.Seconds);
}
问题:
我的第一个工作正常,但倒数计时器不起作用。它不显示任何内容或静态文本14:58。 请注意,我也试过两个不同的更新面板。但没有成功。也欢迎使用多个更新面板的建议。没问题。 请帮助。
更新代码
仍然没有效果。它不安全吗?我认为一个线程正在踩另一个线程。请帮忙
TimeSpan ts ;
TimeSpan onesec ;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ts = new TimeSpan(0, 15, 0);
onesec = new TimeSpan(0, 0, 1);
}
}
protected void timer1_Tick(object sender, EventArgs e)
{
lbl1.Text = string.Format("{0:dd.MM.yyyy hh:mm:ss}", DateTime.Now);
ts = ts.Subtract(onesec);
lbl2.Text = string.Format(@"{0:hh\:mm\:ss}", ts);
}`