Asp.net開發中用到的相關路徑

來源:互聯網
上載者:User

 路徑都會分為絕對路徑和相對路徑之分,並且在asp.net中用戶端控制項和服務端控制項的相對路徑表達方式有不小區別。

詳細如下:

 

用戶端元素

1、絕對 URL 路徑。如果引用其他位置(例如外部網站)中的資源,則絕對 URL 路徑非常有用。

<img src="http://www.contoso.com/MyApplication/Images/SampleImage.jpg" />
2、相對根目錄
<img src="/Images/SampleImage.jpg" />(如果您的網站為 http://www.contoso.com,則此路徑將解析為以下形式。
http://www.contoso.com/Images/SampleImage.jpg

3、相對目前的目錄
<img src="Images/SampleImage.jpg" />
伺服器控制項
假設 Controls 檔案夾中包含一個使用者控制項。該使用者控制項包含一個 Image Web 伺服器控制項,此伺服器控制項的 ImageUrl 屬性被設定為以下路徑:Images/SampleImage.jpg。

當該使用者控制項運行時,上述路徑將解析為以下形式:/Controls/Images/SampleImage.jpg。無論承載該使用者控制項的頁面位於何處,結果都是如此。在主控頁中,資源的路徑基於內容頁的路徑進行解析。

伺服器控制項中的絕對和相對路徑引用具有以下缺點:

  • 絕對路徑在應用程式之間是不可移植的。如果移動絕對路徑指向的應用程式,則連結將會中斷。

  • 如果將資源或頁面移動到不同的檔案夾,可能很難維護採用用戶端元素樣式的相對路徑。

為克服這些缺點,ASP.NET 包括了 Web 應用程式根目錄運算子 (~),當您在伺服器控制項中指定路徑時可以使用該運算子。ASP.NET 會將 ~ 運算子解析為當前應用程式的根目錄。可以結合使用 ~ 運算子和檔案夾來指定基於當前根目錄的路徑。

 

<asp:image runat="server" id="Image1"  ImageUrl="~/Images/SampleImage.jpg" />

可以在伺服器控制項中的任何與路徑有關的屬性中使用 ~ 運算子。~ 運算子只能為伺服器控制項識別,並且位於伺服器代碼中。不能將 ~ 運算子用於用戶端元素。

注意:

僅限於移動頁,如果您的應用程式依賴於無 Cookie 會話或者可能收到來自行動裝置的需要無 Cookie 會話的請求,則在路徑中使用波狀符號(“~”)會導致意外建立新會話,並可能丟失會話資料。若要使用包含波狀符號(例如“~/路徑”)的路徑來設定行動控制項的屬性,請先使用 ResolveUrl 方法解析該路徑,再將其分配給該屬性。

 

確定當前網站的物理檔案路徑

 

1、根據請求屬性確定路徑

表中列出的樣本基於下面的假設:

  • 已使用以下 URL 發出瀏覽器請求:http://www.contoso.com/MyApplication/MyPages/Default.aspx。

  • 術語“虛擬路徑”是指請求 URL 中跟在伺服器標識符後面的部分;在此樣本中,虛擬路徑是指以下路徑:/MyApplication/MyPages/Default.aspx。

  • 網站根目錄的實體路徑為:C:/inetpub/wwwroot/MyApplication/。

  • 該實體路徑中包含一個名為 MyPages 的檔案夾。

屬性

說明

ApplicationPath

擷取當前應用程式的根目錄路徑,無論在該應用程式中的什麼位置請求該路徑。在此樣本中,該屬性將返回以下內容:/

CurrentExecutionFilePath

擷取當前請求的虛擬路徑。它與 FilePath 屬性的不同之處在於,如果請求已在伺服器代碼中被重新導向,則 CurrentExecutionFilePath 就是正確的。在此樣本中,該屬性將返回以下內容:/MyApplication/MyPages/Default.aspx

如果作為對 Transfer 或 Execute 進行調用的結果,您擷取正在啟動並執行代碼中的屬性,則路徑將反映該代碼的位置。

FilePath

擷取當前請求的虛擬路徑。在此樣本中,該屬性將返回以下內容:/MyApplication/MyPages/Default.aspx

與 CurrentExecutionFilePath 屬性不同的是,FilePath 不反映伺服器端的傳輸。

Path

擷取當前請求的虛擬路徑。在此樣本中,該屬性將返回以下內容:/MyApplication/MyPages/default.aspx

PhysicalApplicationPath

擷取當前正在執行的應用程式的根目錄的物理檔案系統路徑。在此樣本中,該屬性將返回以下內容:C:/inetpub/wwwroot/

PhysicalPath

擷取與請求的 URL 相對應的物理檔案系統路徑。在此樣本中,該屬性將返回以下內容:C:/inetpub/wwwroot/MyApplication/MyPages/default.aspx

 

2、使用 MapPath 方法

MapPath 方法返回傳遞給該方法的虛擬路徑的完整實體路徑

String rootPath = Server.MapPath("~");
String rootPath = HostingEnvironment.MapPath("~/image/aa/bb");
更詳細的內容請參考MSDN.
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.