0

JQuery Load イベントを使用してコントローラ メソッドを呼び出してデータを取得するアクションがあります。これは正常に機能し、ボタンをクリックすると、新しいコンテンツが返されます。ただし、3回目のクリックの後、データの取得が停止します。メソッドの先頭にブレークポイントを追加したところ、3 回ヒットしてからヒットしていないことに気付きました。これが私のjqueryコードです:

function callAction() {
    var url = '@Url.Action("Method", "Controller", new { type = "test" })';
    $("#divToLoadData").load(url);
}

私が言ったように、これはリンクをクリックしてその関数を呼び出すたびにデータをロードしますが、3回目の取得の後、メソッドの呼び出しとデータの取得に失敗します。$.ajax も使用してみましたが、同様の結果が得られました。

似たような人いますか??

4

1 に答える 1

0

GETブラウザを実行するためjQuery.load()、サーバーにアクセスする代わりに、リクエストの結果をキャッシュして提供する場合があります。コンテンツの有効期限ヘッダーを設定することで、ブラウザーに常にサーバーにリクエストを送信するように強制できます。この属性でアクションを飾ります:

public class NoCacheAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        if (filterContext.IsChildAction)
            return;

        filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
        filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
        filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        filterContext.HttpContext.Response.Cache.SetNoStore();

        base.OnResultExecuting(filterContext);
    }
}
于 2012-06-12T08:04:19.150 に答える