ASP.NET MVC通过时间间隔事件

时间:2018-02-11 04:20:58

标签: c# asp.net-mvc

我一直在使用我的ASP.NET应用程序并对其进行了一些重大更改。当我刚开始时,我想知道如何从控制器更新我的视图。感谢引导我的不可思议的人,我能够了解Ajax以及如何通过客户端发送更新数据。我通过点击我创建的刷新按钮来完成此操作。

但是现在我希望在经过一定时间后更新数据(例如3分钟)。我如何设置这样的东西?我是在Ajax.BeginForm函数中设置它还是通过JavaScript完成?我想知道你对此的意见。

我的模特:

using System.Collections.Generic;

namespace Portfolio.Models
{
    public class HomeViewModel
    {
        public List<User> User = new List<User>();
    }
}

我的控制器:

using Portfolio.Models;
using System;
using System.Timers;
using System.Web.Mvc;

namespace Portfolio.Controllers
{
    public class HomeController : Controller
    {
        public HomeViewModel model = new HomeViewModel();
        Timer Timer = new Timer();

        public ActionResult Index()
        {
            ModelState.Clear();

            model.User.Add(new User() { Name = "A", Email = "a@email.com", Date = DateTime.Now.AddHours(-1) });
            model.User.Add(new User() { Name = "B", Email = "b@email.com", Date = DateTime.Now.AddHours(-2) });
            model.User.Add(new User() { Name = "C", Email = "c@email.com", Date = DateTime.Now.AddHours(-3) });

            if (Request.IsAjaxRequest())
            {
               return PartialView("_FooView", model);
            }
        }            
    }
}

我的观点:

    @{
        ViewBag.Title = "Home Page";
    }
    @model Portfolio.Models.HomeViewModel

 @using (Ajax.BeginForm(
    new AjaxOptions
    {
      HttpMethod = "get",
      InsertionMode = InsertionMode.Replace,
      UpdateTargetId = "FooView"
    }))
  {
    <button type:"submit" value:"Refresh/>

  }
@Html.Partial("_FooView", Model)

我新创建的部分视图:

@model Portfolio.Models.HomeViewModel
<div id="FooView">
        @for (int i = 0; i < Model.User.Count; i++)
        {
            <form>
                <div id="Name">@Model.User[i].Name</div>
                <div id="Email">@Model.User[i].Email</div>
                <div id="Date">@Model.User[i].Date</div>
            </form>
            <div>---------------------
        </div>
        }    
    </div>

2 个答案:

答案 0 :(得分:0)

你说使用ajax,所以我猜你在按钮点击时调用了一个JavaScript函数?如果是这样,请尝试setInterval(在这里使用jQuery):

$('document').ready(function() {
  setInterval(ThatAjaxFunctionsName, 180000); // 180 seconds - 3 minutes
});

可能需要关于所述功能的更多细节,我假设它只是一些函数ThatAjaxFunctionsName(){}的情况。

答案 1 :(得分:0)

您可以使用setInterval,然后使用JavaScrip

提交表单
$('document').ready(function() {
  setInterval(submitForm(), 180000); 
});

function submitForm() {
  $("#YOUR_FORM_ID").submit();
}

使用htmlAttributes上的Ajax.BeginForm使用语法new { id = "YOUR_FORM_ID" }

设置Ajax表单的ID