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

发布于 2024-11-29 12:02:15 字数 237 浏览 1 评论 0原文

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

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

有什么好的和简单的(因为我是 Javascript 新手)建议吗?

I've written a simple program that gathers some information from the WMI database such as the current CPU usage.
I perform these operations in the homecontroller file, with an ActionResult Index function. Then I return the View and display these results on the homepage.

Now, I should use JQuery and refresh these values every 3 seconds. I don't want to reload the whole page. But, just these values that I gather from WMI.

Any good and simple(because I'm a complete newbie in Javascript) suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

筱果果 2024-12-06 12:02:15

好吧,你征求了建议,所以我会尽力保持高水平。

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

  1. Index - 这是控制器上的 Index ActionResult 函数返回的视图。
  2. 统计信息 - 这是包含在索引视图中的部分视图,如下所示:

    @Html.Partial("_Stats", Model.Stats)

您会注意到我传入了一个包含统计信息对象的模型。该统计对象将传递到您的“统计”视图,该视图将知道如何呈现它。

接下来,您需要在 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 函数,该函数将从控制器获取最新的视图渲染并覆盖页面上的当前统计信息。

希望这能让您朝着正确的方向前进。

Alright, you asked for a suggestion, so I'll try and remain high-level.

First, you'll want to implement two views:

  1. Index - This is your view that's returned by your Index ActionResult functon on your controller.
  2. Stats - This is a partial view included in your Index view as such:

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

You'll note that I passed in a Model that contains a stats object. This stats object gets passed to your "Stats" View which will know how to render it.

Next, you'll want to add a new action method in your HomeController called, you guessed it, Stats! This ActionResult will just render the Stats view and return it as HTML. You'll also want to set a flag of [HttpGet] on it so it can accept get requests:

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

Now, for the JS side:

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

So the objectives are as such:

  1. Strip out your part that you want refreshed from the rest of the page and put it in a partial view.
  2. Add a controller action method that renders just that partial view.
  3. Include that partial view on your Index view with a container wrapped around it so it can be easily updated.
  4. Add a javascript function that'll get the latest view rendering from the controller and overwrite the current stats on the page.

Hopefully this will get you going in the right direction.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文