System.Web.UI.ClientScriptManager方法は、タグ内のレジスタスクリプトことがありますか?
-
23-09-2019 - |
質問
私はそれが体内で<script>
タグを入れて、厳密OKだけど、清楚の利益のために私は私のページのSystem.Web.UI.ClientScriptManager
でスクリプトを登録する<head>
を使用したいと思います。これを達成する方法はありますか?
事前に感謝します。
解決
これらのケースでは、私は通常私のマスターページのタグ内のContentPlaceHolderを追加します。
代わりに、私はしましたが、プット一覧でスクリプト文字列などのようなASP.Netコンテキストに保存すること(通常、ユーティリティクラスまたはPageBaseクラスの)メソッドを使用します:
List<string> javaScriptUrls = new List<string>();
url = url.ToLower();
javaScriptUrls = Context.Items[JS_KEY] as List<string>;
if (javaScriptUrls == null)
{
javaScriptUrls = new List<string>();
javaScriptUrls.Add(url);
}
else
{
if (!javaScriptUrls.Contains(url))
javaScriptUrls.Add(url);
}
Context.Items[JS_KEY] = javaScriptUrls;
次に、マスターページのOnPreRender、それは文脈からこのリストを読み取り、ヘッダ内のタグを作成します。
List<string> _javaScript = Context.Items[JS_KEY] as List<string>;
foreach (string js in _javaScript)
{
HtmlGenericControl script = new HtmlGenericControl();
script.TagName = "script";
script.Attributes.Add("type", "text/javascript");
if (js.StartsWith("~/"))
script.Attributes.Add("src", head.ResolveUrl(js));
else
script.Attributes.Add("src", js);
head.Controls.Add(script);
AddHeaderLineBreak(head);
}
所属していません StackOverflow