как удалить OutputCache программно для ascx? - PullRequest
3 голосов
/ 09 октября 2009

У меня есть 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.

1 Ответ

5 голосов
/ 09 октября 2009

Хорошо, попробуйте это

На страницу загрузки вашего пользовательского элемента управления положено:

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

Я проверил это, и оно, кажется, работает, хотя мне нужно обновить страницу еще раз после того, как я это назвал, чтобы увидеть обновленный контрольный контент.

...