2012-06-20 2 views
0

이전 .aspx 페이지를 최신 MVC 페이지로 변환하는 프로젝트를 진행하고 있습니다. 현재 라우팅 기능을 사용하여 기존 레거시 페이지를 매핑하여 새로운 MVC 페이지를 사용합니다. 그러나 컨트롤러가 사용자를 리디렉션해야하거나 MVC Url.Action 링크가 사용될 때마다 사용자에게 보내는 URL은 라우트 된 기존 페이지 URL이 아닌 MVC URL입니다 (기존 URL을 보존하기 때문에 효과적입니다). . 이것이 이것이 어떻게 작동하는지 생각하고 있지만 MVC가 일종의 "역방향 라우팅"기능을 가지고 있는지 궁금합니다. 역방향 라우팅을 통해 URL/액션 ("액션")이 라우팅 된 .aspx 관련 URL을 기본/컨트롤러/동작 링크 대신 지정된 동작으로 반환 할 수있는 무언가를 찾고 있습니다. 그래서 예를 들어MVC3 Reverse Routing

, 여기

이이 장면 뒤에 DefaultController에서 새 MVC 액션 "aboutus"를 실행하는 domain.com/pages/aboutus.aspx 수 있습니다

context.MapRoute("AboutUs", "pages/aboutus.aspx", new { controller = "default", action = "aboutus" }); 

샘플 경로를하다 아주. 다른 MVC 페이지에 내가

Url.Action("aboutus") 

에 의해 생성 된 링크가있는 경우

그러나 domain.com/mvc/aboutus 그들을 지적한다. 사이트 전체에서 일관성을 유지하기 위해 domain.com/pages/aboutus.aspx로 안내하고 싶습니다.

제공 할 수있는 정보에 감사드립니다. Url.Action 메서드를 재정 의하여 라우트를 찾고 매핑 된 URL을 반환해야하지만 결국 기존 기능을 확인하여 휠을 다시 만들지 않으려 고합니다.

+0

이것은 바보 같은 질문 일 수도 있지만, 왜 것 :

Url.RouteUrl("aboutus") // route name 

MSDN을 대체하려는 URL로 사용자를 다시 리디렉션하고 싶습니까? 이 매핑을 수행하는 유일한 이유는 기존 링크/북마크를 사이트에 유지하는 것이고 사용자가 사이트를 찾지 못했다면 충분합니다. –

+0

좋은 질문입니다. 어쨌든 MVC가 이전 .aspx 페이지에서 돌아가고 있기 때문에 다시 페이지로 리디렉션하지 않습니다. 사이트를 돌아 다니면서 주소 표시 줄에 다른 URL이 표시되지 않는 사용자 경험을 중심으로이 작업을 수행하고 싶습니다. 나는 또한 두 개의 서로 다른 페이지에 "중복 된 콘텐츠"가 있다는 것을 좋아하지 않는 검색 엔진에 관심이 있었지만 표준 URL이이 문제를 해결할 수 있다는 것을 알았습니다. Joshuam의 제안은 Url.RouteUrl ("aboutus")을 사용하여 완벽하게 트릭을 수행했습니다. 모든 사람의 도움과 의견을 보내 주셔서 감사합니다! –

+0

또한이 방법으로 누구나 Google을 통해 도움이 될 수 있습니다. CakePHP는 "역방향 라우팅"과 비슷한 기능을 가지고 있습니다. CakePHP는 그것을 자동적으로 조금 더 처리하지만, 나는 또한 마이크로 소프트가 한 일을 좋아한다. –

답변

1

, 경로 이름이 아닌 경로 매개 변수에 의해 경로를 일치하도록처럼 RouteUrl 확장 방법을 사용하십시오 : 당신을 http://msdn.microsoft.com/en-us/library/dd460347

+0

이것은 정확히 내가 찾고 있었던 것이었다. 내 컨트롤러의 리디렉션에 대해서도 다음을 사용하고 있습니다. return RedirectToRoute ("action"); –