4 votes

DonutOutputCache ne vide pas le cache lors de l'utilisation d'une variable

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?

3voto

RaraituL Points 3042

J'ai trouvé la solution

Il semble que le paramètre ne peut pas contenir de lettres majuscules. Il s'agit d'un bogue connu qui sera corrigé.

Changez product_Id en product_id et cela fonctionnera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X