2012-09-21 41 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