ASP.NET 网页 - 文件夹
本章是关于文件夹和文件夹路径的。
在本章你将学到
- 关于逻辑和物理文件夹结构
- 关于虚拟和物理名称
- 关于 Web URL 和路径
逻辑文件夹结构
下面是 ASP.NET 网页网站的典型文件夹结构

- “Account”文件夹包含登录和安全文件
- “App_Data”文件夹包含数据库和数据文件
- “Images”文件夹包含图像
- “Scripts”文件夹包含浏览器脚本
- “Shared”文件夹包含通用文件(如布局和样式文件)
物理文件夹结构
上面网站的“Images”文件夹的物理结构在电脑上可能如下所示
C:\Johnny\Documents\MyWebSites\Demo\Images
虚拟名称和物理名称
从上面的示例中:
Web 图片的虚拟名称可能是“Images/pic31.jpg”。
但物理名称是“C:\Johnny\Documents\MyWebSites\Demo\Images\pic31.jpg”
URLs 和 Paths
URL 用于从 Web 访问文件:https://w3schools.org.cn/html/html5_intro.asp
URL 对应服务器上的一个物理文件:C:\MyWebSites\w3schools\html\html5_intro.asp
虚拟路径是表示物理路径的简写。如果你使用虚拟路径,你可以将你的页面移动到不同的域(或服务器)而无需更新路径。
URL | https://w3schools.org.cn/html/html5_intro.asp |
服务器名称 | w3schools |
虚拟路径 | /html/html5_intro.asp |
物理路径 | C:\MyWebSites\w3schools\html\html5_intro.asp |
磁盘驱动器上的根目录写成 C:\,而 Web 站点的根目录是 /(正斜杠)。
Web 文件夹的虚拟路径(几乎)永远不会与物理文件夹相同。
在你的代码中,你将引用物理路径和虚拟路径,具体取决于你正在编写的代码。
ASP.NET 有 3 个用于处理文件夹路径的工具:~ 运算符、Server.MapPath 方法和 Href 方法。
~ 运算符
要在编程代码中指定虚拟根目录,请使用 ~ 运算符。
如果你使用 ~ 运算符,而不是路径,你可以将你的网站移动到不同的文件夹或位置而无需更改任何代码
var myImagesFolder = "~/images";
var myStyleSheet = "~/styles/StyleSheet.css";
Server.MapPath 方法
Server.MapPath 方法将虚拟路径(/default.cshtml)转换为服务器可以理解的物理路径(C:\Johnny\MyWebSited\Demo\default.cshtml)。
当你需要打开位于服务器上的数据文件时,将使用此方法(数据文件只能通过完整的物理路径访问)
var pathName = "~/dataFile.txt";
var fileName = Server.MapPath(pathName);
你将在本教程的下一章中了解更多关于从服务器读取(和写入)数据文件的信息。
Href 方法
Href 方法将代码中使用的路径转换为浏览器可以理解的路径(浏览器无法理解 ~ 运算符)。
你使用 Href 方法来创建到图像文件和 CSS 文件等资源的路径。
你通常会在 HTML 的 <a>、<img> 和 <link> 元素中使用此方法
@{var myStyleSheet = "~/Shared/Site.css";}
<!-- 这将创建一个到 CSS 文件的链接。 -->
<link rel="stylesheet" type="text/css" href="@Href(myStyleSheet)" />
<!-- 相当于: -->
<link rel="stylesheet" type="text/css" href="/Shared/Site.css" />
Href 方法是 WebPage 对象的一个方法。