1.路径

在WinForm中当前路径为.\, 上级目录为..\, 根目录为\.

而在web中/表示根目录,./表示当前目录,../表示上级目录。

在asp.net中用~表示虚拟路径,是asp.net中的一种标识,表示从应用根目录开始的位置。

如我们将一个应用程序部署到http://localhost:8080/Sorce这个目录下,应用的根目录(即webapplication)是http://localhost:8080/,即~/imgs/default.htm相当于完整的目录为http://localhost:8080/imgs/default.htm.

而网站(新建website)的根目录为:http://localhost:8080/Source,如~/imgs/default.htm就相当于http://localhost:8080/Source/imgs/default.htm.

实例:

  我们分别建立WebApplication和WebSite,它们的目录如下:

都为它们建立一个默认页,里面放置一个连接用来打开1.jpg.两个网页的代码是一样的,如下图:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
      <a href="/a/b/imgs/1.jpg">连接</a>
    </div>
    </form>
</body>
</html>

然后分别运行,并把鼠标话在“连接”上面,在浏览器的状栏下可以看到网站的绝对路径:

在WebApplication上显示为:

在WebSite上显示为:

因此可以看出对于WebApplication,是对于网站为根目录,而对了webSite是以它的路径为根目录。

浏览器并不认识~,是asp.net会把它转成相对于网站根目录的全路径再传给浏览器。

  • 如果在服务端控件中(使用runat=server)会自动将~进行转换,如果在HTML控件或者需要在代码中转换的话可以使用VirtualPathUtility类中静态方法进行虚拟路径、全路径等的转换,比如VirtualPathUtility.ToAbsolute(“~/imgs/default.aspx“”)就是将虚拟路径转换为相对网站根的全路径,即/website/imgs/default.aspx
  • VirtualPathUtility类主要方法:string AppendTrailingSlash(string VirtualPath):如果VirtualPath最后没有'/'则添加。string Combine(string basePath,string relativePath),将两个路径合并,返回虚拟路径的目录部分;string MakeRelative(string fromPath,string toPath):计算两个虚拟路径的相对路径;ToAbsolute,转换为绝对路径
原文地址:https://www.cnblogs.com/yagzh2000/p/3127148.html