我知道这是严格确定把<script>标签在身,但在整洁的利益,我想利用System.Web.UI.ClientScriptManager在我的网页<head>注册一个脚本。有没有办法做到这一点的方法?

预先感谢。

有帮助吗?

解决方案

在这种情况下,我通常在我的母版页的标签添加的ContentPlaceHolder。

可替换地,我使用的方法(通常在一个工具类或PageBase类),该放在一个列表,并将其存储在ASP.Net语境像这样的脚本字符串:

            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