Атрибут 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>

он работает хорошо без VaribyParam. Но мне нужно обновить PartialViewAboutTest в зависимости от параметра. Если я поставлю OutPutCache в About ActionRESult с VaryByParam, он будет работать. Но с дочерним действием, которое в этом примере является PartailViewTestAbout, оно не работает, я изменяю запрос, но не жду, пока продолжительность кеша будет долго обновлять страницу...


person Erhan    schedule 29.08.2013    source источник


Ответы (1)


ответ: отсутствующий параметр id, который не проходит в PartialViewTestAbout..

[OutputCache(Duration = 20, VaryByParam = "id")]

public ActionResult PartialViewTestAbout(int id)

это работает хорошо.

спасибо Cem ​​LEGOZ.. :)

person Erhan    schedule 02.09.2013