我有一个page1.aspx:

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


和uc1.ascx使用OutputCache

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


如何单击另一个page2.aspx中的按钮以删除uc1.ascx或page1.aspx的OutputCache

当OutputCache位于page1.aspx中时,我可以使用以下代码删除OutputCache:

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


但是,当OutputCache位于uc1.ascx中时,它将不起作用。

最佳答案

好的,试试这个

在用户控件的页面加载中:

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

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


将密钥更改为您希望用于控制的任何内容。

然后在要清除缓存的事件代码中放入:

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


我在http://dotnetslackers.com/ASP_NET/re-63091_ASP_NET_clear_user_control_output_cache.aspx看到了这个解决方案

我对其进行了测试,并且似乎可以正常运行,尽管在调用此控件后确实必须再次刷新页面才能查看更新后的控件内容。

关于asp.net - 如何以编程方式为ascx删除OutputCache?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1544162/

10-09 09:08