Esiste un metodo System.Web.UI.ClientScriptManager che registra gli script all'interno del tag ?

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

Domanda

Lo so che è strettamente OK di mettere tag <script> nel corpo, ma nell'interesse di pulizia mi piacerebbe usare System.Web.UI.ClientScriptManager per registrare uno script nella <head> della mia pagina. Esiste un metodo per ottenere questo risultato?

Grazie in anticipo.

È stato utile?

Soluzione

In questi casi di solito aggiungere un ContentPlaceHolder nel tag del mio Maestro pagina.

In alternativa ho usato un metodo (di solito in una classe di utilità o di classe PageBase) che mette la stringa script in una lista e lo memorizza nel contesto ASP.Net in questo modo:

            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;

Poi OnPreRender del MasterPage, si legge questo elenco dal contesto e costruisce tag nell'intestazione.

            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);
            }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top