2011-12-13 5 views
0

경로를 찾지 못한 후 다음 일치 경로로 계속 진행할 수 있습니까?C# MVC 경로 실패 후 경로 계속

데이터베이스에 뷰가 있지만 데이터베이스에서 일치하는 뷰를 찾기 전에 실제 컨트롤러와 일치하는 경로를 갖고 싶습니다.

나는이 경로를 가지고있다.

 routes.MapRoute(
      "Default", 
      "{controller}/{action}" 
     ); 

     routes.MapRoute(
      "Content", 
      "{*route}", 
      new { controller = "Home", action = "Index" } 
     ); 

"기본"경로가 컨트롤러/작업을 찾지 못한 경우 "콘텐츠"다음 경로로 계속 진행할 수 있습니까?

건배,

릭.

+0

테스트 결과는 무엇입니까? – taylonr

답변

0

MVC 라우팅은 URL을 경로 값과 일치시킴으로써 작동하므로 패턴이 일치하는 한 URL까지 일치하는 실제 컨트롤러/작업 쌍이 있는지 여부에 관계없이 해당 경로를 사용하려고 시도합니다. 이를 수행하기 위해 컨트롤러 동작 이름을 평가하는 OnActionExecute에 뭔가를 넣을 수 있으며 데이터베이스와 일치하지 않으면 기본 경로에서 무시 경로를 수행합니다. 나는 당신이 일치시키고 싶은 패턴 인 다른 경로를 기본 라우트가 아닌 기본 라우트로 사용하고리스트의 맨 아래에 기본 라우트를 놓으므로 의도 한대로 쓰러 질 수 있습니다.

+0

오늘 아침에 더 많은 작업을했는데 url/test/test가 있고 동작 테스트와 함께 테스트라는 컨트롤러가없는 경우 데이터베이스를 검사 할 줄을 다음 줄로 넘기지 않습니다. 라우팅을 수정할 수있는 방법이 있습니까? –

+0

나는 MVC 소스에서 내가 원하는 것을 할 수있는 방법을 찾으려고 노력했지만, {controller}/{action}을 Tracking/{action}과 같은 고정 컨트롤러 부분으로 변경하는 것이 더 쉽다는 것을 알았습니다. 데이터베이스가 쓰러 지도록하십시오. –

+0

예. 머리에 맞 췄어. Global asax 외부의 경로로 작업하면이 작업을 수행 할 수 있습니다. 기본적으로 귀하의 데이터베이스에 일종의 조회 테이블을 가지고 귀하의 작업 방법에서보기에 대한 데이터베이스를 확인하고 거기에없는 경우 이름으로 경로를 호출합니다. 데이터베이스 검사없이 명명 된 경로와 비슷한 것을 수행 할 수 있지만 모닝 커피가 없어서 모든 실린더에서 아직 발사하지 않습니다 :-) – Brian