簡體   English   中英

ASP.NET / IIS上的相對路徑和絕對路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM