How to remove OutputCache on ChildAction?
Asked Answered
I

2

5

I am trying to take advantage of the donut caching features in .Net MVC 3. For my Home page, in my home controller, I have:

public ActionResult Index()
{
    return View();
}

[ChildActionOnly]
[OutputCache(Duration=3600)]
public ActionResult IndexMain()
{
    return PartialView(ViewModelRepository.GetIndexViewModel());
}

I my view, I have:

<% Html.RenderAction("IndexMain");%>

This all works fine. However, when the data changes, I run:

var urlToRemove = Url.Action("IndexMain", "Home");
Response.RemoveOutputCacheItem(urlToRemove);

The RemoveOutputCacheItem executes without an error, but the ChildAction cache is not invalidated. Is there a way to programmatically remove a cache item from a ChildAction?

Impaste answered 26/2, 2011 at 12:0 Comment(1)
G
5

Have you tried using the VaryBy properties such as VaryByParam or VaryByCustom

Grussing answered 5/3, 2012 at 13:23 Comment(1)
Looks like this is the only way to go without using a full-blown reimplementation.Labradorite
A
2

There's a NuGet package to address this specific problem. This explains the problem and their solution:

http://www.devtrends.co.uk/blog/donut-output-caching-in-asp.net-mvc-3

Allysonalma answered 27/3, 2013 at 1:5 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.