2012-03-22 5 views
1

나는 경로 이름에 따라 다른 페이지로 라우팅 하나의 RouteURL을 사용하려고하지만 난 내 aspx 페이지에서 버튼을 클릭하면 페이지가 자신에게 다시 전달됩니다 :라우팅

여기

내가 내 default1.aspx 페이지에 무엇을 넣어 가지고 여기에

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 

내 Global.asax에

에있는 그리고 무엇 :

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 (즉, '테스트')을 사용할 수 없습니다.

추가 읽기 : ASP.NET Routing

당신이 그것을 바꿀 수있는 방법의 예 : 경로 "1"아래에 있음이 예에서는

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 

참고. 이는 경로가 하향식으로 일치하기 때문에 더 제한적인 일치가 먼저 나열되어야합니다. 이 예제에서 yourdomain/test/2는 default2.aspx로 이동하고 yourdomain/test/3는 default3.aspx로 이동하고 default1.aspx는 기본적으로 yourdomain/test, yourdomain/test/4, yourdomain/test/5 등

+0

감사합니다. 그래도 달성하려는 최선의 방법을 알고 있습니까? 동일한 경로를 다른 페이지에 매핑 할 수 있습니까? – Nug

+0

정확하게 동일한 routeUrl과 일치시킬 수 없습니다. 당신은 약간의 변이를 만들어야 할 것입니다. 내 답변에 예제를 추가했습니다. –