Как удалить OutputCache на ChildAction? - PullRequest
5 голосов
/ 26 февраля 2011

Я пытаюсь воспользоваться функциями кэширования пончиков в .Net MVC 3. Для моей домашней страницы в домашнем контроллере у меня есть:

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

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

На мой взгляд, у меня есть:

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

Это все отлично работает. Однако, когда данные меняются, я запускаю:

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

RemoveOutputCacheItem выполняется без ошибок, но кэш ChildAction не становится недействительным. Есть ли способ программно удалить элемент кэша из ChildAction?

Ответы [ 2 ]

5 голосов
/ 05 марта 2012

Вы пытались использовать свойства VaryBy, например VaryByParam или VaryByCustom

2 голосов
/ 27 марта 2013

Существует пакет NuGet для решения этой конкретной проблемы. Это объясняет проблему и их решение:

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

...