Gibt es eine System.Web.UI.ClientScriptManager Methode, dass die Register Skripte innerhalb des -Tag?

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

Frage

Ich weiß, es ist streng OK <script> Tags im Körper zu setzen, aber im Interesse der Ordentlichkeit möchte ich Verwendung System.Web.UI.ClientScriptManager wie ein Skript im <head> meiner Seite zu registrieren. Gibt es eine Methode, dies zu erreichen?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

In diesen Fällen, die ich in der Regel ein Content im Tag meines Master-Seite hinzuzufügen.

Als Alternative habe ich eine Methode (in der Regel in einer Utility-Klasse oder PageBase Klasse) verwendet, das bringt das Skript Zeichenfolge in einer Liste und speichert sie in der ASP.Net-Kontext wie folgt:

            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;

Dann OnPreRender der Masterpage, es liest diese Liste aus dem Kontext und baut Tags im Header.

            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);
            }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top