0

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

我需要从我的用户控件中引用 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);

但是,这最终会导致“无法修改控件集合,因为控件包含代码块” 问题是这些代码块位于我无法控制的母版页文件中。因此,此线程中建议的解决方法是不可能的。(例如:包装代码块<asp:placeholder ID="Placeholder1" runat="server">或替换<%=<%#

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

4

2 回答 2

1

您可以在头部添加一个 LiteralControl。

Page.Header.Controls.Add(new LiteralControl("<script src'...'></script"));
于 2013-01-21T18:41:08.587 回答
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"] + "\" />"));
于 2013-05-09T07:39:08.950 回答