2010-06-22 3 views
1

옵션 페이지 : 난 "-p {페이지}"부분을 만들기 위해이 노선 내 질문에 대한 지금 MVC는 생략 내가 마음에 다음 URL 한 매개 변수

routes.MapRoute(null, "{category}/{branch}/{city}-p{page}.html", 
       new { controller = "Branch", action = "Index" }); 
routes.MapRoute(null, "{category}/{branch}/{city}.html", 
       new { controller = "Branch", action = "Index", page = 1 }); 

를 사용

/restaurants/italian/miami.html 
/restaurants/italian/miami-p2.html 

을 원하는 url 선택 사항은 {page} 매개 변수가 아닙니다. 그렇게하면 단일 경로를 사용할 수 있으며 Url.RouteUrl(RouteValueDictionary) (사전의 페이지 매개 변수가 1 인 경우 자동으로 페이지 부분을 제거함)으로 아웃 바운드 URL을 매핑하는 데 사용할 수 있습니다.

+0

* 왜 * 귀하의 노선에'.html '을 (를) 추가 하시겠습니까? 경로의 전체적인 포인트는 물리적 인 페이지를 가리 키지 않는 것입니다. –

+0

내 생각은 정확하지만 불행히도 내 결정을 내키지 않는다. – Fabian

답변

0

내가 3 개 경로를 필요 둘째.

+0

더 나은 해결책이 있기를 바란다. 목 ... – Fabian

1

나는 당신이 원하는 것을 잘 이해하고 있는지 모르겠다. 여전히 어떻게 든 나는 regular expression constraint을 사용하면 문제를 해결할 수 있다고 생각한다. 아마 어떻게 든이 같은 :

routes.MapRoute(null, "{category}/{branch}/{city}.html", 
       new { controller = "Branch", action = "Index" }, 
       new { page = "1" }); 

routes.MapRoute(null, "{category}/{branch}/{city}-p{page}.html", 
       new { controller = "Branch", action = "Index" }); 

routes.MapRoute(null, "{category}/{branch}/{city}.html", 
       new { controller = "Branch", action = "Index", page = 1 }); 

내가 제와 두 번째와 세 번째 경로 및 아웃 바운드와 인바운드 모든 URL을 매핑 할 수 있습니다이 방법이를 달성하기 위해

routes.MapRoute(null, "{category}/{branch}/{citywithp}{page}.html", 
      new { controller = "Branch", action = "Index" }, 
      new {citywithp = @"p-\d+$" }); 
+0

+1 정답이 아니지만 생각이났다. – Fabian

+0

어쨌든 도움이되었다고 기쁘다. :) – apolka