Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在asp.net web应用程序(C#)中制作倒计时计时器?_C#_Javascript_Asp.net_Timer_Countdown - Fatal编程技术网

如何在asp.net web应用程序(C#)中制作倒计时计时器?

如何在asp.net web应用程序(C#)中制作倒计时计时器?,c#,javascript,asp.net,timer,countdown,C#,Javascript,Asp.net,Timer,Countdown,我正在C#asp.net中创建定时在线测试。我使用本地机器时间创建了它。但在数据库断开或系统挂起的情况下,倒计时计时器必须从计算机挂起或意外的数据库断开的时间开始。例如,用户回答问题10分钟,系统意外挂起。恢复后,倒计时必须从10分钟开始。有人能帮我用C语言编码吗 我使用了下面的代码,但在上面的场景中它没有用处 int totalTime = (Convert.ToInt32(ViewState["totaltime"])) * 60; DateTime startTime = (DateTi

我正在C#asp.net中创建定时在线测试。我使用本地机器时间创建了它。但在数据库断开或系统挂起的情况下,倒计时计时器必须从计算机挂起或意外的数据库断开的时间开始。例如,用户回答问题10分钟,系统意外挂起。恢复后,倒计时必须从10分钟开始。有人能帮我用C语言编码吗

我使用了下面的代码,但在上面的场景中它没有用处

int totalTime = (Convert.ToInt32(ViewState["totaltime"])) * 60;

DateTime startTime = (DateTime)ViewState["startTime"];
TimeSpan elaspedTime = DateTime.Now.Subtract(startTime);
Literal1.Text = elaspedTime.Hours.ToString() + "h" + ":" + elaspedTime.Minutes.ToString() + 
    "m" + ":" + elaspedTime.Seconds.ToString() + "s";

int finish = Convert.ToInt32(elaspedTime.TotalSeconds);

int remaingsec = (totalTime - finish);
TimeSpan remainingtime = TimeSpan.FromSeconds(remaingsec);
string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s",
                    remainingtime.Hours,
                    remainingtime.Minutes,
                    remainingtime.Seconds,
                    remainingtime.Milliseconds);

LIteral2.Text =  answer;
if (totalTime == finish)
{
     lnkFinish_Click(sender, e);
     Response.Redirect(@"~/Error.aspx");
}

我认为最好是在表中取一个字段,设置问题的总时间,每15/30秒更新一次该字段(根据您要求的频率),每次更新时从总时间中减去15/30秒的值。并执行此操作,直到字段的值大于0

为此,您可以借助计时器(javascript计时器)和ajax。向服务器发送更新该字段的请求

使用ajax,我认为最好创建一个webservice(它将更新该字段的值),并在javascript计时器的基础上使用ajax调用它。你也可以使用ajax定时器

javascript计时器参考:


我的意见是使用javascript进行倒计时(嵌入式),并使用json传递您的DB数据,当DB导致断开连接时,您将一些数据传递给javascript,并使用一个控件进行倒计时

下载以下javascript文件并放入web应用程序目录:

而不是像这样使用:

<script type="text/javascript">
        TargetDate = "12/25/207 12:01 AM";
        BackColor = "red";
        ForeColor = "white";
        CountActive = true;
        CountStepper = -1;
        LeadingZero = true;
        DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
        FinishMessage = "It is here!";
    </script>

TargetDate=“12/25/207 12:01 AM”;
BackColor=“红色”;
前景色=“白色”;
CountActive=true;
CountStepper=-1;
前导零=真;
DisplayFormat=“%%D%%天、%%H%%小时、%%M%%分钟、%%S%%秒。”;
FinishMessage=“它在这里!”;

您可以使用windows注册表存储计数器。

不是从网页。。。。此外,我认为现在使用注册表来处理这些事情是不可取的。是的,这可能是javascript和服务器始终知道另一个正在运行的最好方式。但是,您需要知道,用户可以禁用javascript,恶意用户可以向web服务发送虚假请求