【发布时间】:2011-02-08 02:27:14
【问题描述】:
我有一个自定义控件,我想动态插入指向样式表的链接。
可能不是今年最好的解决方案,但需要完成。知道怎么做吗?
每次我尝试,Page.Header 都是空的。
【问题讨论】:
-
您在页面生命周期的哪个时间点尝试访问 Page.Header?
我有一个自定义控件,我想动态插入指向样式表的链接。
可能不是今年最好的解决方案,但需要完成。知道怎么做吗?
每次我尝试,Page.Header 都是空的。
【问题讨论】:
以下是通常以编程方式添加 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);
}
您可能需要在head 标记中添加runat="server":
<head runat="server">
<title>Add CSS example</title>
</head>
【讨论】:
为避免页面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,您可以检查它是否已经存在,因此确保您只添加一次。
【讨论】: