ASP.NET中的相对路径

13
<head runat="server">
    <meta charset="UTF-8" />
    <title>Make Games with Scirra Software</title>
    <meta name="description" content="Game making with Construct." />
    <meta name="keywords" content="game maker, game builder, html5, create games, games creator" />
    <link rel="stylesheet" href="~/css/default.css" />
    <link rel="stylesheet" href="~/plugins/coin-slider/coin-slider-styles.css" />
    <link rel="shortcut icon" href="~/images/favicon.ico" />
    <link rel="apple-touch-icon" href="~/images/favicon_apple.png" />
    <script src="~/js/googleAnalytics.js"></script>
</head>

呈现为:

<head>
    <meta charset="UTF-8" />
    <title>Make Games with Scirra Software</title>
    <meta name="description" content="Game making with Construct." />
    <meta name="keywords" content="game maker, game builder, html5, create games, games creator" />
    <link rel="stylesheet" href="../css/default.css" />
    <link rel="stylesheet" href="../plugins/coin-slider/coin-slider-styles.css" />
    <link rel="shortcut icon" href="../images/favicon.ico" />
    <link rel="apple-touch-icon" href="../images/favicon_apple.png" />
    <script src="~/js/googleAnalytics.js"></script>
</head>
为什么JavaScript中的URL是~/而不是../
1个回答

23

实现确实很奇怪,但不幸的是这就是ASP.NET处理该问题的方式。以下是我为弥补此问题所做的操作:

<script src="<%=ResolveClientUrl("~/js/googleAnalytics.js")%>"></script>

6
您可能只需要使用ResolveUrl(),因为ResolveClientUrl会创建完整的URL,而不仅仅是相对路径。 - Forgotten Semicolon
谢谢,我尝试了这些东西的每种组合,但最好的解决方法是:<script src="/ScirraNew/js/googleAnalytics.js"></script>。我的网站在ScirraNew文件夹中,但它需要解析为../js/Googleanalytics.js! - Tom Gullen
<link id="Link1" runat="server" href="~/js/googleAnalytics.js" /> 这个可以正常工作,但是渲染成链接标签,唉 :( - Tom Gullen
@Tom Gullen - 你确定你在使用 ResolveClientUrl(而不是 ResolveUrl)吗?我相信前者创建 ../ 样式路径,而后者创建根相关路径。不过我现在会进行测试以确保。 - dana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接