使用ASP.NET MVC3 (Razor),我有一个简单的页面来加载jQuery UI对话框。
@{
ViewBag.Title = "Home Page";
}
<h2>yo</h2>
<div id="fileUpload">
</div>
<button id="button2">
Upload file
</button>
<script type="text/javascript">
$(document).ready(function () {
$('#button2').click(function () {
$fileUpload = $('#fileUpload');
$fileUpload.dialog({
minWidth: 500,
minHeight: 100,
title: 'Upload File(s)',
autoOpen: true,
buttons: {
'Upload': function () {
$('form').submit();
},
'Cancel': function () {
$(this).dialog('close');
}
},
open: function (event, ui) {
$(this).load('@Url.Action(MVC.FileUpload.FileUpload())');
},
close: function (event, ui) {
$(this).dialog('destroy');
//$(this).remove();
},
dialogClass: 'no-close',
closeText: '',
modal: true
});
});
});
</script>注意open()表单调用一个控制器方法。它返回一个PartialView,看起来像这样.
公共虚拟ActionResult FileUpload() {返回新的PartialViewResult();}
我遇到的问题是IE缓存对部分视图的调用。如果更新部分视图,则在清除浏览器缓存之前它不会加载。
我已经在close()和.remove()上尝试了“破坏”方法。两者都没有效果。我还确认,每次单击# time 2时都会调用open()。
关于如何防止对话框内容被缓存,有什么想法吗?
发布于 2011-11-15 02:22:15
您可以将其添加到全局js代码中,以防止IE缓存ajax请求:
$.ajaxSetup({ cache: false });发布于 2011-11-15 07:01:43
你可以替换:
$(this).load('@Url.Action(MVC.FileUpload.FileUpload())');通过以下方式:
$.ajax({
url: '@Url.Action(MVC.FileUpload.FileUpload())',
cache: false,
context: this,
success: function(result) {
$(this).html(result);
}
});发布于 2011-11-15 02:20:07
将属性NoCache添加到控制器操作中,以解决此问题。这种情况只发生在IE中。
https://stackoverflow.com/questions/8130681
复制相似问题