我知道<script>在正文中放置标签是完全可以的,但为了整洁,我想在我的页面System.Web.UI.ClientScriptManager中注册一个脚本。<head>有没有办法做到这一点?
提前致谢。
我知道<script>在正文中放置标签是完全可以的,但为了整洁,我想在我的页面System.Web.UI.ClientScriptManager中注册一个脚本。<head>有没有办法做到这一点?
提前致谢。
在这些情况下,我通常在我的母版页的标签中添加一个 ContentPlaceHolder。
或者,我使用了一种方法(通常在实用程序类或 PageBase 类中)将脚本字符串放入 List 并将其存储在 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;
然后是 MasterPage 的 OnPreRender,它从 Context 中读取这个 List 并在 header 中构建标签。
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);
}