0

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

<% 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() 查询总是被调用,这意味着该操作没有被缓存。

知道我做错了什么吗?

谢谢!

4

2 回答 2

1

It's a child action meaning that it is only a part of the final HTML and cannot be cached. For caching fragments of your HTML checkout this blog post.

于 2010-08-26T15:51:18.267 回答
0

很简单,使用 OutputCacheAttribute。

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

保重,拉吉姆斯

于 2010-08-26T17:48:40.170 回答