vistas vista parciales parcial pagina only mvc multiples misma example actualizar asp.net-mvc-4 timer progress-bar entity-framework-6 asp.net-mvc-partialview

asp.net-mvc-4 - vista - refresh partial view mvc



¿Cómo actualizo una vista parcial cada 3 segundos en MVC 4? (1)

Creo que necesitas hacer algunos cambios en tu llamada ajax. Aquí hay un ejemplo de cómo hago la llamada

$.ajax({ url: ''@Url.Action("Action", "Controller")'', type: ''post'', cache: false, async: true, data: { id: "frmUser" }, success: function(result){ $(''.divPartial'').html(result); } });

en su controlador no creo que necesite la acción del niño solamente. También está devolviendo un objeto de vista parcial vacío. Debería ser

return partialView(''_partialName'', Model);

finalmente en su jquery para mantener la llamada en curso, necesita volver a activar la llamada. Pruebe algo como esto

$(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(); });

Necesito obtener una barra de progreso para actualizar en función de la cantidad de trabajos completados. La cantidad de trabajos completados se almacena en una tabla de trabajos de un DB de SQL Server. Necesito que mi aplicación ASP.NET MVC 4 consulte el DB cada 3 segundos para conocer el número de trabajos y utilizar estos datos para actualizar la barra de progreso que se mantiene en una vista parcial. El temporizador funciona y me llama la acción _getforStatus en el StatusController, y parece llamar al EntityDB, pero nunca parece llamar a la vista de otra forma que no sea antes de que el temporizador se lo indique. ¿Cómo obtengo la barra de progreso para actualizar cada 3 segundos?

El encabezado de mi vista _Layout.cshtml llama al inicio del temporizador que está en el StatusController así:

<head> ... @Html.Action("InitTimer", ''Status") ... </head>

Además, en la vista _Layout, llamo a la vista parcial en un Jumbotron así:

<div class="jumbotron" id=progress"> @{Html.RenderAction("_GetforStatus", "Status");} </div>

El controlador de estado está codificado así:

public class StatusController : Controller { IntegrationDBEntities _db; Private Timer timer1; Public void initTimer() { timer1 = new Timer(); timer1.elapsed += new ElapsedEventhandler(timer_Elapsed(; timer1.interval = 3000; timer1.Start(); } Private void timer_Elapsed(Object sender, EventArgs e) { _GetforStatus(); } [ChildActiononly] public PartialViewResult _GetforStatus(0 { _db = new IntegrationDBEntities(); ViewDataModel - _db.Jobs.ToList(); return partialView(); }

EDITAR: También probé el siguiente código Ajax. No recibí ningún error, pero mi barra de progreso nunca se actualizó:

<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>

No estoy seguro de si no funciona, porque no he representado correctamente "Html.RenderAction" en JS o qué.