2011-07-28 37 views
6

Necesito una actualización periódica de la vista parcial de .Net. Está trabajando con Ajax.ActionLink, ¿hay alguna función similar para la actualización periódica? ¿Puedo hacerlo sin usar jQuery?Actualizar periódicamente una vista parcial (ASP.Net MVC)

+0

cheque esta http://stackoverflow.com/questions/3167116/asp-net-mvc-refresh-table-data-every-5-seconds~~V~~singular~~3rd – raym0nd

+0

se puede poner esto en el de su html: raym0nd

+0

¿Es posible prescindir de js? –

Respuesta

9

Zen, que podría hacerlo por un código como el siguiente:

function loadPartialView() { 
    $.ajax({ 
    url: "@Url.Action("ActionName", "ControllerName")", 
    type: 'GET', // <-- make a async request by GET 
    dataType: 'html', // <-- to expect an html response 
    success: function(result) { 
       $('#YourDiv').html(result); 
      } 
    }); 
} 

$(function() { 

    loadPartialView(); // first time 

    // re-call the function each 5 seconds 
    window.setInterval("loadPartialView()", 5000); 

}); 

Recuerde que su acción debe devolver un PartialView. ¡Espero que te ayude!

+0

Estaba buscando no jQuery pero de todos modos, gracias (+1). –

+0

Esto funcionó para mí en Chrome y Firefox, pero no en IE 9 (no me molesté en probar los otros IEs), pero por ahora, eso es suficiente. +1 – Yetti

2

Tal vez this puede ayudarle. ¿Qué versión de MVC estás usando? Puede establecer un intervalo de tiempo específico para un método auxiliar. Esta es la única forma que he visto sin usar js.

+0

Estoy usando MVC 2, VS 2010 –

+0

Es posible que tenga problemas para usar este método. Pero es la única forma en que he visto realizar esto sin usar js, todo lo demás está relacionado. –

+1

En realidad, está usando js pero js solo está integrado. –

0

Pruebe esto.

$(document).ready(function() { 
      var url = "@(Html.Raw(Url.Action("ActionName", "ControllerName")))"; 
      $("#PartialViewDivId").load(url); 
     setInterval(function() { 
      var url = "@(Html.Raw(Url.Action("ActionName", "ControllerName")))"; 
      $("#PartialViewDivId").load(url); 
     }, 30000); //Refreshes every 30 seconds 

     $.ajaxSetup({ cache: false }); //Turn off caching 
    }); 

Realiza una llamada inicial para cargar el div, y las llamadas posteriores se realizan en un intervalo de 30 segundos.

En la sección del controlador puede actualizar el objeto y pasar el objeto a la vista parcial.

public class ControllerName: Controller 
{ 
    public ActionResult ActionName() 
    { 
     . 
     . // code for update object 
     . 
     return PartialView("PartialViewName", updatedObject); 
    } 
} 
Cuestiones relacionadas