我正在使用 ASP.NET MVC 3 开发一个网站。
我有很多栏目包含来自不同部门的新闻,如下图所示:
http://i.stack.imgur.com/G21qi.png
这些部分通过使用添加到母版页
@Html.Action("_News", "Home", new { id = 1 })
其中 id 1 = "Ledelsen",2 = "Omstillingen"等等。
我的 Controller 包含以下操作:
[ChildActionOnly]
public ActionResult _News(int id)
{
// controller logic to fetch correct data from database
return PartialView();
}
我启动并运行了 CRUD,但我的问题是如何在没有回发的情况下以设定的时间间隔刷新 PartialView?
我想我必须使用 Javascript/jQuery 来完成这个,但我没能做到。
谁能给我指出正确的方向或更好的方向,提供一个如何做到这一点的例子?
提前致谢
编辑:澄清一下,我不想刷新整个页面,而是只对部分 View 进行异步刷新
最佳答案
在您的局部 View 中,我建议将整个东西包装在一个 div 中:
<div id="partial1">
在 javascript 中,您需要一个函数来使用 AJAX 将部分 View 加载到 div 中:
$("#partial1").load("_News", { id="1"} );
那是使用 jQuery。一些文档 here .基本上,这将用调用您的 _News 操作生成的 View 替换指示的 div。如果您向 javascript 调用添加一些逻辑,则 ID 可以变化。
然后将对 load()
的调用包装在 setTimeout()
中:
var t = setTimeout(function () {$("#partial1").load("_News", { id="1"} );}, 60000);
这将每 60 秒运行一次包含的函数。可以使用 t
,因此 clearTimeout(t)
可以在您的 javascript 代码中的任何位置停止自动刷新。
编辑
这应该可以解决缓存问题。感谢@iko 的建议。我注意到您需要 cache: false
才能正常工作。
var t = setTimeout(function () { $.ajax({
url: "_News",
data: { "id": "1" },
type: "POST",
cache: false,
success: function (data) {
$("#partial1").innerHTML = data;
}}); }, 60000);
关于c# - 使用 ASP.NET MVC 3 连续刷新局部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6170698/