表单加载时jquery ui对话框缓存

Joh*_*ore 1 jquery jquery-ui-dialog razor asp.net-mvc-3

使用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>
Run Code Online (Sandbox Code Playgroud)

注意open()表单调用控制器方法.它返回一个PartialView,看起来像这样......

public virtual ActionResult FileUpload(){return new PartialViewResult(); }

我遇到的问题是IE正在缓存对局部视图的调用.如果我更新局部视图,那么在我清除浏览器缓存之前它不会加载.

我在close()和.remove()上尝试了'destroy'方法.都没有效果.我还确认每次单击#button2时都会调用open().

关于如何保持对话框内容不被缓存的任何想法?

Jak*_*sel 5

您可以将其添加到全局js代码中,以防止IE缓存ajax请求:

$.ajaxSetup({ cache: false });
Run Code Online (Sandbox Code Playgroud)