加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:27:40 所属栏目:百科 来源:网络整理
导读:我有一个循环遍历值列表的方法,我想要做的是当我打开页面时能够看到值更改而不刷新当前视图.我试过像下面的代码. public static int myValueReader { get; set; }public static void ValueGenerator(){ foreach (var item in myList) { myValue = item; Thre
我有一个循环遍历值列表的方法,我想要做的是当我打开页面时能够看到值更改而不刷新当前视图.我试过像下面的代码.
public static int myValueReader { get; set; }

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

实际的是,即使我关闭表单,我也希望它读取这些值.我认为我需要分配一个Task才能做到这一点,但是如果有更好的方法,我会徘徊,因为它是一个MVC应用程序?

解决方法

这是另一种方法:

>使用AJAX和setTimeout
>在控制器中声明一个动作(这个动作将返回不同的值)
> ViewBag中的一个整数,有些像:ViewBag.totalItems

在控制器中声明一个动作:这很重要,因为这将是您与数据库或数据的连接.此操作将接收itemIndex并将返回该项.像这样的东西:

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

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

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

AJAX和setTimeout:一旦掌握了所有这些,您就可以在不刷新的情况下更新视图了:

<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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读