2011-02-26 25 views
5

estoy tratando de tomar ventaja de las características de almacenamiento en caché de rosquilla en .Net MVC 3. Por mi página de Inicio, en mi controlador de casa, tengo:Cómo quitar OutputCache en ChildAction?

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

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

que mi punto de vista, que tengo:

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

Todo esto funciona bien. Sin embargo, cuando cambian los datos, que corren:

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

El RemoveOutputCacheItem ejecuta sin error, pero el caché ChildAction no se invalida. ¿Hay alguna forma de eliminar mediante programación un elemento de caché de un ChildAction?

+0

un par de enlaces: 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

Respuesta

5

¿Ha intentado utilizar las propiedades VaryBy como VaryByParam or VaryByCustom

+1

Parece que esta es la única forma de ir sin usar una reimplementación en toda regla. – marapet

+0

Bounty otorgado a esta respuesta: no desperdiciemos puntos de reputación ... – marapet

Cuestiones relacionadas