如何在asp.net web应用程序(C#)中制作倒计时计时器?
我正在C#asp.net中创建定时在线测试。我使用本地机器时间创建了它。但在数据库断开或系统挂起的情况下,倒计时计时器必须从计算机挂起或意外的数据库断开的时间开始。例如,用户回答问题10分钟,系统意外挂起。恢复后,倒计时必须从10分钟开始。有人能帮我用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
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服务发送虚假请求