2011-07-28 4 views
6

J'ai besoin d'un rafraîchissement périodique de la vue partielle de .Net. Il fonctionne avec Ajax.ActionLink, existe-t-il une fonctionnalité similaire pour l'actualisation périodique? Puis-je le faire sans utiliser jQuery?Régulièrement Actualiser une vue partielle (ASP.Net MVC)

+0

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

+0

Vous pouvez mettre cela dans le de votre html: raym0nd

+0

Est-il possible de se passer de js? –

Répondre

9

Zen, vous pouvez le faire par un code comme ceci:

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

}); 

Rappelez-vous votre action devrait retourner un PartialView. J'espère que cela vous aide!

+0

Je cherchais non jQuery mais de toute façon, merci (+1). –

+0

Cela a fonctionné pour moi dans Chrome et Firefox, mais pas dans IE 9 (ne pas pris la peine d'essayer les autres IE), mais pour l'instant, c'est assez bon. +1 – Yetti

2

Peut-être this peut vous aider. Quelle version de MVC utilisez-vous? Vous pouvez définir un intervalle de temps spécifié pour une méthode d'assistance. C'est la seule façon que j'ai vu sans utiliser js.

+0

J'utilise MVC 2, VS 2010 –

+0

Vous pourriez avoir du mal à utiliser cette méthode ensuite. Mais c'est la seule façon que j'ai vu de le faire sans utiliser js, tout le reste est lié à js. –

+1

En fait, il utilise js mais js est juste intégré. –

0

Essayez ceci.

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

Il effectue un appel initial pour charger la div, puis les appels suivants sont effectués sur un intervalle de 30 secondes.

Dans la section du contrôleur, vous pouvez mettre à jour l'objet et passer l'objet à la vue partielle.

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