2011-08-15 122 views
1

我已经编写了一个简单的程序,用于从WMI数据库收集一些信息,例如当前的CPU使用情况。 我使用ActionResult索引函数在homecontroller文件中执行这些操作。然后我返回视图并在主页上显示这些结果。使用asp.net进行异步自动刷新MVC 3

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

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

回答

9

好的,你问了一个建议,所以我会尽量保持高级。

首先,你要实现两个观点:

  1. 指数 - 这是可以被索引的ActionResult functon返回控制器上你的看法。
  2. 统计 - 这是包含在索引视图这样的局部视图

    <div id="refreshme"> 
        @Html.Partial("_Stats", Model.Stats) 
    </div> 
    

你会注意到,我在一个包含统计对象模型通过。这个统计数据对象被传递到你的“统计”视图,它将知道如何渲染它。

接下来,您需要在您的HomeController中添加一个新的操作方法,您猜对了,Stats!这个ActionResult将只显示Stats视图并将其作为HTML返回。您还需要设置的[HttpGet]标志就可以了,因此可以接受GET请求:

[HttpGet] 
public ActionResult Stats(...) 
{ 
    //... 
    return View("_Stats", Model); 
} 

现在,对于JS方:

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

所以目标是这样:

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

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

+0

感谢您的回复。 我已经删除了该部分,并把它放在一个称为stats的部分视图。但是,我的索引视图文件中无法识别该渲染函数。我GOOGLE了它,但似乎无法找到如何让程序识别它。 – Slethron

+0

对不起,我正在盲目写作,并打算使用'@ Html.Partial'。我的错。 http://rachelappel.com/razor/partial-views-in-asp-net-mvc-3-w-the-razor-view-engine/ –

+0

谢谢,但现在它不承认这一行中的模型参数: return View(“_ Stats”,Model); – Slethron