从 MVC 5 中的 OutPutCache 中删除 ChildAction?
Remove ChildAction from OutPutCache in MVC 5?
我正在使用 MVC 5.2.3 开发一个网站,它在 _Layout.cshtml
中有一个顶部菜单栏,其中包含已登录的用户信息。像用户的全名,所以它不应该被缓存。
为了从 OutPutCache 中排除此菜单,我为其创建了一个子操作。
[ChildActionOnly]
public PartialViewResult TopMenu()
{
return PartialView("~/Views/Partials/TopMenuPartial.cshtml");
}
之后,我安装了 MvcDonutCaching
nuget 包并在 _Layout.cshtml
中使用它,如下所示:
@Html.Action("TopMenu", "Home", true)
但是,它不起作用,如果有人登录,它的全名会出现在所有客户端的顶部菜单栏中。
我应该如何从 MVC 中删除此子操作 OutPutCache
我发现了问题,
我没有将 DonutOutputCache
属性用于操作的输出缓存,而是使用 OutPutCache
。
我改成DonutOutputCache
,在Application_Start
中加入如下设置
protected void Application_Start()
{
...
DevTrends.MvcDonutCaching.OutputCache.DefaultOptions = DevTrends.MvcDonutCaching.OutputCacheOptions.ReplaceDonutsInChildActions;
...
}
现在,我的问题解决了。
我正在使用 MVC 5.2.3 开发一个网站,它在 _Layout.cshtml
中有一个顶部菜单栏,其中包含已登录的用户信息。像用户的全名,所以它不应该被缓存。
为了从 OutPutCache 中排除此菜单,我为其创建了一个子操作。
[ChildActionOnly]
public PartialViewResult TopMenu()
{
return PartialView("~/Views/Partials/TopMenuPartial.cshtml");
}
之后,我安装了 MvcDonutCaching
nuget 包并在 _Layout.cshtml
中使用它,如下所示:
@Html.Action("TopMenu", "Home", true)
但是,它不起作用,如果有人登录,它的全名会出现在所有客户端的顶部菜单栏中。
我应该如何从 MVC 中删除此子操作 OutPutCache
我发现了问题,
我没有将 DonutOutputCache
属性用于操作的输出缓存,而是使用 OutPutCache
。
我改成DonutOutputCache
,在Application_Start
protected void Application_Start()
{
...
DevTrends.MvcDonutCaching.OutputCache.DefaultOptions = DevTrends.MvcDonutCaching.OutputCacheOptions.ReplaceDonutsInChildActions;
...
}
现在,我的问题解决了。