Dynamisch CSS-Files laden mit Asp.Net

In einem CMS wie DotNetNuke kann es vorkommen, dass man dynamisch ein neues Css hinzuladen will. Das geht wie folgt:

HtmlLink cssLink = new HtmlLink();
cssLink.Href = cssUrl;
cssLink.ClientIDMode = ClientIDMode.Static;
cssLink.ID = key;
cssLink.Attributes.Add("rel", "stylesheet");
cssLink.Attributes.Add("type", "text/css");
page.Header.Controls.AddAt(page.Header.Controls.Count, cssLink);

Wenn man jetzt verhindern will, dass das Script und vor allem das Control mehrmals geladen wird, könnte man mit Page.Header.FindControl  operieren. Dies funktioniert allerdings nicht. Eine einfache oder zumindest funktionierende Methode ist folgende:

if (HttpContext.Current.Items[key] == null)
{
    HtmlLink cssLink = new HtmlLink();
    cssLink.Href = cssUrl;
    cssLink.ClientIDMode = ClientIDMode.Static;
    cssLink.ID = key;
    cssLink.Attributes.Add("type", "text/css");
    page.Header.Controls.AddAt(page.Header.Controls.Count, cssLink);
    HttpContext.Current.Items[key] = true;
}

Im Request-Cache wird markiert, dass das CSS bereits geladen wurde. Die Idee habe ich von stackoverflow.com

Kommentar schreiben