2011-12-11 95 views
4

我使用的是來自Nuget的awesom MVCDonutCaching包,以緩存整個頁面,同時保留某些部分未緩存。這個過程很簡單,一切工作,因爲它應該:MVCDonutCaching - 父級未環形緩存時的子級操作問題

我緩存如下:

[DonutOutputCache(CacheProfile = "FiveMins")] 
public ActionResult Index() 
{ 
    return View(); 
} 

對於我的網頁,我不希望緩存的部分我做了以下內容:

@Html.Action("HeaderLinks","Home", true) 

這樣工作,它應該和實際上大部分的頁面被緩存,但我的標題鏈接 - 上下文敏感的鏈接顯示登錄按鈕,如果用戶沒有登錄,他們的用戶名,如果他們等 - 沒有被緩存。到目前爲止,一切正常

我遇到的問題是,標題鏈接屬於主/佈局頁面,並且全線使用 - 無論Action是否設置了DonutOutputCache屬性。當我創建另一個動作,我們稱之爲「關於我們」,沒有一個甜甜圈緩存屬性我沒有看到我的標題鏈接都

public ActionResult AboutUs() 
{ 
    return View(); 
} 

查看源代碼,我看到下面的

<!--Donut# 
<ActionSettings xmlns="http://schemas.datacontract.org/2004/07/DevTrends.MvcDonutCaching" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
<ActionName>HeaderLinks</ActionName> 
<ControllerName>Home</ControllerName> 
<RouteValues xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
<a:KeyValueOfstringanyType> 
<a:Key>Area</a:Key> 
<a:Value i:type="b:string" xmlns:b="http://www.w3.org/2001/XMLSchema"/> 
</a:KeyValueOfstringanyType> 
</RouteValues> 
</ActionSettings> 
#--> 

很明顯,在上面的例子中,由甜甜圈緩存庫生成 - 鏈接部分被一些註釋的XML替換。

我的問題簡而言之是:是否有可能使用此庫重複使用相同的子操作,而不管父操作是否使用甜甜圈緩存?

任何幫助,將不勝感激。

回答

4

當前,您需要將Html.Action與DonutOutputCache操作過濾器一起使用,才能獲得渲染的圓環孔。如果您在沒有使用DonutOutputCache的情況下使用Html.Action,則會看到上面列出的佔位符評論。

雖然這是一個疏忽,並將在下一個版本中解決。

請參閱http://mvcdonutcaching.codeplex.com/workitem/2388

+0

很高興知道,謝謝! –