2

我在 ASP.NET MVC 视图上有一个Wijmo 树。每个树节点的检查状态都保存在我的数据库中。加载树时,根据返回的数据对每个节点进行检查或取消检查。当调用树上的nodeCheckChanged时,我使用 ajax 在我的控制器上调用一个操作,该操作成功地更改了我的数据。

当我重新加载树视图时出现问题。数据已保存在数据库中,但浏览器没有从服务器获取最新数据。

我只在 IE 所有版本中遇到问题。Firefox 和 Chrome 每次都能正常工作。

我查看了DotNetPerls 的此类页面,Microsoft 的此类页面,并在stackoverflow 答案中尝试了选项四。

我发现在 IE 中获取最新数据的唯一方法是将选项“开发人员工具”->“缓存”->“始终从服务器刷新”设置为 true。

我需要做什么才能让 IE 像其他浏览器一样重新加载我的数据?

谢谢大家花时间阅读这个问题!

编辑

我的树的数据来自我模型上的集合。此集合由操作填充。

我的行动:

public ActionResult List(AssignedFolderListModel model)
{
    //Using EntityFramework
    model.TopLevelFolders = db.Folders;
    return PartialView(model);
}

我的模型:

public class AssignedFolderListModel
{
    public string UserId { get; set; }
    public IEnumerable<Folder> TopLevelFolders { get; set; }
    public Guid[] AssignedFolderIds { get; set; }
}

回答

我需要在我的 $.ajax 调用中添加“cache: false”。$.ajax 调用每次都对同一个 url 进行。例如。“已分配文件夹/列表?用户 ID=12345”。IE 没有再次调用,而是返回一个缓存的结果。

现在IE每次都被迫返回最新数据。

4

1 回答 1

5

IE 缓存所有获取 - 你需要对请求做一些事情来欺骗 IE 不缓存它。使用jQuery.ajax调用,您可以在调用中设置“cache: false”(它只是向请求的 URL 添加一个随机时间戳) - 在该树上查找有关执行此操作的配置选项,或者您可以在其中操作的钩子用于从服务器重新加载数据的 URL(并将您自己的时间戳添加到请求的 URL)。

于 2012-09-21T01:23:51.240 回答