2012-01-27 17 views
10

Czy mimo to wyłączyć pamięć podręczną podczas korzystania Ajax.ActionLink. Mam problemy w IE, gdy usuwam element, który używa ajaxowego linku akcji, a następnie ponownie ładuje częściowy widok, który zawiera element, a element ponownie się tam pojawia (nawet, gdy został usunięty) W innych przeglądarkach to działa prawidłowo i zgodnie z przeznaczeniemASP.NET MVC - Prevent Cache na Ajax.ActionLinks

@Ajax.ActionLink("x", "RemoveItem", new { id = item.QuoteLineID, enquiryId = item.EnquiryID }, new AjaxOptions() 
    { 
     InsertionMode = InsertionMode.Replace, 
     UpdateTargetId = "Summary" 
    }, new { @class = "delete-link" }) 
+0

http://stackoverflow.com/a/16299281/2057154 – yusuf

+0

Cześć, Tak, powiedział, że czyni go POST rozwiązać mój problem: http: //stackoverflow.com/questions/9031487/asp-net-mvc-prevent-cache-on-ajax-actionlinks?noredirect=1#comment11327530_9031542 – CallumVass

Odpowiedz

12
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 
public ActionResult RemoveItem(int id, int enquiryId) 
{ 
    ... 
} 

lub dołączyć losowy parametr do wniosku, używając routeValues argument.

+0

Ta praca nie robi, próbowałem go, wydaje się być związane tylko IE – CallumVass

+0

@BiffBaffBoff, a następnie spróbuj dodać losową liczbę jako dodatkowy parametr ciągu zapytania podczas generowania linku. –

+1

Rozwiązałem go, użyłem HttpMethod = "POST" w AjaxOptions. Wydaje się, że zrobić trick – CallumVass

7

Wiem, mówiłeś rozwiązać go za pomocą HttpPost, ale tylko w przypadku, gdy nie skończyć się preferowanym rozwiązaniem, to działa na mnie;

public ActionResult MyAction(string param1) 
{ 
    Response.CacheControl = "no-cache"; 
    ... 
} 
+0

To również działa dla mnie. Dziękuję Ci. – liquid

+0

Ta praca jest dla mnie również w IE11 – user1929393

3

mi rozwiązać mój problem za pomocą:

<script type="text/javascript"> 
    $(document).ready(function() { 
     // Disable browser cache Ajax.ActionLinks 
     $.ajaxSetup({ cache: false }); 
    }); 
</script>