2016-12-08 59 views
0

我在Web窗體應用程序中使用ASP.NET路由。我可以使用相對URL訪問當前目錄下面的頁面嗎?

比方說,我有一條路線produce/fruit到一個關於水果的頁面。

我們還可以說我有一條路線produce/fruit/apples到關於蘋果的頁面。

那麼,produce/fruit是一個頁面和一個目錄。我可以使用相對URL創建一個從此頁到produce/fruit/apples的超鏈接,該鏈接不必包含當前頁面?

如果我在produce/fruit的頁面使用下面的錨點,它將帶我到produce/apples,這不存在。但是,如果我在produce/fruit/的同一頁上使用相同的鏈接,它會帶我到正確的頁面/子目錄。

<a href="apples">apples</a> 

當然,從我的produce/fruit鏈接可能是<a href="fruit/apples">apples</a>但後來我需要包括當前頁面的名稱,它不會從produce/fruit/工作。

我覺得有一些非常簡單的html,我忘記了。

+0

你嘗試''apples? –

+0

您嘗試過'apples' - 順便說一句'produce/fruit'不是一個頁面和一個目錄。 'produce/fruit'是一個頁面,'produce/fruit /'是一個目錄 –

+0

作爲目錄轉到'produce/apples /',但不保留路徑中的當前目錄。 – Matt

回答

0

問題很簡單,就是你沒有在當前URL的末尾計算斜線(或缺少斜線)。

例如,如果URL是/produce/fruit而且您有像​​那樣的href,則生成的鏈接將是/produce/apples。但是,如果網址爲produce/fruit/且具有相同的href,則生成的鏈接將爲/product/fruit/apples。簡而言之,您只需確保您始終在網址中使用尾部斜線。爲了幫助這一點,你可以在你的RouteConfig.cs使routes.AppendTrailingSlash

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.AppendTrailingSlash = true; 
+0

我們可能必須這樣做,但我們必須更新站點內容中的所有靜態鏈接。 我一直希望有一種方式來處理鏈接的鏈接,甚至路線的基礎上。 – Matt

+0

如果你不能保證URL中的斜線,那麼就沒有萬無一失的辦法來獲得相對的href。但是,FWIW並不一定需要更新所有的靜態鏈接。這個標誌的工作方式是MVC將重寫URL以在最後包含斜線。換句話說,如果你點擊一個鏈接到'/ produce/fruit',地址欄中的URL將是'/ produce/fruit /'(用斜槓)。 –

相關問題