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 に答える