Asp.net mvc 3 未使用OutputCache属性缓存MVC 3子操作

Asp.net mvc 3 未使用OutputCache属性缓存MVC 3子操作,asp.net-mvc-3,outputcache,Asp.net Mvc 3,Outputcache,未缓存我的子操作。我不知道为什么 “我的母版页”调用子操作: @Html.Action("Header", "Layout", new { selectedMarket = Model.SelectedMarket }) [ChildActionOnly] [OutputCache(Duration=60)] public PartialViewResult Header(Guid selectedMarket) { var model = _m

未缓存我的子操作。我不知道为什么

“我的母版页”调用子操作:

@Html.Action("Header", "Layout", new { selectedMarket = Model.SelectedMarket })

    [ChildActionOnly]
    [OutputCache(Duration=60)]
    public PartialViewResult Header(Guid selectedMarket)
    {
        var model = _marketService.GetHeaderViewModel(selectedMarket);
        return PartialView(model);
    }
执行此子操作,并在每次请求时重新呈现分部


注意:我可以使用OutputCache成功缓存整个页面。只是圆环孔缓存对我不起作用。

尝试以下方式设置OutputCacheAttribute:

[OutputCache(Duration=3660, VaryByParam="selectedMarket")]

这将为每个selectedMarket创建一个单独的缓存(我想这就是您所需要的)。如果有帮助,请告诉我。

尝试以下方式设置OutputCacheAttribute:

[OutputCache(Duration=3660, VaryByParam="selectedMarket")]

这将为每个selectedMarket创建一个单独的缓存(我想这就是您所需要的)。如果有帮助,请告诉我。

您如何呈现子动作?您如何呈现子动作?最终,是的。我试图先让简单的案例工作起来,然后再增加复杂性。我按照您的建议添加了VaryByParam,但是我的子操作和视图仍然会针对每个请求执行。显然,它会根据路由值自动变化。在我的测试中,为每个请求随机选择selectedMarket guid。当我开始使用一致的真实市场图形界面时,它如预期的那样工作。最终,是的。我试图先让简单的案例工作起来,然后再增加复杂性。我按照您的建议添加了VaryByParam,但是我的子操作和视图仍然会针对每个请求执行。显然,它会根据路由值自动变化。在我的测试中,为每个请求随机选择selectedMarket guid。当我开始使用一致的真实市场guid时,它就像预期的那样工作。