¿Hay un método System.Web.UI.ClientScriptManager que registra las secuencias de comandos dentro de la etiqueta ?

StackOverflow https://stackoverflow.com/questions/2146092

Pregunta

Sé que es estrictamente OK para poner etiquetas <script> en el cuerpo, pero en aras de la pulcritud me gustaría uso System.Web.UI.ClientScriptManager registrar un script en el <head> de mi página. ¿Hay un método para lograr esto?

Gracias de antemano.

¿Fue útil?

Solución

En estos casos, por lo general añadir un ContentPlaceHolder en la etiqueta de mi página maestra.

Como alternativa He utilizado un método (por lo general en una clase de utilidad o una clase de PageBase) que pone la cadena de secuencia de comandos en una lista y lo almacena en el contexto ASP.Net así:

            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;

A continuación, OnPreRender del MasterPage, se lee la lista del Contexto y construye las etiquetas en la cabecera.

            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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top