Asp.net mvc 4 如何在MVC4中每3秒刷新一次局部视图?

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中计时器的启动

我需要获得一个进度条,根据完成的作业数量进行更新。完成的作业数存储在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();
});