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方法的路徑必須是虛擬路徑。