2009-10-09 7 views
3

J'ai un page1.aspx:Comment supprimer OutputCache par programme pour ascx?

<%@ Register src="uc1.ascx" tagname="UcHead" tagprefix="uc1" %> 

et uc1.ascx en utilisant la OutputCache:

<%@ OutputCache Duration="18000" VaryByParam="*" %> 

Comment puis-je cliquer sur un bouton dans un autre page2.aspx pour enlever OutputCache pour uc1.ascx ou page1.aspx?

Lorsque le OutputCache est page1.aspx, je peux utiliser le code suivant pour supprimer le OutputCache:

string url = "/page1.aspx"; 
HttpResponse.RemoveOutputCacheItem(url); 

Mais il ne fonctionne pas lorsque le OutputCache est en uc1.ascx.

Répondre

5

Ok essayez cette

la charge de la page de votre vente de contrôle de l'utilisateur:

HttpRuntime.Cache.Insert("myCacheKey", DateTime.Now); 

BasePartialCachingControl pcc = Parent as BasePartialCachingControl; 
pcc.Dependency = new CacheDependency(null, new string[]{"myCacheKey"}); 

Modifier la clé de tout ce que vous voulez qu'il soit pour votre contrôle.

Puis dans le code de l'événement que vous voulez effacer la vente du cache:

Cache.Insert("myCacheKey", DateTime.Now); 

J'ai vu cette solution à http://dotnetslackers.com/ASP_NET/re-63091_ASP_NET_clear_user_control_output_cache.aspx

Je l'ai testé et il semble fonctionner, même si je n'ai pour actualiser la page une fois de plus après que j'appelle ceci comme pour voir le contenu de contrôle mis à jour.

+0

Cela fonctionne quand le OutputCache est dans page1.aspx. Mais cela ne fonctionne pas lorsque le OutputCache est dans uc1.ascx. – Mike108

+0

J'ai mis à jour ma réponse, voir si cela fonctionne. Je n'avais jamais essayé de sortir les commandes de l'utilisateur du cache auparavant, donc je suis intéressé par la façon de le faire aussi bien. –

+0

C'est génial! Merci beaucoup! Et ma petite astuce: le code devrait être placé à la fin de la page_load de UC après la liaison gridview, sinon un gridview ne rafraîchit pas outputcache correctement. – Mike108

Questions connexes