我知道有人问这个问题,但我的问题比其他相关问题更复杂。
我需要从我的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>
标记内?
答案 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"] + "\" />"));