如何解决在间隔mvc上刷新视图模型
| 我有一个带有viewmodels列表的视图,该视图基于数据库中的数据。我显示了此列表,但是我希望在数据库中的数据更改时以给定的间隔(5秒)刷新列表。我的控制器中有一个可更新viewmodel的Action。我使用MVC 3和Razor。 我猜需要一些JavaScript / jQuery。 我的剧本:<script type=\"text/javascript\">
$(document).ready(function () {
var hdRaceId = $(\"#hdRaceId\");
setInterval(\"GetList()\",5000);
function GetList() {
$.get(\"/Timer/Update/?id=\" + hdRaceId.val());
}
我在控制器中的操作:
public ActionResult Update(int id)
{
var raceintermediates = RaceIntermediateModel.GetRaceintermediatesForRace(id);
return View(\"Speaker\",raceintermediates);
}
解决方法
如果要刷新DOM的某些部分,则需要定义AJAX请求的成功回调。像这样:
window.setInterval(function() {
var hdRaceId = $(\'#hdRaceId\').val();
var updateUrl = \'@Url.Action(\"Update\",\"Timer\")\';
$.get(updateUrl,{ id: hdRaceId },function(result) {
$(\'#someDivId\').html(result);
});
},5000);
您有一些div可以承载部分视图结果:
<div id=\"someDivId\"></div>
此外,某些浏览器(例如IE)可能会缓存GET请求。为了避免这种情况,您可以使用以下方法:
window.setInterval(function() {
var hdRaceId = $(\'#hdRaceId\').val();
var updateUrl = \'@Url.Action(\"Update\",\"Timer\")\';
$.ajax({
url: updateUrl,type: \'GET\',data: { id: hdRaceId },cache: false,success: function(result) {
$(\'#someDivId\').html(result);
}
});
},5000);
,setTimeout(GetRefereshedList,5000);
在GetRefreshedList ..中,您可以使用$ .ajax()方法从服务器获取新列表并在客户端上更新所有视图。
如果可以共享您的代码,我可以再扩展一点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。