ASP.NET MVC 2 контроллер не кэшируется - PullRequest
0 голосов
/ 26 августа 2010

У меня есть страница мастера, которая вызывает действие рендера:

<% 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 profiler, я вижу, что запрос GetList () всегда вызывается, то есть действие не кэшируется.

Есть идеи, что я делаю не так?

Спасибо!

Ответы [ 2 ]

1 голос
/ 26 августа 2010

Это дочернее действие, означающее, что оно является только частью окончательного HTML-кода и не может быть кэшировано. Для кэширования фрагментов вашей HTML-проверки это сообщение в блоге .

0 голосов
/ 26 августа 2010

легко, используйте OutputCacheAttribute.

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

Берегите себя, Рагимс

...