2012-01-27 14 views
10

Ajax.ActionLinkを使用するときにキャッシュを無効にする方法はありますか。私はIEで問題があります。それで、ajaxアクションリンクを使用するアイテムを削除すると、そのアイテムが含まれている部分ビューがリロードされ、そのアイテムがそこに再び表示されます(削除されたとしても) 他のブラウザでは罰金とASP.NET MVC - 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

こんにちは、ええ、私はそれがPOSTは私の問題を解決することとコメント: //stackoverflow.com/questions/9031487/asp-net-mvc-prevent-cache-on-ajax-actionlinks?noredirect=1#comment11327530_9031542 – CallumVass

答えて

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

またはrouteValues引数を使用して要求にランダムなパラメータを追加することを目的として動作します。

+0

これは機能しません。試してみましたが、ちょうどIEに関連するようです。 – CallumVass

+0

@BiffBaffBoffを作成し、リンクを生成する際に追加のクエリ文字列パラメータとして乱数を追加してみてください。 –

+1

私はそれを解決しました、私はHttpMethod = "POST"をAjaxOptionsで使用しました。このトリックを完了したと思われる – CallumVass

7

私はあなたがHttpPostを使って解決したと言いますが、それが好ましい解決策に終わらない場合に備えて、私にとってはうまくいきます。

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

これは私のためにも機能します。ありがとうございました。 – liquid

+0

私のためのこの仕事はIE11でも – user1929393

3

私が使用して私の問題を解決します。http:

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