ASP.NET MVC 2控制器没有缓存

时间:2010-08-26 15:49:41

标签: asp.net-mvc-2 caching controller renderaction

我有一个调用渲染操作的主页:

<% Html.RenderAction("CategoryList", "Category", new { selectedCategoryId = Model.selectedCategoryId });  %>

,动作如下:

[ChildActionOnly]
[OutputCache(Duration = 10, VaryByParam = "none")]
public ActionResult CategoryList(int? selectedCategoryId)
{

    CategoryList cl = CategoryManager.GetList();
    if (selectedCategoryId.HasValue)
        CategoryManager.SetSelectedCategory(cl, selectedCategoryId.Value);
    return PartialView(cl);
}

但是当我运行SQL分析器时,我发现总是调用GetList()查询,这意味着该动作没有被缓存。

知道我做错了吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

这是一个子动作,意味着它只是最终HTML的一部分,无法缓存。用于缓存HTML结帐的片段this blog post

答案 1 :(得分:0)

简单,使用OutputCacheAttribute。

[OutputCache(Duration=60, VaryByParam="None")]
public ActionResult CacheDemo() {
  return View();
}

小心,Ragims