我有一個自定義控件,我想動態地插入到樣式表的鏈接。從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