10
votes

ASP.NET MVC - Empêcher le cache sur Ajax.ActionLiens

est là quand même pour désactiver le cache lors de l'utilisation de Ajax.ActionLink. Je rencontre des problèmes dans IE, si je retire un élément, qui utilise une action Ajax ActionLink, il recharge ensuite la vue partielle que l'élément est contenu et l'élément re-apparaît là-bas (même que cela a été supprimé) Sur les autres navigateurs, cela fonctionne bien et comme prévu

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


2 commentaires

Stackoverflow.com/a/16299281/2057154


Salut, oui, j'ai commenté que la création de post résolu mon problème: Stackoverflow.com/Questtions/9031487/...


3 Réponses :


12
votes
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult RemoveItem(int id, int enquiryId)
{
    ...
}
or append a random parameter to the request using the routeValues argument.

5 commentaires

Cela ne fonctionne pas, je l'ai essayé, semble être lié à juste à dire


@Biffbafboff, puis essayez d'ajouter un numéro aléatoire sous forme de paramètre de chaîne de requête supplémentaire lors de la génération du lien.


J'ai résolu, j'ai utilisé httpmethod = "post" dans les ajaxoptions. Il semble avoir fait l'affaire


Je me demande si on doit ajouter cette crosse à chaque action Ajax maintenant, pour résoudre le problème ...


@Darindimitrov j'ai utilisé ceci, mais cela ne fonctionne pas sur Windows Safari 5.1.7 et Mac Safari également. Pouvez-vous m'aider s'il vous plaît.



7
votes

Je sais que vous avez dit que vous l'avez résolu à l'aide de httpport, mais au cas où cela ne finit pas la solution préférée, cela fonctionne pour moi;

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


0 commentaires

3
votes

J'ai résolu mon problème en utilisant:

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


0 commentaires