1
我知道将<script>
标签放在正文中是绝对可以的,但为了整洁,我希望使用System.Web.UI.ClientScriptManager
在我的页面的<head>
中注册脚本。有没有一种方法可以实现这一点?是否有一个System.Web.UI.ClientScriptManager方法在<head>标记内注册脚本?
在此先感谢。
我知道将<script>
标签放在正文中是绝对可以的,但为了整洁,我希望使用System.Web.UI.ClientScriptManager
在我的页面的<head>
中注册脚本。有没有一种方法可以实现这一点?是否有一个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的MasterPage,它从上下文中读取这个列表并在标题中构建标签。
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);
}
感谢您的彻底解答。这种解决方法意味着我不能使用“IsClientScriptIncludeRegistered”...我想你可以继续添加网址到列表中,然后只注册唯一条目。 – 2010-01-27 13:10:47
正确。注意以下行: if(!javaScriptUrls.Contains(url.ToLower())) javaScriptUrls.Add(url); 在列表中保持唯一性 – hunter 2010-01-27 13:54:25