هل هناك طريقة system.web.ui.clientscriptManager التي تسجل البرامج النصية داخل علامة ؟

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

سؤال

أعلم أنه من المقبول تمامًا وضعه <script> العلامات في الجسم ، ولكن في مصلحة أناقة أود استخدامها System.Web.UI.ClientScriptManager لتسجيل البرنامج النصي في <head> من صفحتي. هل هناك طريقة لإنجاز هذا؟

شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

في هذه الحالات ، عادةً ما أقوم بإضافة حامل ContentPlaceholder في علامة صفحتي الرئيسية.

بالتناوب ، لقد استخدمت طريقة (عادة في فئة فئة أو فئة pagebase) تضع سلسلة البرنامج النصي في قائمة وتخزينها في سياق ASP.NET مثل SO:

            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;

ثم OnPrerender of the Masterpage ، يقرأ هذه القائمة من السياق وتبني علامات في الرأس.

            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);
            }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top