有没有一种方法System.Web.UI.ClientScriptManager的标签内部寄存器脚本?
-
23-09-2019 - |
题
我知道这是严格确定把<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);
}
不隶属于 StackOverflow