1

我有一個控制器,它要求在控制器稱爲GetTypes()方法除非通過URL調用,否則MVC3 outputcache不會緩存。正確?

[OutputCache(Duration = 6000)] 
public List<SelectListItem> GetTypes() 
{ 
    return Datetime.Now(); 
} 

爲什麼,如果我把它從我的控制器內從另一個操作方法這個方法不緩存?似乎只有當我把它直接使用URL或@Render ..

「本地主機的/ home/GetTypes」

回答

3

是的,這是它的工作方式緩存的方式,以及它應該工作。

原因是屬性不神奇地工作。有些東西必須檢查它們並根據它們做事。該代碼是處理請求時MVC正常管道的一部分。

當您直接調用該方法時,會繞過正常管道,因此屬性不會被評估和/或運行。

除此之外,只是簡單的常識應該告訴你緩存只適用於響應。如果沒有迴應(因爲你直接打電話),它不適用。

你應該做的是執行一個子動作。你會怎麼做,這取決於你在哪裏以及如何調用方法。所以,除非你向我們展示調用該方法的代碼(及其周圍環境),否則我無法幫助你進一步。

相關問題