gpt4 book ai didi

c# - 自动倒计时调整数据库记录

转载 作者:太空狗 更新时间:2023-10-29 20:03:14 24 4
gpt4 key购买 nike

我有一个小型 MVC 网站,供 friend 美发沙龙使用。在此页面上,我有一个 div,用于显示从数据库记录中获取的数字。这个数字是当前排队等待理发的人数。

我目前拥有的是登录到“管理”页面并使用表单更新此数字的能力,从说“2”到“5”,然后根据人数将“5”更改为“6”正在排队。

这是目前的手动操作。代码如下:

=============================

Controller

[HttpPost]
public ActionResult Update(Data data)
{
if (ModelState.IsValid)
{
data.ID = 1; //EF need to know which row to update in the database.
db.Entry(data).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index", "Home");
}

return View(data);
}

====================================

模型代码

{
public class Data
{
public int ID { get; set; }
public string Queue_Number { get; set; }
}

public class DataDBContext : DbContext
{
public DbSet<Data>Queue { get; set; }
}
}

我真正希望发生的是,一旦您从“管理”页面上的表单手动更新队列号,我希望自动倒计时 20 分钟(理发所需的粗略时间)然后让 Queue Number 自动向下调整一个,直到它达到“0”。

例如我们有 5 个人在排队,20 分钟后自动调整为 4 人并且网页会自动更新/刷新,然后又有 2 个人进来所以我们手动调整为 6 人在队列中并再次开始计时,每经过 20 分钟,队列就会调整 -1,直到下降到“0”。一旦它达到“0”,它就会一直留在那里,直到我们手动将更多人添加到队列中。

恐怕我什至不知道如何开始这样的请求,或者即使它可能吗?

我真的很感谢这里的专家提供的任何帮助,他们可能会为我“逐步”完成它。任何我没有提供的信息我会努力添加 - 我意识到我不是最擅长解释自己的人:-(

最佳答案

您是否考虑过 Ajax?您是否在手动设置标志时存储上次更新时间?您可以使用 Ajax 请求来同时运行使用 jquery 设置间隔。这将每 2 分钟触发一次 ajax 请求。找到它最后一次更新的时间,如果超过 20 分钟,则从数据库中删除一个,您的返回将是新号码,jquery 可以为您更新该号码。

实际上是一个非常简单的过程,但需要有关基础数据的更多详细信息。

根据你的问题,我可以看到它是如何工作的

在 Controller 中

public ActionResult ajaxUpdate()
{
//open connection
dbcontext db = new dbcontext();
db.Connection.Open();

// get the last updated record in the database.
var entry = db.Entry.OrderByDecending(m=> m.LastUpdatedDate).FirstOrDefault();

//clean up
db.Connection.Close();
db.Dispose();

//return -1 as error
if(entry == null){

return Json(-1,JsonRequestBehavior.AllowGet);

}

// get current number of people in queue
Int32 numberOfPeople = entry.QueueNumber;

TimeSpan span = DateTime.Now.Subtract(entry.LastUpdatedDate);

if(span.Minutes >= 20){

// if 20 mins have passed assume a person has been completed since manual update
numberOfPeople--;

}

//this returns a number, alternatively you can return a Partial
return Json(numberOfPeople, JsonRequestBehavior.AllowGet);
}

Jquery 和 Ajax

$(document).ready(function () {

// run function every x minutes
setInterval(function () {
UpdateQueue();
}, 100000);





});
function UpdateQueue() {

$.ajax({
cache: true,
type: 'POST',
url: "/ControllerName/ajaxUpdate",
async: false,
dataType: "json",
success: function (result) {
// on success result will be the number returned

// -1 is error
if (result == -1) {
return;

}

// check the -- didn't return a negative
if (result < 0) {

result = 0;

}

//find your element in the HTML to update
$('#NumberElement').text().replaceWith(result);


}

});


}

您必须确保在包含此代码之前包含您的 jquery 库,否则您将没有定义 Jquery。

关于c# - 自动倒计时调整数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13644917/

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