2011-02-26 2 views
5

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

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?

+0

Еще пара ссылок: http://stackoverflow.com/a/7530265/63733, http://thenullreference.com/blog/fixing-the-asp -net-mvc-3-outputcacheattribute-for-partial-views-to-honor-some-web-config-settings /, http://stackoverflow.com/a/7117242/63733 – marapet

ответ

5

Вы пробовали, используя свойства, такие как VaryBy VaryByParam or VaryByCustom

+1

Похоже, что это единственный способ не используйте полномасштабную повторную реализацию. – marapet

+0

Баунти награждается этим ответом - давайте не будем тратить точку репутации ... – marapet