ASP.NET 支持引用外部资源的各种方法。根据您使用的是客户端元素还是 Web 服务器控件,选择的引用方法将有所不同。
客户端元素
1.绝对Url路径 (如果引用其他位置(例如外部网站)中的资源,则绝对 URL 路径非常有用。)
例如:<img src="http://www.contoso.com/MyApplication/Images/SampleImage.jpg" />
2.相对Url路径 此路径将根据网站根目录(而非应用程序根目录)进行解析。
如果将跨应用程序的资源(例如图像或客户端脚本文件)保留在网站根目录下的文件夹中,则网站根目录相对路径非常有用。
两种写法以及相应解析路径:
此示例路径假定 Images 文件夹位于网站根目录下。
a. <img src="/Images/Upload.gif" />
==> http://www.contoso.com/Images/Upload.gif
b. <img src="Images/Upload.gif" />
==> <img src="../Images/Upload.gif" />
服务器控件
1.注意点:使用相对路径时,相对页面、用户控件或包含该控件的主题的路径进行解析。
例如:在一个Controls文件夹下包含一个用户控件,其中有一个Image web服务器控件,其路径设置为src="Images/Upload.gif",解析路径为src="/Controls/Images/Upload.gif".
2.为避免上面现象产生,可以采用“~”跟运算符和文件夹来指定基于当前根目录的路径。
例如:<asp:image runat="server" id="Image1" ImageUrl="~/Images/SampleImage.jpg" />
可以在服务器控件中的任何与路径有关的属性中使用 ~ 运算符。~ 运算符只能为服务器控件识别,并且位于服务器代码中。不能将 ~ 运算符用于客户端元素。
确定当前网站的物理文件路径
1.区别虚拟路径和物理路径
虚拟路径:
物理路径:
2.确定物理文件路径最常用的方法:HttpRequest 和 MapPath
HttpRequest的相关属性:
MapPath方法:
string rootPath = Server.MapPath("~");
传递给MapPath方法的路径必须是虚拟路径。