Каждый атрибут OutputCache может обрабатываться программно, как показано здесь: Как кэшировать в ASP.NET с помощью Visual C # .NET
Есть ли способ удалить (илидобавить) директива в коде позади?
Не то, что я видел до сих пор, но не исключаю возможность.Тем не менее вам не придется этого делать, поскольку в вашем распоряжении есть Response.Cache для вашего сценария, который дает вам целых десять ярдов для игры.
Хотя, если вы используете ASP.NET MVC, вы можете использовать его в качестве атрибутов, как показано здесь: OutputCacheAttribute Class ([OutputCache (CacheProfile = "MyProfile", Duration = 10)]).Здесь также есть пример переполнения стека здесь .
Какой наилучший способ сделать это?
Использование Response.Cache .Проверьте код ниже.
using System.Web;
//......
//......
//......
if (someCondition)
{
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public); //Location="Any"
HttpContext.Current.Response.Cache.SetExpires(DateTime.Now.AddSeconds(1800)); //Duration="1800"
HttpContext.Current.Response.Cache.SetValidUntilExpires(true);
}