2011-04-21 8 views
3

I는 다음의 두 가지 경로가 정의 일치 :ASP.NET MVC 3 Url.Action는

routes.MapRoute(null, "" // ~/ 
       ,new { controller="Products", action="List", page=1 }); 

routes.MapRoute(null, "{category}/Page{page}" // ~/CategoryName/Page21 
       , new { controller = "Products", action = "List", page = 1 } 
       , new { page = @"\d+" } //page must be numerical 
       ); 

I 뷰에서이 코드를 사용하여 URL을 생성하고이 ProductsController가 사용되고 다음으로 Url.Action("List", new {page=p, category=Model.CurrentCategory})

현재 구성, 나는 URL을 얻을 : 내가 처음 경로에서 기본을 페이지 매개 변수를 생략하면,

그러나 /승마/페이지 2를, 내가 대신이 URL을 얻을 : /카테고리 = 타고 & 페이지 = 2

Url.Action() 두 경로를 일치시킬 수 있음을 나에게 보인다 나는 기본적에게 첫 번째 경로에 지정된 페이지 매개 변수가있는 경우 두 번째 경로를 사용하기로 결정하고있다 그 매개 변수가 생략되면 첫 번째 경로를 사용하도록 선택합니다.

페이지 매개 변수의 값을 제공한다고 가정하면 경로의 기본값에서이 매개 변수를 제거하면 되돌릴 URL이 달라집니다.

감사합니다.

답변

1

NuGet 패키지 Glimpse을 설치하십시오. 그것은 훌륭한 경로 디버깅을 가지고 있으며, 당신을 도울 수 있어야합니다.

+1

NuGet Package of the Week #5이 @JamesAllen 감사 :

는 여기를 사용하는 방법에 대한 스콧 Hanselan하여 블로그 게시물입니다. 나는 엿볼 보았다. 내 페이지를 제공하기 위해 일치 된 경로를 보여줍니다. 내보기에서 Url.Action()이 내가 내 게시물에서 언급 한 경로를 선택한 이유를 설명하는 정보를 찾을 수 없습니다. – Ryan