使用asp.net MVC 3进行异步自动刷新

Sle*_*ron 1 asp.net-mvc wmi jquery refresh

我编写了一个简单的程序,从WMI数据库中收集一些信息,例如当前的CPU使用情况.我在homecontroller文件中使用ActionResult Index函数执行这些操作.然后我返回视图并在主页上显示这些结果.

现在,我应该使用JQuery并每3秒刷新一次这些值.我不想重新加载整个页面.但是,我从WMI收集的这些值.

任何好的和简单的(因为我是一个完整的Javascript新手)建议?

Ada*_*son 9

好吧,你问了一个建议,所以我会尽力保持高水平.

首先,您需要实现两个视图:

  1. 索引 - 这是您的控制器上的Index ActionResult功能返回的视图.
  2. 统计信息 - 这是您的索引视图中包含的部分视图:

    <div id="refreshme">
        @Html.Partial("_Stats", Model.Stats)
    </div>
    
    Run Code Online (Sandbox Code Playgroud)

你会注意到我传入了一个包含stats对象的Model.此stats对象将传递到您的"Stats"视图,该视图将知道如何呈现它.

接下来,你要在你的HomeController中添加一个新的动作方法,你猜对了,Stats!此ActionResult将呈现Stats视图并将其作为HTML返回.您还需要在其上设置一个标志,[HttpGet]以便它可以接受get请求:

[HttpGet]
public ActionResult Stats(...)
{
    //...
    return View("_Stats", Model);
}
Run Code Online (Sandbox Code Playgroud)

现在,对于JS方面:

function refresh() {
    $.get('/index/post', function(result) {
        $('#refreshme').html(result);
    });
}
setInterval(refresh, 3000);
Run Code Online (Sandbox Code Playgroud)

所以目标是这样的:

  1. 从页面的其余部分中删除要刷新的部分,并将其放在部分视图中.
  2. 添加一个只显示该部分视图的控制器操作方法.
  3. 在索引视图中包含部分视图,并在其周围包含容器,以便可以轻松更新.
  4. 添加一个javascript函数,它将从控制器获取最新的视图呈现并覆盖页面上的当前统计信息.

希望这会让你朝着正确的方向前进.