3

page1.aspx があります。

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

と uc1.ascx を使用OutputCache:

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

別の page2.aspx のボタンをクリックしOutputCacheて uc1.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 に答える