J'ai un ActionResult que je veux mettre en cache en fonction de l'identifiant
[DonutOutputCache(Duration = 3600, VaryByParam = "product_Id")]
public ActionResult ProductInfo(Guid product_Id)
{
System.Threading.Thread.Sleep(3000);
return PartialView(_repository.GetProductInfo(product_Id));
}
Cela fonctionne bien.
Quand je veux supprimer le cache, j'utilise cette syntaxe
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SaveDetails(DetailsModel model)
{
try
{
// enregistrer l'action ici, puis supprimer le cache
var cacheManager = new OutputCacheManager();
cacheManager.RemoveItem("Common", "ProductInfo", new { product_Id = model.Product_Id });
return Json(new { hasError = false }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { hasError = true, message = ex.Message }, JsonRequestBehavior.AllowGet);
}
}
OutputCacheManager().RemoveItem ne fonctionne pas lorsque je spécifie un paramètre.
Cela fonctionne si j'utilise simplement
cacheManager.RemoveItem("Common", "ProductInfo");
Qu'est-ce que je fais de travers?