C# Ajax调用被缓存,尽管有适当的参数
我目前正在编写一个MVC应用程序。一切正常。我有一些功能,我使用Ajax调用填充引导模式框,但是新页面会被缓存,尽管我努力阻止了这一点 在我的主页上,我有以下actionhandler来填充模式框:C# Ajax调用被缓存,尽管有适当的参数,c#,jquery,ajax,asp.net-mvc,razor,C#,Jquery,Ajax,Asp.net Mvc,Razor,我目前正在编写一个MVC应用程序。一切正常。我有一些功能,我使用Ajax调用填充引导模式框,但是新页面会被缓存,尽管我努力阻止了这一点 在我的主页上,我有以下actionhandler来填充模式框: function setExtraPermsOrAtts(appID){ $.ajax({ cache:false, url: "/Group/_modifyAppPermissionsOfGroup?appID=" + appID
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中的结果视图有几个单选按钮,具体取决于数据库的内容。在这里,我使用razor语句来获取DB值:
bool valueOfRadButtons = BusinessLogic.Domain.GroupIS.getExistingGroupPermission(
Model.LoginGroupID, myItem.ApplicationPermissionID).LoginPermissionState;
有人知道我哪里出错了吗?是Ajax调用吗?控制器中的ActionResult方法?还是内联razor语句?我知道数据已正确保存,因为我看到在DB中,您可以指定响应不应像这样缓存:
Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
如果您创建自己的属性并使用它来修饰操作(如图所示),则会更简单。
缓存:false
在URL中添加一个伪时间戳参数,以“确保”请求是唯一的(且未缓存)。您可以将其更改为post
(从不缓存),或者更好地将缓存属性添加到\u modifyAppPermissionsOfGroup
服务器方法以停止任何缓存。e、 g.[OutputCacheAttribute(VaryByParam=“*”,Duration=0,NoStore=true)]
我在ActionResult方法中添加了OutputCacheAttribute注释,但这不起作用。valueOfRadButtons变量仍被缓存。