2011-02-03 1 views
14

로컬 URL 목록을 가지고 있으며 "유효한 MVC 경로"인지 확인해야합니다. URL (경로)이 MVC 컨트롤러에 매핑되는지 어떻게 확인할 수 있습니까?주어진 경로에 대한 경로 (ASP.NET MVC)가 있는지 어떻게 확인할 수 있습니까?

Phil Haack's Route Debugger은 현재 요청과 일치하는 경로를 찾고 현재 HttpContext를 사용합니다. 가능하다면 모의 HttpContext를 구축하지 않고이 정보를 얻고 싶습니다.

+0

브라우저에 경로를 입력하고 404를 확인하십시오. – Pierreten

+0

유효한 경로인지 유효한 MVC 경로인지 확인 하시겠습니까? – SLaks

+0

@SLaks 유효한 MVC 경로 – mawtex

답변

14

조롱 된 HttpContextBase를 사용하여 RouteTable.Routes.GetRouteData으로 전화 할 수 있습니다.

경로는 요청의 AppRelativeCurrentExecutionFilePath을 사용하여 내부적으로 일치됩니다. 그러나 HttpContextBase을 전달해야합니다.

요청 속성에 HttpRequestBase 인스턴스를 반환하는 HttpContextBase 클래스를 만들어야합니다.
HttpRequestBase 클래스는 경로 ~/으로 시작하여 AppRelativeCurrentExecutionFilePath 속성으로 경로를 반환해야합니다.

IRouteConstraint에 의해 사용되지 않는 한 다른 속성을 구현할 필요가 없습니다.

MVC 경로가 있는지 확인하려면 결과가 routeData.Handler is MvcRouteHandler인지 확인하십시오.

+0

모의해야 할 부분이 있습니까? – mawtex

+1

@mawtex :'Request.AppRelativeCurrentExecutionFilePath'에서 URL을 반환하는'HttpContextBase' 클래스를 생성하십시오. – SLaks

+1

필요한 AppRelativeCurrentExecutionFilePath에 대한 귀하의 언급이 지금 당장 테스트를 작성할 때 매우 유용하다는 것을 알았습니다. 한 번 이상 투표 할 수 있으면 좋겠다. :) – CRice

관련 문제