【发布时间】:2020-01-18 08:40:47
【问题描述】:
我在标有[ChildActionOnly] 的控制器中有以下操作:
[OutputCache(Duration = 3600)]
public PartialViewResult SideNavigation()
{
SideNavigationModel model = _sideNavigationFactory.GetSideNavigation();
if (model != null)
{
return PartialView(model);
}
return default(PartialViewResult);
}
当我调用它时效果很好:
@Html.Action("SideNavigation", "Template")
在我的主模板中。但是我注意到,当我更新侧面导航的 cshtml 文件时,即使在 web.config 中禁用了输出缓存,它也不会在网页上更新:
<outputCache enableOutputCache="false">
如果我更改打开的主模板,该模板会更新,但模板的导航部分不会。这是预期的行为吗?如果是这样,是否有办法仅在启用输出缓存时才输出缓存?
【问题讨论】:
-
您可以使用 outputCacheProfiles :docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/…
-
@LaurentLequenne 无法在仅限儿童的操作中使用个人资料:stackoverflow.com/questions/4728958/…
-
好的,如果您查看该问题的其他答案,则表示您可以使用自定义属性。我没有尝试子动作,但它在控制器上运行良好......
-
这有同样的问题 - 不注意 web.config 中的禁用。自定义属性所做的只是从缓存配置文件中分配值
-
但是在您的自定义属性中,您可以读取配置中的禁用值并应用或不应用缓存:-)
标签: c# asp.net-mvc outputcache