Y at-il une méthode de System.Web.UI.ClientScriptManager qui enregistre des scripts dans la balise ?

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

Question

Je sais qu'il est strictement OK pour mettre les balises <script> dans le corps, mais dans l'intérêt de neatness Je voudrais utiliser System.Web.UI.ClientScriptManager pour enregistrer un script dans la <head> de ma page. Y at-il une méthode pour y parvenir?

Merci d'avance.

Était-ce utile?

La solution

Dans ces cas, je l'habitude d'ajouter un ContentPlaceHolder dans la balise de ma page principale.

Sinon, je l'ai utilisé une méthode (habituellement dans une classe utilitaire ou classe PageBase) qui met la chaîne de script dans une liste et le stocke dans le contexte ASP.Net comme ceci:

            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;

Alors OnPreRender du MasterPage, il lit cette liste à partir du contexte et construit des balises dans l'en-tête.

            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);
            }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top