System.Web.UI.ClientScriptManager方法は、タグ内のレジスタスクリプトことがありますか?

StackOverflow https://stackoverflow.com/questions/2146092

質問

私はそれが体内で<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);
            }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top