我有一个按钮,我想要禁用后,4次失败提交尝试。我使用System.Timers计时器数到15秒,然后尝试在这15秒之后重新启用按钮。
这是我的密码:
if (SessionManager.getRetries > 3)
{
Message.Text = "Too many failed attempts. Please retry in 15 seconds.";
buttonOne.Enabled = false;
HttpContext.Current.Session["RetryCount"] = 0;
System.Timers.Timer myTimer = new System.Timers.Timer();
myTimer.AutoReset = false;
myTimer.Interval = 15000;
myTimer.Enabled = true;
myTimer.Start();
myTimer.Elapsed += myTimer_Elapsed;
}
}
void myTimer_Elapsed(object sender, ElapsedEventArgs e)
{
buttonOne.Enabled = true;
}到目前为止,我的程序将正确计算提交尝试的# (SessionManager.getRetries)。在4次尝试失败后,它将输入以下if语句。然后,它创建计时器,设置时间间隔,启动它,并知道经过的时间。它甚至会转到buttonOne.Enabled = true语句,但是它实际上没有启用我的按钮。(这是通过在visual studio中使用断点来观察的)。
这里有什么东西我遗漏了吗?也许经过的事件没有按我所希望的方式工作?
任何帮助都将不胜感激。
发布于 2015-06-23 14:17:05
如前所述,问题不在于事件没有触发,而是由于计时器只存在服务器端,所以无法通过我之前尝试的方法在客户端显示启用按钮。
但是我发现了一个比想出一些草率的Javascript更简单的方法:)
通过使用更新面板和asp计时器。通过在更新面板中放置一个asp计时器,并将计时器设置为默认禁用,然后我可以操作定时器。然后,当计时器滴答滴答时,通过更新面板自动更新:)
这里有很好的代码示例:ASP.NET Timer Event
发布于 2015-06-22 19:44:10
Timer事件应该是触发的,但是它无法启用HTML页面上的按钮,因为在此之前请求已经完成。
您应该将计时器移动到页面上的JavaScript。您仍然需要保持逻辑,以验证重试不会更频繁,因为绕过JavaScript或任何其他客户端验证非常容易。
https://stackoverflow.com/questions/30988290
复制相似问题