كيف يمكنني استخدام Runat = "Server" على علامة البرنامج النصي في ASP.NET
-
29-09-2019 - |
سؤال
لا أحتاج بالضرورة إلى تشغيله على الخادم ، ومع ذلك ، أود استخدام ~/js/somefile.js
بناء الجملة.
في السابق ، كنت قد وضعت كل شيء فقط مع مسارات مطلقة ووضعت مشروعي ليكون على مستوى الجذر. لذا ، سأعلن فقط جميع أوراق الأنماط وصور الخلفية و JavaScript ملفات شيء مثل /css/somefile.css
ومع ذلك ، لهذا المشروع ، لا يعمل الجذر.
لا أستطيع أن أضع runat="server"
على علامة البرنامج النصي.
يمكنني وضعها على علامة ارتباط ، رغم ذلك.
يجب أن تكون هذه مشكلة شائعة مع بعض الإجابات البسيطة.
المحلول
ما قمت به دائمًا هو استخدام طبيعي script
وضع علامة ووضع src
في <% %>
العلامات ، كما هو موضح هنا:
<script language="javascript" src='<%=ResolveUrl("~/App_Themes/MainTheme/jquery.js")%>' type='text/javascript'></script>
نصائح أخرى
يمكنك استخدام ScriptManager لهذا:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/js/somefile.js" />
</Scripts>
</asp:ScriptManager>
يمكنك استخدام وظائف داخل سلسلة المسار ، على سبيل المثال
<script type="text/javascript"
src="<%=Url.Content("~/Scripts/jquery-1.4.2.min.js") %>"></script>
ومع ذلك ، هذا هو بناء جملة ASP.NET MVC للمسارات المحلية - لا أستطيع تذكر إصدار النماذج من أعلى رأسي.
يمكنك الحصول على ما تريده بالكامل عن طريق لف علامة البرنامج النصي مع ASP: ContentPlaceholderويمكنك الوصول إليه من الكود خلفه ، على سبيل المثال سيتم تنفيذه أم لا عن طريق الإعداد مرئي خاصية ل حقيقي أو خاطئة. هذا هو المثال:
<asp:ContentPlaceHolder runat="server" ID="PrintPreviewBlock" Visible="false">
<script id="PrintPageCall" type="text/javascript" >
$(function() {
window.print();
});
</script>
</asp:ContentPlaceHolder>
ومن الكود وراء:
PrintPreviewBlock.Visible = true;
مأخوذ من DailyCoding.com:
<script language="javascript" src="<%=ResolveUrl("~/[PATH]")%>" type="text/javascript"></script>