Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 是否有System.Web.UI.ClientScriptManager方法在<;头>;标签?_Asp.net_Javascript_Clientscriptmanager - Fatal编程技术网

Asp.net 是否有System.Web.UI.ClientScriptManager方法在<;头>;标签?

Asp.net 是否有System.Web.UI.ClientScriptManager方法在<;头>;标签?,asp.net,javascript,clientscriptmanager,Asp.net,Javascript,Clientscriptmanager,我知道在正文中放置标记是完全可以的,但是为了整洁起见,我想使用System.Web.UI.ClientScriptManager在我的页面的中注册脚本。有没有办法做到这一点 提前感谢。在这种情况下,我通常会在母版页的标签中添加一个ContentPlaceHolder 或者,我使用了一种方法(通常在实用程序类或PageBase类中),将脚本字符串放入列表并存储在ASP.Net上下文中,如下所示: List<string> javaScriptUrls = new

我知道在正文中放置
标记是完全可以的,但是为了整洁起见,我想使用
System.Web.UI.ClientScriptManager
在我的页面的
中注册脚本。有没有办法做到这一点


提前感谢。

在这种情况下,我通常会在母版页的标签中添加一个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;
List javaScriptUrls=new List();
url=url.ToLower();
javaScriptUrls=Context.Items[JS_KEY]作为列表;
if(javaScriptUrls==null)
{
javaScriptUrls=新列表();
添加(url);
}
其他的
{
如果(!javaScriptUrls.Contains(url))
添加(url);
}
Context.Items[JS_KEY]=javaScriptUrls;
然后在母版页的prerender上,它从上下文中读取此列表,并在标题中构建标记

            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);
            }
List\u javaScript=Context.Items[JS\u KEY]作为列表;
foreach(javaScript中的字符串js)
{
HtmlGenericControl脚本=新的HtmlGenericControl();
script.TagName=“script”;
添加(“type”、“text/javascript”);
if(js.StartsWith(“~/”)
Add(“src”,head.ResolveUrl(js));
其他的
添加(“src”,js);
head.Controls.Add(脚本);
AddHeaderLineBreak(head);
}

感谢您的详尽回答。此解决方法意味着我不能使用“IsClientScriptIncludeRegistered”。。。我想您可以继续将URL添加到列表中,然后只注册唯一的条目。正确。注意这一行:if(!javaScriptUrls.Contains(url.ToLower()))javaScriptUrls.Add(url);保持列表中的唯一性