ASP.NET MVC - предотвращение кэширования на Ajax.ActionLinks - PullRequest
10 голосов
/ 27 января 2012

Есть ли в любом случае отключить кеш при использовании Ajax.ActionLink. У меня возникают проблемы в IE, в результате чего, если я удаляю элемент, который использует ajax actionlink, он затем перезагружает частичное представление, в котором содержится элемент, и элемент снова появляется там (даже если он был удален) В других браузерах работает нормально и как задумано

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

Ответы [ 3 ]

12 голосов
/ 27 января 2012
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult RemoveItem(int id, int enquiryId)
{
    ...
}

или добавить случайный параметр к запросу, используя аргумент routeValues.

7 голосов
/ 27 января 2012

Я знаю, что вы сказали, что решили это с помощью HttpPost, но на всякий случай это не является предпочтительным решением, это работает для меня;

public ActionResult MyAction(string param1)
{
     Response.CacheControl = "no-cache";
     ...
}
3 голосов
/ 13 июля 2015

Я решил свою проблему с помощью:

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