2009-07-06 2 views
2

오히려 새로운 ASP.MVC에 대한 다음 라우팅 문제에 대한 해결책을 찾고 있습니다.URL의 선택적 동작 값에 따라 라우팅

내가 원하는이 URL의 표시된 페이지로 이어질 :

/회원/123/A + 이상한 + 이름 - 회원> 페이지
/회원/123 사항 ->
을 위와 같이 /회원/연결/123는 - 회원의 연결 목록
/회원/연결/123/A + 이상한 + 사용자 이름와> 페이지 ->
/회원/콤 상기와 국세청/123이 - 회원 목록> 페이지
/회원/댓글/123/A + 이상한 + 이름 논평 -> 사용자 이름은 무시해야하지만, 도움이되는 링크에 추가됩니다

위와 같이 검색 엔진.

나는 다음과 같은 경로로 시도 :

routes.MapRoute("MemberPage", "Member/{id}/{*name}", new { controller = "Member", action = "Details", id = "" }); 
routes.MapRoute("MemberAction", "Member/{action}/{id}/{*name}", new { controller = "Member", action = "Details", id = "" }); 

그러나 세부 컨트롤러에 대한 무효 인 id의를 첫 번째 경로에 항상 기본값을 보인다 다음 "연결"또는 "댓글"이후 오류를 얻을 수있다 .

id-value의 유형 또는이 문제를 해결하는 다른 방법에 따라 경로를 전환하는 방법이 있습니까?

답변

5

{id} 두 경로에 경로 제약 조건을 추가하면 도움이 될 수 있습니다.

routes.MapRoute("MemberPage", "Member/{id}/{*name}", 
     new { controller = "Member", action = "Details", id = "" }, 
     new { [email protected]"\d+" }); 
routes.MapRoute("MemberAction", "Member/{action}/{id}/{*name}", 
     new { controller = "Member", action = "Details", id = "" }, 
     new { [email protected]"\d+" }); 

이 방법은 첫 번째 경로에서 {ID}에 "댓글"을지도하려고하지 않으며, 해당 URL과 함께 잘 작동합니다 두 번째로 통해 떨어질 것이다.

+0

매력적인 작품! 감사! – hbruce

+0

답변 해 주셔서 감사합니다. –

관련 문제