我有一个动作,它使用JQuery Load事件来调用控制器方法并检索数据,这很好用,我点击一个按钮,然后又回来了新内容。然而,在点击之后它停止获取数据。我在方法的顶部添加了一个断点,发现它被击中3次,然后没有被击中。这是我的jquery代码:
function callAction() {
var url = '@Url.Action("Method", "Controller", new { type = "test" })';
$("#divToLoadData").load(url);
}
正如我所说,这会加载数据,每次我点击一个链接来调用该函数,但在第三次检索后,它无法调用该方法并检索数据。我也试过使用$ .ajax,也有类似的结果。
有人遇到类似的事情吗?
答案 0 :(得分:0)
由于jQuery.load()
执行GET浏览器可能会缓存请求的结果并提供服务而不是命中服务器。您可以强制浏览器始终通过设置内容过期标头将请求发送到服务器。使用此属性装饰您的操作:
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);
}
}