2

我目前正在創建一個MVC應用程序,它基本上只是一個大的數據庫內容的CRUD工具。 對於用於限制某些選擇的小表(國家,類別等),我創建了1頁加載請求的表,並允許用戶僅使用Ajax調用來添加/刪除/編輯屬性。MVC - 部分視圖不斷顯示相同的內容

加載頁面後,用戶將獲取包含所有表名的下拉列表。提交時,將觸發以下代碼:

public PartialViewResult OpenConfig(string SelectID) 
{ 
    using (DBconnection db = new DBconnection()) 
    { 
     switch (SelectID) 
     { 
      case "---": 
       return null; 
      case "1": 
       var countries = (from x in db.tbl_CountriesSet select x).ToList(); 
       return PartialView("Countries", countries); 
      case "2": 
       var supplierstatus = (from x in db.tbl_SupplierStatusSet select x).ToList(); 
       return PartialView("Supplierstatus", supplierstatus); 
      case "3": ..... 
     } 
    } 
} 

這裏是它變得有趣的地方。假設我打開國家窗口,它加載正確,我可以添加/編輯/刪除一個國家。這些條目使用jQuery在頁面上更新,同時使用Ajax調用來更新數據庫。這兩項工作都很好,數據庫已更新並且頁面已更新。我可以繼續工作,並且所有更改都反映在頁面和數據庫中,問題在重新加載部分視圖時開始。

當我在下拉列表中選擇國家值並重新提交時,程序會跳過上面顯示的方法,並顯示我第一次請求列表時顯示的同一部分視圖。 我在方法中設置了一個斷點,如果我加載了一些我沒有加載的東西之前,它被觸發,但不是我已經請求的網頁。 在Firefox中,它可以正常工作並更新部分視圖(並且會觸發斷點),但在Internet Explorer中,我的控制器完全被忽略,並且它始終顯示相同的頁面(即使當我轉到完全不同的頁面時,回到設置頁面)。

任何人都可以告訴我如何告訴IE顯式地重新加載包含當前數據庫內容的部分視圖?

回答

2

這是瀏覽器緩存的作品。它會返回緩存的結果。

使用添加當前日期值,URL允許加載從Web服務器的新成果:

$('#container').load("http://mysite/myview/?" + new Date().getTime(), function() { }); 
+0

優雅的解決方案,以一個惱人的問題,謝謝! :) – Flater

0

在你的控制器功能之上,嘗試:

[OutputCache(Duration = 0)]