gpt4 book ai didi

c# - 如何在不刷新页面的情况下显示不同的值 MVC C#

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

我有一个循环遍历值列表的方法,我想做的是当我打开页面时能够看到值的变化而不刷新当前 View 。我试过类似下面的代码。

public static int myValueReader { get; set; }

public static void ValueGenerator()
{
foreach (var item in myList)
{
myValue = item;
Thread.Sleep(1000);
}
}

实际情况是,即使我关闭表单,我也希望它读取这些值。我想我需要分配一个任务才能执行此操作,但由于它是 MVC 应用程序,所以我一直在徘徊是否有更好的方法?

最佳答案

还有另一种方法:

  • 使用 AJAX 和 setTimeout
  • 在您的 Controller 中声明一项操作(该操作将返回您的不同值)
  • ViewBag 中的一个整数,例如:ViewBag.totalItems

在您的 Controller 中声明一个操作:这很重要,因为这将是您与数据库或数据的连接。此操作将接收 itemIndex 并将返回该项目。像这样:

[HttpPost]
public JsonResult GetItem(int index) {
return Json(myList.ElementAt(index));
}

ViewBag.TotalItems:您的 View 必须知道列表中有多少项。我建议您通过 ViewBag 将该值作为整数传递:

public ActionResult Index() {
ViewBag.TotalItems = myList.Count();
return View();
}

AJAX 和 setTimeout:一旦您拥有所有这些,您就可以在不刷新的情况下更新您的 View :

<script>
$(function() {
var totalItems = @Html.Raw(Json.Encode(ViewBag.TotalItems));
var currentItemIndex = 0;

var getData = function() {
$.post("@Url.Action("GetItem")", {index:currentItemIndex}, function(data) {

// data is myList.ElementAt(index)
// do something with it

}).always(function() {
currentItemIndex++;

if(currentItemIndex < totalItems) {
setTimeout(getData, 1000); // get the next item every 1 sec
}
})
}

getData(); // start updating
})
</script>

关于c# - 如何在不刷新页面的情况下显示不同的值 MVC C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34257910/

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