链接前缀“〜/”和“/”之间有所不同

时间:2011-05-23 06:30:36

标签: asp.net hyperlink prefix

有时我们需要将/或〜/作为后缀,以便引用根

<script type="text/javascript" src="/scripts/jquery-1.5.1.min.js"></script>
<link href="~/Styles/MasterPage.css" rel="stylesheet" type="text/css" />

这是我从Phill那里得知的。

除非你的控件/元素上有runat属性,否则

〜/无效。 '/'本身指定浏览器从根目录查找,因此如果您从www.mysite.com/product/view.aspx链接到'/css/main.css',它将在www中查找css文件.mysite.com / CSS / main.css的。当你对runat-server使用'〜/'时,它将在运行时计算出目录的路径,所以在'〜/ css / main.css'的同一个例子中,渲染的url看起来像'../css /main.css'因为它需要在找到目录'css'之前将目录放回1。 (希望有道理) - 菲尔 How to include jquery in masterpage header without path problems?

但是我已经尝试过,即使我使用/ firefox仍然引用../../而不是静态路径。 另外,我不清楚如何正确使用它,哪一种用于哪种情况。

2 个答案:

答案 0 :(得分:3)

〜/指虚拟目录应用程序根目录,其中“/”表示站点根目录,例如,如果您的站点位于http://www.example.com/且其中http://www.example.com/foo其中文件夹“foo”配置为虚拟目录{ {3}} application in IIS中的页面将解析〜/相对于虚拟目录应用程序根目录http://www.example.com/foo/foo.aspx,但“/”仍将解析为http://www.example.com/foo

答案 1 :(得分:3)

相对网址开头的/会备份到主机名的根目录。

相对URL中的前缀~/只能由ASP.NET进程解释,这就是它仅适用于runat=server的原因。它在输出时被翻译为引用 ASP.NET应用程序的根URL。很多时候,这与主机名的根相同,但如果运行代码的ASP.NET应用程序是IIS中的虚拟目录而不是其自己的站点,则不同。< / p>

如果您只需要删除一个目录级别,则可以使用“../”作为前缀而不是“/”或“〜/”。