2011-07-28 15 views
6

Potrzebuję okresowego odświeżania widoku częściowego .Net. Współpracuje z Ajax.ActionLink, czy istnieje podobna funkcja do okresowego odświeżania? Czy mogę to zrobić bez użycia jQuery?Okresowe odświeżanie częściowego widoku (ASP.Net MVC)

+0

check to http://stackoverflow.com/questions/3167116/asp-net-mvc-refresh-table-data-every-5-seconds – raym0nd

+0

Można umieścić to w kodu HTML: raym0nd

+0

Czy można obejść się bez js? –

Odpowiedz

9

Zen, można to zrobić za pomocą kodu:

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

}); 

Zapamiętaj swoje działanie powinien zwrócić PartialView. Mam nadzieję, że ci to pomoże!

+0

Szukałem non jQuery, ale tak czy inaczej, dzięki (+1). –

+0

To działało dla mnie w przeglądarce Chrome i Firefox, ale nie w IE 9 (nie próbowałem innych IE), ale na razie to wystarczy. +1 – Yetti

2

Może this może ci pomóc. Z której wersji MVC korzystasz? Możesz ustawić określony przedział czasu dla metody pomocnika. Jest to jedyny sposób, jaki widziałem bez użycia js.

+0

Używam MVC 2, VS 2010 –

+0

Możesz mieć problemy z używaniem tej metody. Ale jest to jedyny sposób, w jaki widziałem, aby wykonać to bez użycia js, wszystko inne jest powiązane z js. –

+1

W rzeczywistości używa js, ale js jest po prostu osadzone. –

0

Spróbuj tego.

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

Wykonuje pierwsze wywołanie do załadowania elementu div, a następnie kolejne wywołania mają 30 sekundowy interwał.

W sekcji kontrolera można zaktualizować obiekt i przekazać obiekt do widoku częściowego.

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