2015-04-06 147 views
0

我有真正奇怪的網址路由問題。我定義了3條路線一樣,ASP.net中的URL路徑路徑問題

routes.MapPageRoute("Article", "Article/{id}/{title}", "~/article.aspx"); 
routes.MapPageRoute("Contact", "Contact", "~/contact.aspx");    
routes.MapPageRoute("Category","Category/{id}/{name}","~/category.aspx"); 

菜單欄時,我點擊聯繫我得到www.website.com/Contact,然後我點擊的文章中,我得到www.website.com/Article/id/title,各個環節都在工作。

然而,當我首先點擊的文章,然後單擊接觸,我有www.website.com/Article/id/title/contact,或www.website/category/id/name/contact

這個問題只能從參數航線單擊以非參數路由時發生。如果你有任何想法,我會很高興。謝謝。

+0

您已經向我們展示了路由,但不是您如何在標記中創建路由。 – mason

+0

這裏我的路線創建 '' and my nonparameter link in menubar is 'Contact' –

回答

1

您的聯繫鏈接不是應用程序根目錄。您需要使其相對應用程序根目錄。 Web窗體最簡單的方法是切換到使用控件而不是簡單的錨標記。

<asp:HyperLink runat="server" NavigateUrl="~/Contact" Text="Contact" /> 

否則,當你嘗試導航沒有使它根相對應用程序聯繫,它假定聯繫是一個低於當前網址中的最後一個段的水平(因爲網址的使用綁定到目錄,而比語義路線,例如:在www.website.com/Article/id/title它認爲標題是目錄)。

請注意,您也可以在一個普通的錨點標記中執行一些內嵌的C#,與您的做法類似,但是我無法記住要使用正確的函數調用。 ResolveUrlResolveClientUrl或類似的東西。