2011-12-11 91 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

很高兴知道,谢谢! –