Cas*_*per 3 c# ajax partial-page-refresh asp.net-mvc-3
我正在使用ASP.NET MVC 3开发一个网站.
我有很多部分包含来自不同部门的新闻,如下图所示:
http://i.stack.imgur.com/G21qi.png
这些部分通过使用添加到母版页
@Html.Action("_News", "Home", new { id = 1 })
Run Code Online (Sandbox Code Playgroud)
其中id 1 ="Ledelsen",2 ="Omstillingen"等等.
我的控制器包含以下操作:
[ChildActionOnly]
public ActionResult _News(int id)
{
// controller logic to fetch correct data from database
return PartialView();
}
Run Code Online (Sandbox Code Playgroud)
我已经启动并运行了CRUD,但我的问题是如何在设置的时间间隔内刷新PartialViews而不回发?
我猜我必须使用Javascript/jQuery来实现这一目标,但我无法做到.
任何人都可以指出我正确的方向或更好的方式,提供一个如何做到这一点的例子?
提前致谢
编辑:只是为了澄清我不希望整个页面刷新,但只对异步视图进行异步刷新
在你的局部视图中,我建议将整个事情包装在一个div中:
<div id="partial1">
Run Code Online (Sandbox Code Playgroud)
在javascript中你需要一个函数来使用AJAX将局部视图加载到div中:
$("#partial1").load("_News", { id="1"} );
Run Code Online (Sandbox Code Playgroud)
那是使用jQuery.这里有一些文档.基本上,这将取代通过调用_News操作生成的视图所指示的div.如果您在javascript调用中添加一些逻辑,则可以改变id.
然后将调用包装load()在setTimeout():
var t = setTimeout(function () {$("#partial1").load("_News", { id="1"} );}, 60000);
Run Code Online (Sandbox Code Playgroud)
这将每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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15685 次 |
| 最近记录: |