Pergunta

Eu sei que é estritamente bom colocar <script> tags no corpo, mas no interesse da limpeza, eu gostaria de usar System.Web.UI.ClientScriptManager Para registrar um script no <head> da minha página. Existe um método para conseguir isso?

Desde já, obrigado.

Foi útil?

Solução

Nesses casos, geralmente adiciono um detentor de conteúdo na tag da minha página mestre.

Como alternativa, usei um método (geralmente em uma classe de utilitário ou classe de página de página) que coloca a sequência de script em uma lista e a armazena no contexto do ASP.NET como assim:

            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;

Em seguida, o OnPrender of the Masterpage, ele lê esta lista do contexto e cria tags no cabeçalho.

            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);
            }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top