2013-01-21 28 views
0

我知道這已被問到,但我有一個比其他相關問題更復雜的問題。用戶控件引用樣式表/腳本

我需要從我的usercontrol引用CSS和JS。

參考文獻必須在<head>標記內呈現。出於這個原因,我不能使用ScriptManager.RegisterClientScriptBlock

其他解決方案,我發現:

HtmlLink link = new HtmlLink(); 
    link.Href = "/path/style.css"; 
    link.Attributes["type"] = "text/css"; 
    link.Attributes["rel"] = "stylesheet"; 
    Page.Header.Controls.Add(link); 

然而,這結束了「Controls集合不能修改,因爲該控件包含代碼塊」 的問題是這些代碼塊位於主頁面文件中,我無法控制。因此,在this thread中建議的解決方法是不可能的。 (如:包代碼塊<asp:placeholder ID="Placeholder1" runat="server"><%#

因此,考慮上述限制更換<%=,纔有可能把<link href='path' /><script src='path' /><head>標籤由用戶控制

回答

0

解決方案,爲我工作:

嵌套母版頁,並添加佔位符嵌套Master頁面,然後加入立即控制的建議通過Jon:

stylePlaceholder = ((PlaceHolder)((ContentPlaceHolder)Page.Master.Master.FindControl("HeadSection")).FindControl("phd_ControlsStyles")); 

stylePlaceholder.Controls.Add(new LiteralControl(css + " href=\"http://" + cdn + "/Utils/Bundle/" + getCss() + ".css?v=" + settings["subVersion"] + "\" />")); 
1

你可以一個LiteralControl添加到頭?

Page.Header.Controls.Add(new LiteralControl("<script src'...'></script")); 
+1

仍然產生相同的錯誤:***「Controls集合不能被修改,因爲該控件包含代碼塊(即<% ... %>)。「*** –