所以我在生产设置中工作,我有一个aspx页面,我需要该页面做的是....
当一个(单位被打包)将我的标签递增到下一个数字时(因此在班次开始时,标签显示 0,并在执行操作时递增 1)
我还需要将此标签设置为在 8 小时后重置...所以有 3 种班次模式 早上 6 点至下午 2 点 ----下午 2 点至晚上 10 点 - 晚上 10 点至下午 6 点......
所以这个时间必须始终在使用中,即使网页被关闭并再次打开......
我希望这是有道理的...
让我们看看我是否正确,首先你想要一个标签,它会根据某人点击按钮而变化,其次你想刷新页面,如果在三个小时(06:00、14:00、22:00)。
至少对我来说有一个问题,您需要将当前标签值保存在所有使用标签系统的人之间的某个地方。
在我的解决方案中,您需要一个数据库来保存它。
在 aspx 文件的Page_Load
,我会调用一个返回当前标签值的函数,如下所示:
public static string label = 0;
protected void Page_Load(object sender, EventArgs e)
{
label = getValueLabel();
}
函数getValueLabel
应转到数据库并返回当前标签。
现在,对于在某些小时重置标签,我将对任务管理器执行一些操作,然后将其设置在托管项目的Web服务器上。
它可以是一个简单的控制台应用程序,它转到数据库并更新当前标签值。
将此应用程序设置为在 06:00、14:00 和 22:00 运行,这将清理标签值。
网页在特定时间重置的最后一部分,您可以使用Javascript来完成。
这是@Nick在这个问题中的解决方案。
function refreshAt(hours, minutes, seconds) {
var now = new Date();
var then = new Date();
if(now.getHours() > hours ||
(now.getHours() == hours && now.getMinutes() > minutes) ||
now.getHours() == hours && now.getMinutes() == minutes && now.getSeconds() >= seconds) {
then.setDate(now.getDate() + 1);
}
then.setHours(hours);
then.setMinutes(minutes);
then.setSeconds(seconds);
var timeout = (then.getTime() - now.getTime());
setTimeout(function() { window.location.reload(true); }, timeout);
}
加载页面时,只需调用该函数三次。
refreshAt(06,0,0);
refreshAt(14,0,0);
refreshAt(22,0,0);
希望我给了你一些想法,这样你就可以做到了,如果我看不到代码或你的项目树,那就有点困难了。