gpt4 book ai didi

javascript - MVC 定时器 Action

转载 作者:行者123 更新时间:2023-11-30 16:33:29 25 4
gpt4 key购买 nike

我正在尝试创建一个 15 分钟的计时器,当用户单击按钮“ checkout ”或锁定案例时,它会启动一个计时器,该计时器会在 15 分钟内运行一个操作来翻转我的数据库中的 bool 开关将在 15 分钟后再次解锁该案例。我假设这需要在我的服务器端代码上完成,而不是在 Javascript 中完成,因为如果有人离开页面,脚本将不会运行。我希望我可以在我的操作方法中插入一些可以做到这一点的东西。我已经研究过,但找不到关于如何解决这个问题的明确答案。任何帮助将不胜感激。

 using (Html.BeginForm("CheckoutCase", "Case"))
{
@Html.HiddenFor(x => x.ID)
<input type="submit" value="Checkout" name="submitAction" class="btn btn-block alert-success"/>
}

Controller

[HttpPost]
public ActionResult CheckoutCase(int id)
{
Case currentCase = db.Cases.Find(id);

currentCase.LockCase = true;
currentCase.Lockout_TS = DateTime.Now;
db.SaveChanges();

string url = this.Request.UrlReferrer.AbsolutePath;
return Redirect(url);

}

最佳答案

假设 currentCase.Lockout_TS 持有 DateTime,据此 currentCase 被标记为已锁定,并且当一个案例被锁定时,它为所有案例锁定用户,为什么不使用 TimeSpan.TotalMinutes 检查 DateTime.NowcurrentCase.Lockout_TS 之间耗时(以分钟为单位) ?

//if currentCase is locked...
if (currentCase.LockCase)
{
//...check if it's been more than 15 minutes since currentCase was locked
bool shouldUnlock = (DateTime.Now - currentCase.Lockout_TS).TotalMinutes > 15;
//if yes, then unlock it
if (shouldUnlock)
{
currentCase.LockCase = false;
//persist the changes and proceed accordingly
}
//if we've reached this point, shouldUnlock was false _
//which means that currentCase shouldn't be unlocked yet _
//so proceed accordingly
}
else
{
//currentCase is not locked, proceed accordingly
}

关于javascript - MVC 定时器 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com