Asp.net mvc 4 如何在MVC4中每3秒刷新一次局部视图?
我需要获得一个进度条,根据完成的作业数量进行更新。完成的作业数存储在SQL Server DB的作业表中。我需要我的ASP.NET MVC 4应用程序每隔3秒查询数据库中的竞争作业数,并使用此数据更新保存在局部视图中的进度条。计时器工作,它调用StatusController中的_getforStatus操作,它似乎调用EntityDB,但它似乎从不调用视图,除非计时器告诉它。如何使进度条每3秒刷新一次 my_Layout.cshtml视图的标题调用StatusController中计时器的启动,如下所示:Asp.net mvc 4 如何在MVC4中每3秒刷新一次局部视图?,asp.net-mvc-4,timer,progress-bar,entity-framework-6,asp.net-mvc-partialview,Asp.net Mvc 4,Timer,Progress Bar,Entity Framework 6,Asp.net Mvc Partialview,我需要获得一个进度条,根据完成的作业数量进行更新。完成的作业数存储在SQL Server DB的作业表中。我需要我的ASP.NET MVC 4应用程序每隔3秒查询数据库中的竞争作业数,并使用此数据更新保存在局部视图中的进度条。计时器工作,它调用StatusController中的_getforStatus操作,它似乎调用EntityDB,但它似乎从不调用视图,除非计时器告诉它。如何使进度条每3秒刷新一次 my_Layout.cshtml视图的标题调用StatusController中计时器的启动
<head>
...
@Html.Action("InitTimer", 'Status")
...
</head>
编辑:
我还尝试了以下Ajax代码。我没有收到任何错误,但我的进度条从未更新:
<script>
function loadPartialView() {
$.ajax({
url: '@url.Action("_GetforStatus', "Status")",
type: 'GET',
dataType: 'html',
success: function(result) {
$('progress').html(result);
}
});
}
$function () {
loadPartialView();
window.setInterval("loadPartialView()", 3000);
});
</script>
函数loadPartialView(){
$.ajax({
url:“@url.Action”(“GetforStatus”,“Status”)”,
键入:“GET”,
数据类型:“html”,
成功:功能(结果){
$('progress').html(结果);
}
});
}
$function(){
loadPartialView();
setInterval(“loadPartialView()”,3000);
});
我不确定它是否正常工作,因为我没有在JS中正确地表示“Html.RenderAction”或者其他什么 我认为您需要对ajax调用进行一些更改。下面是我如何打电话的一个例子
$.ajax({
url: '@Url.Action("Action", "Controller")',
type: 'post',
cache: false,
async: true,
data: { id: "frmUser" },
success: function(result){
$('.divPartial').html(result);
}
});
在你的控制器上,我不认为你只需要孩子的动作。此外,还将返回一个空的局部视图对象。应该是
return partialView('_partialName', Model);
最后,在jquery中,为了保持调用的进行,需要重新触发调用。试试这样的
$(document).ready(function(){
function RefreshPartial(){
//this will wait 3 seconds and then fire the load partial function
setTimeout(function(){
loadPartialView();
//recall this function so that it will continue to loop
RefreshPartial();
}, 3000);
}
//initialize the loop
RefreshPartial();
});
对于这样的东西,我更喜欢在视图上使用jquery计时器。在计时器中,执行ajax调用以返回更新进度所需的部分或只是数据,barI尝试了以下另一个问题,该问题为类似问题提供了ajax解决方案,但我无法让它工作。你能用我上面的代码给我看一个例子,说明我将如何使用razor语法来实现它吗?你能发布你在ajax调用中的尝试并告诉我你遇到了什么错误吗?看起来好像它没有调用脚本。我是否需要在头部编写任何代码以使其读取?我是否需要在其周围放置脚本标记,或者是否有方法将其写入Razor?还有,“.divpartial”和“frmUser”是什么?是的,这将放在脚本标记中。这只是一个例子。如果要将某些内容传递回控制器,可以通过“数据”属性执行。如果不想,可以删除该属性。div partial是表单上元素(如div)的选择器,返回的部分视图将放置在该表单上。如果查看浏览器上的控制台,是否会出现错误?你能在代码中加一个断点并确保它被击中吗?要将模型传递给partial,您需要将其传递给partial。如果您没有模型,请将其关闭,因为您的视图看不到它。查看视图上的源代码,确保引用在那里,并确保链接中的url有效
return partialView('_partialName', Model);
$(document).ready(function(){
function RefreshPartial(){
//this will wait 3 seconds and then fire the load partial function
setTimeout(function(){
loadPartialView();
//recall this function so that it will continue to loop
RefreshPartial();
}, 3000);
}
//initialize the loop
RefreshPartial();
});