我有一个自定义控件,我想动态地插入到样式表的链接。从ASP.NET服务器控件动态添加CSS文件
可能不是今年的最佳解决方案,但它需要完成。任何想法如何做到这一点?
每当我尝试,Page.Header为空。
我有一个自定义控件,我想动态地插入到样式表的链接。从ASP.NET服务器控件动态添加CSS文件
可能不是今年的最佳解决方案,但它需要完成。任何想法如何做到这一点?
每当我尝试,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);
}
你可能需要把runat="server"
在head
标签:
<head runat="server">
<title>Add CSS example</title>
</head>
明白了。我在主页面的标题标记中缺少Runat =“Server”。 :) 谢谢! – 2010-04-14 20:23:41
如果您在页面上添加了10次控制,那么这不会成为问题吗?然后CSS文件将被链接10次。 – Peter 2011-05-24 13:48:16
@Peter,是的,我想这会有问题。 – 2011-05-24 14:01:45
为了避免多个样式表的问题,加入时控制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,你可以检查它是否已经存在,所以确保你只添加一次。
在页面生命周期的哪个阶段您尝试访问Page.Header? – 2010-04-14 20:18:33