用户控件引用样式表/脚本

时间:2013-01-21 17:27:30

标签: c# asp.net user-controls

我知道有人问这个问题,但我的问题比其他相关问题更复杂。

我需要从我的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);

然而,最终会出现 “控件集合无法修改,因为控件包含代码块” 问题是那些代码块位于母版页文件中,我无法控制。因此this thread中建议的变通办法是不可能的。 (例如:在<asp:placeholder ID="Placeholder1" runat="server">中包裹代码块或用<%=替换<%#

因此,考虑到上述限制,是否可以将<link href='path' /><script src='path' />置于用户控件的<head>标记内?

2 个答案:

答案 0 :(得分:1)

您可以在头部添加LiteralControl。

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

答案 1 :(得分:0)

对我有用的解决方案:

嵌套母版页,并将占位符添加到嵌套母版页,然后按照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"] + "\" />"));