我有一个ASP.net主页。在这个大师中,我定义了所有的CSS和javascript文件。我也有一些图像,一些按钮和超链接。

所有的URL都被声明为相对的,即“/scripts/ian.js”

如果此站点是根网站,则一切正常,但是我需要它在虚拟目录中工作。

我的问题是,当我将该网站放置在根站点下的虚拟目录中时,我所有的链接都指向该根站点。所以我的链接指向www.root.com/scripts/ian.js,但它应该指向www.root.com/virtualDir/scripts/ian.js

我以为 header 中的Base Href标签会有所帮助,但到目前为止,它似乎仍然无济于事。当我将鼠标悬停在所有链接上时,所有链接仍指向根网站。

我想要的是IIS或配置文件中的一个设置,我可以设置一个根URL,并且母版页或内容页上的任何图像,脚本或链接都将指向正确的位置。

欢迎任何建议或想法。

谢谢

最佳答案



这些似乎是您正在使用的绝对URL,而不是相对URL,这可能就是<base />标记未达到预期效果的原因:



-来自http://www.w3.org/TR/html401/struct/links.html#h-12.4

您可以尝试从网址中删除开头的“/”,看看是否可行?

失败的话,我倾向于使用ResolveClientUrl来解决这样的问题,您将以与其他人建议的相同方式使用ResolveUrl:

<script type="text/javascript" src="<%= ResolveClientUrl("~/path/to/js") %>"></script>
...
<img src="<%= ResolveClientUrl("~/path/to/img") %>" alt="..." />

希望这可以帮助。

10-05 20:53