如何在asp.Net中的脚本标记上使用runat =“server”

时间:2010-08-18 18:52:15

标签: asp.net relative-path script-tag runatserver

我不一定需要在服务器上运行它,但是,我想使用~/js/somefile.js语法。

以前,我刚用绝对路径设置所有内容,并将我的项目设置为根级别。所以,我只是声明我所有的样式表,背景图片和javascript文件,如/css/somefile.css

但是,对于此项目,它不以root身份运行。

我无法将runat="server"放在脚本标记上。

我可以把它放在链接标签上。

这一定是一个常见问题,只有一些简单的答案。

5 个答案:

答案 0 :(得分:20)

我一直在做的是使用普通的script代码并将src放入<% %>代码中,如图here所示:

<script language="javascript" src='<%=ResolveUrl("~/App_Themes/MainTheme/jquery.js")%>' type='text/javascript'></script>

答案 1 :(得分:11)

您可以使用ScriptManager:

<asp:ScriptManager ID="ScriptManager1" runat="server">
        <Scripts>
            <asp:ScriptReference Path="~/js/somefile.js" />
        </Scripts>
</asp:ScriptManager>

答案 2 :(得分:3)

但是,您可以使用路径字符串中的函数,例如

<script type="text/javascript"
        src="<%=Url.Content("~/Scripts/jquery-1.4.2.min.js") %>"></script>

然而,这是本地路径的ASP.NET MVC语法 - 我不记得我头顶的表单版本。

答案 3 :(得分:2)

使用 asp:ContentPlaceHolder 包装脚本标记,可以完全满足您的需求 并且您可以从后面的代码访问它,例如,通过将可见属性设置为 true false 来执行或不执行set。 这是一个例子:

    <asp:ContentPlaceHolder runat="server" ID="PrintPreviewBlock" Visible="false">
    <script id="PrintPageCall" type="text/javascript" >
        $(function() {
            window.print();
        });
    </script>
</asp:ContentPlaceHolder>

并从后面的代码:

PrintPreviewBlock.Visible = true;

答案 4 :(得分:1)

取自dailycoding.com

<script language="javascript" src="<%=ResolveUrl("~/[PATH]")%>" type="text/javascript"></script>