我们正在使用jQuery UI对话框在ASP.Net MVC3中开发一个应用程序。
这是我们的通用对话框代码:
var $loading = $('<img src="' + srcLoadingImage + '" alt="loading">');
$(aElement).each(function () {
var $dialog = $(divTarget)
.append($loading.clone());
var $link = $(this).click(function () {
$dialog
.load($link.attr('href'))
.dialog({
modal: true,
title: $link.attr('title'),
width: 350,
height: 240
});
$link.click(function () {
$dialog.dialog('open');
return false;
});
return false;
});
});我们这样叫它..
$(document).ready(function () {
RTC.Utils.aDialog('#selectAccount', '<div class="span-9"></div>', '@Url.Content("~/Content/images/loading.gif")');
});我们遇到的问题是,在Firefox中,一切都运行得很好。但是在IE7中,控制器只有在你第一次访问它时才会被调用。在那之后,它似乎正在使用原始版本。
是否需要手动销毁对话框才能使IE7正常工作?我该怎么做,有什么建议吗?
-更新--
根据ammura的建议,我们删除了One(),但我们仍然有相同的问题。
我们还尝试在对话框的高度({但没有效果)之后添加close: function(ev,ui) { $(this).dialog("destroy");}。
谢谢,
沙恩
发布于 2011-02-17 07:35:23
您可以告诉jquery不要缓存ajax请求,如James H的答案所示。我从来不喜欢这样,因为jquery会将一个无意义的参数附加到GET请求中。对我来说,这感觉像是黑客,甚至可能是bug。
我发现将[OutputCache(Duration=0)]添加到有问题的操作中对我来说很有效。它强制对每个AJAX调用执行一个真正的GET。在我的例子中,我永远不希望这个调用被缓存,因为数据经常变化。
发布于 2011-02-17 07:32:03
您是否尝试过在jQuery ajax选项中禁用缓存?
$.ajaxSetup({cache: false}});
GET请求($dialog.load(..))任何浏览器都可以缓存,而Internet Explorer往往会这样做。
发布于 2011-02-17 07:27:20
如果只调用控制器一次,您引用的是$dialog.load($link.attr('href'))行,那么这是有意义的,因为您将它包装在一个one处理程序中。这将只执行一次,然后解除自身绑定,这样它就不会在后续调用中获取此内容。如果你引用的是对控制器的另一个调用,那么你可能需要发布更多的代码。
https://stackoverflow.com/questions/5023344
复制相似问题