Атрибут outputcache дочернего действия MVC 4 не работает со значением VaryByParam
Разве невозможно кэшировать вывод дочернего действия в зависимости от значения запроса?
public class HomeController : Controller
{
public ActionResult About()
{
ViewBag.Message = DateTime.Now.ToLongTimeString();
return View();
}
[OutputCache(Duration = 20, VaryByParam = "id")]
public ActionResult PartialViewTestAbout()
{
ViewBag.Second = DateTime.Now.Second;
return View();
}
}
About.cshtml
<hgroup class="title">
<h1>@ViewBag.Title.</h1>
<h2>@ViewBag.Message</h2>
</hgroup>
@Html.Action("PartialViewTestAbout")
.
.
.
PartialViewTestAbout.cshtml:
----------
<p>
This is a partial view About.
<h1 style="color:red;">@ViewBag.Message</h1>
@ViewBag.Second
</p>
это работает хорошо, без изменений. Но мне нужно обновить PartialViewAboutTest в зависимости от параметра. Если я положил OutPutCache в About ActionREsult с VaryByParam работает. Но с дочерним действием, которое в этом примере является PartailViewTestAbout, оно не работает, я изменяю запрос, но не жду длительности кеша, чтобы обновить страницу...
1 ответ
Решение
Ответ - отсутствующий параметр id, который не передается в PartialViewTestAbout..
[OutputCache(Duration = 20, VaryByParam = "id")]
public ActionResult PartialViewTestAbout(int id)
это работает хорошо.
спасибо Cem LEGOZ..:)