[英]Relative and absolute paths on ASP.NET/IIS
我讀過很多關於相對/絕對路徑的文章,但我仍然無法解決這個問題。
以下代碼來自我的ASP.NET Master
頁:
<li><a>Reports</a>
<ul>
<li>
<a href="/Reports/One.aspx">One</a>
</li>
<li>
<a href="~/Reports/Two.aspx">Two</a>
</li>
</ul>
</li>
(注意,一個鏈接有~
而一個沒有。)
運行站點時,第一個鏈接指向http://server/Reports/One.aspx
,第二個鏈接指向http://server/company/project/Reports/~/Reports/Two.aspx
。
如何在不忽略IIS上設置的虛擬目錄的情況下訪問ASP.NET項目的根目錄?
將runat="server"
屬性添加到錨標記。 您不能將~root運算符與HTML標記一起使用。 只有服務器控件(Html或Web)才能使用它。
<a runat="server" href="~/Reports/Two.aspx">Two</a>
如果您不希望它們成為具有生成的ID的服務器控件,請將Page.ResovleUrl
用於所有文件:
<a href='<%= Page.ResolveUrl("~/Reports/Two.aspx")%>'>Two</a>
相對路徑是相對於當前資源的,因此如果您正在查看
http://yourhost/app/default.aspx
reports/one.aspx
的相對路徑為http://yourhost/app/reports/one.aspx
。 注意相對路徑中沒有前導/
。 這就是它相對的原因。
您可以猜測,絕對路徑以/
開頭,它使用當前資源的主機名,因此http://yourhost/reports/one.aspx
。
〜是一只紅鯡魚。 它是一個.NET,它只是ASP.NET的各個部分用來基於當前應用程序根目錄的路徑。 因此,如果您的應用程序根目錄是http://yourhost/app
,那么您正在查看http://yourhost/app/views/default.aspx
,並且您要求.NET提供路徑~/reports/one.aspx', you would be given
http://yourhost/app/reports/one.aspx` 。
〜不是HTML,IIS或URL使用的,所以如果你的瀏覽器看到它,它就會按原樣使用它。
注意 :有些Unix服務器可以使用~
來映射用戶的主目錄,但這只會讓事情復雜化。
請閱讀有關ASP.NET初學者的“路徑”的內容 。 它將給出ASP.NET應用程序中“路徑”的完整概念。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.