我有自定义控件,我想动态插入样式表的链接。
可能不是今年最好的解决方案,但需要完成。知道怎么做吗?
每次尝试时,Page.Header为空。
答案 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,您可以检查它是否已存在,因此请确保只添加一次。