如何在c#asp.net中以秒为单位减少总时间?

如何在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放入页面

我的程序中有一个名为“Totaltime”的变量。我将变量(以秒为单位)指定为Totaltime=3600。现在,我想将每个勾号事件的时间减少1秒,并在label或litera控件中显示减少的时间。有人能告诉C#ASP.NET编码来实现这一点吗?

这在服务器端代码(ASP.NET/C#)中是不可能的。您需要客户端代码(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();
}