sam*_*tin 20 c# asp.net-mvc asp.net-mvc-3
我正在使用MVC3 - 我有一个javascript函数,它使用jQuery get()从控制器获取PartialView.
问题在于它被缓存并且我一直在回收过时的内容.
我已经尝试了[OutputCache(Duration = 0)]的动作,认为它会阻止它缓存,但没有快乐.可能是客户端缓存它吗?
编辑:
我最近一直在使用另一种方法来防止缓存,这可能对某些人有用.
$.get("/someurl?_="+$.now(),function(data) {
// process data
});
Run Code Online (Sandbox Code Playgroud)
它显然不是那么干净,但因为每个请求都传递了一个_=12345678
(时间戳),所以它永远不会被缓存.
希望能帮助到你.
Dar*_*rov 21
浏览器可以自动缓存GET请求,因此您可以使用与该.ajax()
功能相反的.get()
功能,允许您禁用缓存:
$.ajax({
url: '/foo',
type: 'GET',
cache: 'false',
success: function(result) {
}
});
Run Code Online (Sandbox Code Playgroud)
另一种可能是使用POST:
$.post('/foo', function(result) {
});
Run Code Online (Sandbox Code Playgroud)
Jos*_*son 19
IE尤其糟糕.您可以使用以下命令禁用所有AJAX缓存:
$.ajaxSetup({
cache: false
});
Run Code Online (Sandbox Code Playgroud)
默认情况下,所有MVC 3部分视图似乎都会自动缓存,但您可以在控制器中为每个部分视图控制此操作,该部分视图在操作前面带有属性(或在Java中调用的注释)返回:
[OutputCache(Duration = 0)]
public ActionResult PersonEdit(string id)
{
// do query and fill editvm here
return PartialView("PersonEdit",editvm);
}
Run Code Online (Sandbox Code Playgroud)
所以持续时间设置为零.可能有许多其他属性可以设置为关闭缓存,但到目前为止,这似乎对我个人有用.
感谢你们两个,第一个仍然使用type ="GET"缓存,即使是缓存:'false'指定.那是使用chrome和本地IIS7.
我结束了
$.ajax({
url: '@Url.Action("GetMyPartialView","MyController")/' + parameterId,
type: 'POST',
cache: 'false',
success: function (result) {
$('#dynamicContentDiv').html(result);
}
});
Run Code Online (Sandbox Code Playgroud)
工作正常,谢谢你的回应.
归档时间: |
|
查看次数: |
14029 次 |
最近记录: |