10

我正在开发一个 C#/ASP.NET 项目,该项目在 /Javascript 文件夹中包含所有 javascript 文件。如果我使用以下语法引用 JS 文件: src="/Javascript/jsfile.js" 则如果项目部署到 URL 的根目录,则该文件被正确拾取。

但是,如果此“网站”部署到主 url 的子文件夹,这将不起作用。因此,解决方案可能是使用相对 url——但这也存在问题,因为母版页引用了许多 javascript 文件,并且这些母版页可以被根中的页面和子文件夹中的许多级别使用。

有没有人有解决这个问题的想法?

4

5 回答 5

12

如果您在 "runat=server" 部分中引用 JS 文件,则可以编写 src="~/Javascript/jsfile.js" 并且它将始终有效。

您也可以在 Page_Load 中执行此操作(在您的母版页中):

Page.ClientScript.RegisterClientScriptInclude("myJsFile", Page.ResolveClientUrl("~/Javascript/jsfile.js"))
于 2008-09-04T05:36:24.107 回答
4

在母版页中尝试这样的事情:

<script type="text/javascript" src="<%= Response.ApplyAppPathModifier("~/javascript/globaljs.aspx") %>"></script>

无论出于何种原因,我发现浏览器对最终标签非常挑剔,因此仅以 /> 结束标签似乎不起作用。

于 2008-09-04T06:35:18.613 回答
4

全新版本的 ASP.NET ( 3.5 SP1 ) 有一个名为CompositeScript的漂亮特性。这允许您使用ScriptManager在服务器端引用大量微小的 .js 文件,并将它们作为单个 .js 文件传递​​给客户端。

对客户端有好处,因为它只需要下载一个文件。对您有好处,因为您可以在服务器端随心所欲地维护文件。

<asp:ScriptManager ID="ScriptManager1" 
    EnablePartialRendering="True"
    runat="server">
    <Scripts>
        <asp:ScriptReference 
            Assembly="SampleControl" 
            Name="SampleControl.UpdatePanelAnimation.js" />
    </Scripts>
</asp:ScriptManager>
于 2008-09-04T13:16:13.907 回答
0

@Jared:IE 需要那个 /script 。FF不在乎。

于 2008-09-04T07:32:36.260 回答
0

您可能想看看FileResolver。它是一个 HTTP 处理程序,允许您执行以下操作:

<link rel="stylesheet" href="~/resources/stylesheet.css.ashx" />

并正确展开波浪号(以及文件中的任何波浪号)。

于 2008-11-04T17:15:12.630 回答