如何在c#asp.net中以秒为单位减少总时间?
我的程序中有一个名为“Totaltime”的变量。我将变量(以秒为单位)指定为Totaltime=3600。现在,我想将每个勾号事件的时间减少1秒,并在label或litera控件中显示减少的时间。有人能告诉C#ASP.NET编码来实现这一点吗?这在服务器端代码(ASP.NET/C#)中是不可能的。您需要客户端代码(javascript)来完成此任务即使事实上,这项任务不能仅用服务器端代码完成,您也可以使用以下客户端和服务器代码来完成:如何在c#asp.net中以秒为单位减少总时间?,c#,.net,asp.net,timer,C#,.net,Asp.net,Timer,我的程序中有一个名为“Totaltime”的变量。我将变量(以秒为单位)指定为Totaltime=3600。现在,我想将每个勾号事件的时间减少1秒,并在label或litera控件中显示减少的时间。有人能告诉C#ASP.NET编码来实现这一点吗?这在服务器端代码(ASP.NET/C#)中是不可能的。您需要客户端代码(javascript)来完成此任务即使事实上,这项任务不能仅用服务器端代码完成,您也可以使用以下客户端和服务器代码来完成: 在.aspx文件中,将以下javascript放入页面
在.aspx文件中,将以下javascript放入页面部分:
这应该是你所需要的。享受编码的乐趣 您可以像这样添加updatepanel:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer runat="server" id="UpdateTimer" interval="5000" ontick="UpdateTimer_Tick" />
<asp:UpdatePanel runat="server" id="TimedPanel" updatemode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger controlid="UpdateTimer" eventname="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label runat="server" id="DateStampLabel" />
</ContentTemplate>
</asp:UpdatePanel>
您需要的是javascript,而不是服务器端技术代码>或者你的问题是什么?很好,Kim,但这将使每个间隔都有一次部分往返,因此在这种情况下,每秒钟都有一次,这可能是问题,也可能不是问题。我的解决方案可能没有你的好,但它完成了任务,减少了客户端的计数器,而没有进行任何不必要的往返。
<asp:Literal ID="litTimerLabels" runat="server"></asp:Literal>
<input type="hidden" name="timerval" id="timerval" value=""/>
<div id="timepanel" style="font-weight:bold;font-size:16px;float:left;padding:2px 20px 0 0;"></div>
<asp:Button ID="btnDoStuff" runat="server" Text="Get number of remaining seconds on server side" OnClick="btnDoStuff_Click" />
// Get elapsed time in seconds after postback has occured
protected void btnDoStuff_Click(object sender, EventArgs e)
{
int secondsLeft = GetSecondsLeft();
}
private int GetSecondsLeft()
{
int formSecondsLeft = 0;
if (Request.Form["timerval"] != null &&
int.TryParse(Request.Form["timerval"], out formSecondsLeft))
{
// Keep in mind, that this can be a negative number if more than 3600 seconds elapsed!
return formSecondsLeft;
}
else
{
return 0;
}
}
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer runat="server" id="UpdateTimer" interval="5000" ontick="UpdateTimer_Tick" />
<asp:UpdatePanel runat="server" id="TimedPanel" updatemode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger controlid="UpdateTimer" eventname="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label runat="server" id="DateStampLabel" />
</ContentTemplate>
</asp:UpdatePanel>
protected void UpdateTimer_Tick(object sender, EventArgs e)
{
DateStampLabel.Text = DateTime.Now.ToString();
}