هل هناك طريقة system.web.ui.clientscriptManager التي تسجل البرامج النصية داخل علامة ؟
-
23-09-2019 - |
سؤال
أعلم أنه من المقبول تمامًا وضعه <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);
}
لا تنتمي إلى StackOverflow