2012-09-21 36 views
2

我在ASP.NET MVC视图上有Wijmo Tree。每个treenode的checkstate保存在我的数据库中。加载树时,根据返回的数据检查或取消选中每个节点。当调用树上的nodeCheckChanged时,我使用ajax在我的控制器上调用一个成功更改数据的操作。IE缓存从服务器返回的旧数据

问题出现在我重新加载treeview的时候。数据已保存在数据库中,但浏览器无法从服务器获取最新数据。

我只在IE所有版本中遇到问题。 Firefox和Chrome每次都在运行。

我已经看过来自DotNetPerls的this,来自微软的this这样的页面,并尝试使用this 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调用的URL都是相同的。例如。 “AssignedFolder /列表?用户ID = 12345”。 IE并没有再次打电话,而是返回一个缓存的结果。

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

回答

4

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

+0

这确实是我的问题的答案。我以前的评论是错误的。我需要为我的$ .ajax调用添加“cache:false”。每次调用$ .ajax调用的URL都是相同的。例如。 “AssignedFolder /列表?用户ID = 12345”。 IE并没有再次打电话,而是返回一个缓存的结果。 – Robert