2010-05-14 4 views
0

최종 경로가 캐치되어있는 MVC 앱이 있는데, 이는 데이터베이스 기반의 페이지 모음에 대한 "PageController"에 대한 모든 경로입니다. 내가 달성하고자하는 것은 데이터베이스에 수신 된 URL을 찾지 못하면 첫 번째 컨트롤러가 전달하는 모든 경로를 캐치하는 두 번째 컨트롤러에 앱에 플러그인 할 수있게하는 것입니다.CatchAll 경로가있는 계단식 MVC 컨트롤러

public ActionResult PageCatchall(string url) 
{ 
    var page = repository.Get<Page>(string url); 
    if (page != null) 
    { 
     // Handle the request 
     return View(page) 
    } 
    // Otherwise pass to a new controller 

    ???? 
} 

누구든지이 문제를 해결하는 방법에 관한 좋은 아이디어를 가지고 :

효과적으로 나는 캐치 컨트롤러 모든 작업을 대기열 싶어? 내가 RedirectToAction을 시도했지만 그 다음 컨트롤러가 동작에 대한 다른 경로를 필요로합니다. ActionInvoker를 사용해 보았지만이 방법으로 작동하지 못했습니다.

답변

0

나는이 같은 복잡한 라우팅을 피할 것이지만, 최선의 방법은 pages의 캐시 된 목록을 사용하는 custom route constraint을 사용하여 올바른 경로와 일치시키는 것입니다 (성공과 함께 완료했습니다).

운동을 위해 정확한 구현을 남겨 둘 것입니다. o)