3

我有一个 page1.aspx:

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

和 uc1.ascx 使用OutputCache

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

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

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

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

但是当 OutputCache 在 uc1.ascx 中时它不起作用。

4

1 回答 1

5

好的试试这个

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

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看到了这个解决方案

我对其进行了测试,它似乎可以工作,尽管在我调用它之后我必须再次刷新页面才能看到更新的控件内容。

于 2009-10-09T14:53:55.143 回答