尽管有适当的参数,Ajax调用仍会被缓存

时间:2015-05-19 08:18:58

标签: c# jquery ajax asp.net-mvc razor

我目前正在编写MVC C#应用程序。一切正常。我有一些功能,我使用Ajax调用填充Bootstrap模式框,但新页面被缓存,尽管我努力防止这种情况。

在我的主页面上,我有以下动作处理程序来填充模态框:

function setExtraPermsOrAtts(appID){
    $.ajax({
        cache:false,
        url: "/Group/_modifyAppPermissionsOfGroup?appID=" + appID            
    }).done(function (result) {
        $("#addApplicationBody").html(result);
        $('#modal-add-application').modal('show');
    });
}

这会被以下方法捕获:

    public ActionResult _modifyAppPermissionsOfGroup(int? appID = 0)
    {
        if (appID != 0)
        {
            ViewBag.selectedAppID = appID;
            Session["selectedGroupAppID"] = appID;
            ViewBag.modifyPermsLater = true;
        }
        Group group = (Group)Session["currentGroup"];
        return View(group);
    }

另一件可能相关的事情就是出现问题'。 Modalbox中生成的View有几个单选按钮,具体取决于数据库的内容。我在那里做了一个剃刀声明来获取DB值:

bool valueOfRadButtons = BusinessLogic.Domain.GroupIS.getExistingGroupPermission( 
                 Model.LoginGroupID, myItem.ApplicationPermissionID).LoginPermissionState;

有谁知道我哪里出错了?是Ajax电话吗? Controller中的ActionResult方法?还是内联剃须刀声明?我知道数据得到了正确保存,因为我在数据库中看到了

1 个答案:

答案 0 :(得分:0)

您可以指定不应缓存响应,如下所示:

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

如果您创建自己的属性并使用它here显示操作,则可以更加轻松。