Sometimes it is useful to register an external stylesheet file at runtime dynamically. For example, when we develop portals, this solution can helpful. Because a portal is a comprehensive web based application and a portal user must be able to implement its requirements.
I have a class in my portal that contains useful functions. The name of the class is Functions
. In this class, I have many functions that help impement my requirements in a portal. The register stylesheet function is as follows:
public static bool registerStyleSheetFileDynamic(string styleSheetFilePath, System.Web.UI.Page page)
{
styleSheetFilePath = page.ResolveClientUrl(styleSheetFilePath);
if (page != null)
{
System.Web.UI.HtmlControls.HtmlHead head = (System.Web.UI.HtmlControls.HtmlHead)page.Header;
bool isExistStyleSheet = false;
foreach (System.Web.UI.Control item in head.Controls)
{
if (item is System.Web.UI.HtmlControls.HtmlLink &&
((System.Web.UI.HtmlControls.HtmlLink)item).Attributes["href"] == styleSheetFilePath)
{
isExistStyleSheet = true;
}
}
if (!isExistStyleSheet)
{
System.Web.UI.HtmlControls.HtmlLink link = new System.Web.UI.HtmlControls.HtmlLink();
link.Attributes.Add("href", page.ResolveClientUrl(styleSheetFilePath));
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
head.Controls.Add(link);
}
return true;
}
return false;
}
In this case I can send my arbitrary page and path of stylesheet file to this method in any point in my portal page and so on. I hope the other parts are clear. Thanks!