【问题标题】:How to set the root path for asp.net application如何设置asp.net应用程序的根路径
【发布时间】:2012-04-06 15:52:46
【问题描述】:

我有一个包含位于多个文件夹中的页面的 asp.net 应用程序。我的 .js 文件也在一个“JS”文件夹中,并且我在母版页的头部添加了它们的引用,例如:

<script  type="text/javascript" src="JS/jquery.min.js"></script>  

现在,当我在主页上时,脚本可以正常加载。但是当我在另一个文件夹(例如物理)中存在的其他页面上时,路径被附加,因此我收到错误:

加载资源失败:服务器响应状态为 404 (未找到)

我的图像路径和&lt;a&gt; 标签也发生了类似的事情。

现在我想给出与根路径相关的路径,例如:

~/JS/VerticalMenu.js

但是这个~ 并没有把我带到我的应用程序的根目录。我是否需要设置~ 应该指向的位置?如果是,那么在哪里以及如何?

【问题讨论】:

  • 是我在 head 中添加脚本的方式
  • 尝试在JS之前使用斜线,例如:&lt;script type="text/javascript" src="/JS/VerticalMenu.js"&gt;&lt;/script&gt;

标签: asp.net root


【解决方案1】:

@Charlie Kilian 的答案是一个可行的解决方案,但是您也可以在 html 页面的头部通过 base tag 为页面中的所有相对 URL 指定一个基本 URL。

<head>
    <base href="http://www.yourdomain.com/anyvirtualdirectory/" />
</head>

【讨论】:

  • 我忘记了&lt;base&gt; 标签。这也是一个很好的解决方案。
【解决方案2】:

试试这个:

<script type="text/javascript" 
    src="<%=Page.ResolveUrl("~/JS/VerticalMenu.js")%>"></script>

【讨论】:

  • 听起来像是 Javascript 文件的问题。那可能是一个单独的问题。
【解决方案3】:

如果是ASP.NET应用,可以通过路径前缀~/来访问root:

<script src="~/common/scripts/safeguard.common.js" type="text/javascript"></script>  

您也可以尝试在路径前加上 /:

<script src="/common/scripts/safeguard.common.js" type="text/javascript"></script>

【讨论】:

  • 如果应用程序位于虚拟文件夹中,例如http://www.mysite.com/MyApp/,则此方法不起作用。
  • 我相信~/ 应该解析到应用程序的根目录,即使它位于虚拟目录中。
  • 没有。 ~/ 不工作。路径被附加如下:localhost:50089/Tutorial_Pages/Physics/~/JS/VerticalMenu.js
  • 这是ASP.NET Web Site Project 还是ASP.NET Web Application Project?有一个重要的区别。
  • 它是一个 asp.net 网络应用程序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 2011-01-30
  • 2023-03-14
  • 1970-01-01
  • 2015-06-25
相关资源
最近更新 更多