2012-01-27 18 views
10

De todos modos, hay que deshabilitar la memoria caché cuando se utiliza Ajax.ActionLink. Tengo problemas en IE, por lo que si elimino un elemento, que utiliza un enlace de acción ajax, luego vuelve a cargar la vista parcial que contiene el elemento, y el elemento vuelve a aparecer allí (incluso aunque se haya eliminado) En el otro navegador que funciona bien y según lo previstoASP.NET MVC - Prevenir la memoria caché en 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

Hola, Sí, me comento que lo que es la POST resolvió mi problema: http: //stackoverflow.com/questions/9031487/asp-net-mvc-prevent-cache-on-ajax-actionlinks?noredirect=1#comment11327530_9031542 – CallumVass

Respuesta

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

o añadir un parámetro aleatorio a la solicitud utilizando el argumento routeValues.

+0

Esto no funciona, lo he intentado, parece estar relacionado solo con IE – CallumVass

+0

@BiffBaffBoff, luego intente agregar un número aleatorio como un parámetro de cadena de consulta adicional al generar el enlace. –

+1

Lo resolví, utilicé HttpMethod = "POST" en AjaxOptions. Parece que ha hecho el truco – CallumVass

7

Sé que dijiste que lo resolviste usando HttpPost, pero en caso de que no termine siendo la solución preferida, esto funciona para mí;

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

Esto funciona para mí también. Gracias. – liquid

+0

Esto funciona para mí también en IE11 – user1929393

3

he resuelto mi problema mediante el uso de:

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