从ASP.NET服务器控件动态添加CSS文件

时间:2010-04-14 20:15:58

标签: asp.net css webforms

我有自定义控件,我想动态插入样式表的链接。

可能不是今年最好的解决方案,但需要完成。知道怎么做吗?

每次尝试时,Page.Header为空。

2 个答案:

答案 0 :(得分:19)

以下是通常以编程方式添加CSS的方法:

protected void Page_Init(object sender, EventArgs e)
{
    var link = new HtmlLink();
    link.Href = "~/styles/main.css";
    link.Attributes.Add("rel", "stylesheet");
    link.Attributes.Add("type", "text/css");
    Page.Header.Controls.Add(link);
}

您可能需要在runat="server"标记中添加head

<head runat="server">
    <title>Add CSS example</title>
</head>

答案 1 :(得分:8)

为了避免在将控件添加10次到页面时出现多个样式表的问题,请稍微更改上面的代码:

string styleSheet = "stylesheetName.css";
if (this.Page.Header.FindControl(styleSheet) == null)
{
    HtmlLink cssLink = new HtmlLink();
    cssLink.ID = styleSheet;
    cssLink.Href = "~/styles/" + styleSheet;
    cssLink.Attributes.Add("rel", "stylesheet");
    cssLink.Attributes.Add("type", "text/css");
    this.Page.Header.Controls.Add(cssLink);
}

通过为控件提供ID,您可以检查它是否已存在,因此请确保只添加一次。