كيف يمكنني استخدام Runat = "Server" على علامة البرنامج النصي في ASP.NET

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

سؤال

لا أحتاج بالضرورة إلى تشغيله على الخادم ، ومع ذلك ، أود استخدام ~/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> 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top