2013-01-21 29 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集合不能被修改,因为该控件包含代码块(即<% ... %>)。“*** –