2010-07-30 6 views
1

J'ai un basecontroller qui s'assure que les pages expirent afin que le bouton de retour affiche une page Web a expiré. Ceci est fait comme ceci: [OutputCache (NoStore = true, Durée = 0, VaryByParam = "none")]Comment remplacer OutputCache de basecontroller en action?

Cependant, je veux avoir le comportement par défaut où je peux retourner d'une action sur un contrôleur qui hérite de la base. Il semble que peu importe l'attribut OutputCache de l'action, il affiche toujours "Webpage has expired". Toutes les idées maintenant je peux le mettre en cache sur cette seule action?

Répondre

1

trouvé un moyen de contourner par handeling lorsque l'en-tête de nostore sans utiliser les attributs OutputCache

HttpContext.Current.Response.Cache.SetNoStore();

Est-ce que le travail ..

0

Apparemment, vous pouvez définir la [OutputCache] attribut sur une méthode dans la classe dérivée, et ceci surpassera l'attribut sur la classe de base.

[OutputCache(NoStore = true, 
      Duration = 0, 
      VaryByParam = "*")] 
public abstract class BaseController : Controller 
{ 
    // no cache by default 
} 

public class MyController : BaseController 
{ 
    [OutputCache(NoStore = false, 
       Duration = 60, 
       VaryByParam = "searchText", 
       Location = OutputCacheLocation.Any)] 
    public PartialViewResult Test(string searchText) 
    { 
     // this method cached ok 
    }   
} 

D'après les tests, cela semble fonctionner.

Questions connexes