Вы можете использовать адаптер управления, чтобы аккуратно внедрить это поведение на страницу следующим образом:
public class PageAdapter : System.Web.UI.Adapters.PageAdapter
{
protected override void OnPreRender(System.EventArgs e)
{
foreach (var link in Page.Header.Controls.OfType<HtmlLink>().ToList())
if (link.Attributes["type"].Equals("text/css", StringComparison.OrdinalIgnoreCase))
if (link.Attributes["href"].Contains("/App_Themes/{0}/".Fill(Page.Theme), StringComparison.OrdinalIgnoreCase))
/* process link */
base.OnPreRender(e);
}
}
Вы можете подключить его, сохранив следующее в виде *. Browser файла в папке App_Browsers :
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page"
adapterType="PageAdapter" />
</controlAdapters>
</browser>
</browsers>
В целом, я думаю, Адаптеры управления представляют собой мощный AOP-подобный механизм для введения поведения в жизненные циклы управления / страницы; они почти полностью игнорируются в пользу традиционного подкласса.