2014-01-29 73 views
0

如果鏈接到當前頁面,瀏覽器不獲取頁面或鏈接不工作。在下面的代碼示例中,我有一個鏈接(在菜單中)。如果用戶當前處於GetData頁面,並且用戶再次單擊「獲取數據」鏈接,則什麼也不會發生。瀏覽器不會嘗試檢索頁面。我在IE8和Chrome開發人員工具中監控了這一點。任何想法?如果鏈接到當前頁面,瀏覽器不獲取頁面或鏈接不工作

//Link 
<a href="@Url.Action("GetData", "Data")"><i class="glyphicon glyphicon-tag"></i>Get Data</a> 

//Controller has a custom Authorization attribute 
[AuthorizeRedirect] 
public class DataController : Controller 

// Controller Action Invoked 
[HttpGet] 
public ActionResult GetData(int parameter) 
{ 
    ... 
} 

我從頭創建了一個測試Web應用程序,即使點擊指向當前加載的頁面的鏈接,頁面也會刷新。

我比較了來自應用程序和測試應用程序的兩個響應頭,並注意到緩存頭中的差異。

我的應用程序包含以下內容:

Cache-Control:no-cache, no-store 

雖然我的測試應用程序只包含以下內容:

Cache-Control:private 

附加信息:我使用的角度JS和引導客戶端。

+0

貌似這個問題是NG-電網相關。我創建了另一個控制器和相應的頁面,其角度爲js,沒有ng-grid,並且在單擊當前頁面的鏈接時刷新頁面。當我添加一個簡單的ng網格時,單擊該鏈接將不會執行任何操作。 – rro

回答

0

事情發生的原因是瀏覽器的緩存。清除瀏覽器緩存並重試。希望我會幫助

+0

我已經清除了多次瀏覽器緩存,並且發生了相同的行爲 – rro

0

如何在Application_PreSendRequestHeaders事件中設置標頭Global.asax

您可以通過手動設置標題中使用Response.Cache.SetCacheability,而不是直接設置標頭。*

void Application_PreSendRequestHeaders(Object sender, EventArgs e) 
{ 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
} 

替代方式。

void Application_PreSendRequestHeaders(Object sender, EventArgs e) 
{ 
    Response.Headers.Set("Cache-Control", "no-cache"); 
} 

如果你不想沒有緩存無處不在,那麼你可以嘗試這樣的事:

[OutputCache(Location = OutputCacheLocation.None)] 
public class HomeController : Controller 
{ 
... 
} 
+0

我已經完成了這兩項工作,但仍然無效。奇怪的是,在我的應用程序中,我創建了一個新的Controller(具有相同的類和動作級別屬性),添加了一個新頁面。但是在新的頁面/控制器上,如果點擊指向我當前所在頁面的鏈接,頁面就會刷新。 – rro

相關問題