在代码中,我经常发现 ~/ 或 ../ 带有路径,但不幸的是,我不清楚这些是什么以及有什么区别。哪一个与多级目录一起使用?
我猜 ../ 表示站点或应用程序的域?
你能指导一下它们是什么,它们有什么不同吗?
~/
经常在辅助函数中被引用,<%= ResolveUrl() %>
例如。它指的是网站的根目录,而../
只是指父目录。两者都是相对网址。
让我们举个例子。假设您的网站托管在一个名为MyApplication
. 当您使用<%= ResolveUrl("~/foo/bar") %>
它时,它会生/MyApplication/foo/bar
成为输出 url,无论在哪个 WebForm 位置。
有两种路径:
当您只是使用/
或../
使用相对于 IIS 的常规路径时 - Web 服务器 - 网站 URL。也就是说,/myfile.txt
如果您的应用程序托管在名为mydir
. 在这种情况下,/myfile.txt
将以这样的 URL 结尾:http://www.mydomain.com/myfile.txt
,而您期望的是http://www.mydomain.com/mydir/myfile.txt
。
出于这个原因,ASP.NET 让您有机会提供虚拟路径。都是从~
性格开始的。该~
字符指定解析的 URI 是相对于 IIS 应用程序的。以上面的期望为例http://www.mydomain.com/mydir/myfile.txt
,正确的虚拟路径是~/myfile.txt
.
请注意,非服务器控件中不允许使用虚拟路径。这种路径用于选定数量的 ASP.NET 类方法和服务器控件。
波浪号 (~) 指的是应用程序根目录。在 ASP 中,波浪号用于 HyperLinks 或 Page.ResolveURL。
两个点 (..) 是指比当前文件夹高一级的文件夹。