2012-03-22 94 views
1

我試圖用一個單一的RouteURL路由到依賴於路線名稱不同的頁面,但是當我點擊我的aspx頁面中的按鈕的頁面被路由回自己:路由在ASP.Net Web應用程序

以下是我在我的Global.asax

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) 
     ' Code that runs on application startup 
     RegisterRoutes(RouteTable.Routes) 
    End Sub 

Private Sub RegisterRoutes(ByVal routes As routecollection) 
     routes.MapPageRoute("1", "test", "~/default1.aspx") 
     routes.MapPageRoute("2", "test", "~/default2.aspx") 
     routes.MapPageRoute("3", "test", "~/default3.aspx") 
End Sub 

,這裏是什麼,我已經把我的default1.aspx頁:

Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click 
     Response.RedirectToRoute("2") 
End Sub 

任何人都可以點我在正確的方向嗎?

回答

4

您在映射的路線中重複了routeUrl值。發生了什麼事路由到您的第二條路由,名稱爲「2」,但該路由爲http://yoursite/test,當它處理請求時,它與第一條路由條目或default1.aspx匹配。

對於所有映射,不能使用相同的routeUrl(即「test」)。

延伸閱讀:ASP.NET Routing

你如何可以改變它的一個例子:

Private Sub RegisterRoutes(ByVal routes As routecollection) 
     routes.MapPageRoute("2", "test/2", "~/default2.aspx") 
     routes.MapPageRoute("3", "test/3", "~/default3.aspx") 
     routes.MapPageRoute("1", "test/{*whatever}", "~/default1.aspx") 
End Sub 

注意,在此示例路線「1」是在底部。這是因爲路線自上而下匹配,因此應該首先列出更多限制性比賽。在這個例子中,yourdomain/test/2將轉到default2.aspx,yourdomain/test/3將轉到default3.aspx,並且default1.aspx將基本上成爲默認值,捕獲yourdomain/test,yourdomain/test/4,yourdomain/test/5等

+0

好的謝謝,這是有道理的。你知道盡我所能實現的最好方法嗎?是否有可能將相同的routeurl映射到不同的頁面? – Nug 2012-03-22 20:21:10

+0

無法匹配完全相同的routeUrl。你將不得不做出一些變化。我已經爲我的答案添加了一個示例。 – 2012-03-22 20:32:48