2012-07-11 5 views
2

는 우리는 우리의 라우팅 테이블이 같은 종류의 설정 한 :이 URL을 /Foo.aspx처럼 수 있으며 FooController.Index에도 /Foo에 제대로 경로라우팅 테이블 주문 문제

// ... specific routes 

routes.MapRoute(
    "aspx", 
    "{controller}.aspx/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

. 나는 이것이 이전 버전과의 호환성을 위해 추가되었다고 생각한다. 그러나 을 사용하여 UrlHelper.Action을 사용하여 URL을 생성 할 때 URL의 더 거친 버전이 사용됩니다. 예를 들어 Url.Action("Bar", "Foo")Foo.aspx/Bar입니다.

생성 된 URL에 청소기 Default 경로를 사용하고 싶습니다. 두 개의 MapRoute 호출을 바꾸면이 작업이 수행되지만 .aspx{controller} 자리 표시 자에 포함 된 것으로 간주되므로 은 더 이상 FooController으로 라우팅되지 않습니다.

URL 매개 변수 MapRoute에 경로를 넣고 aspx 경로 앞에 둘 다 허용하도록 할 수있는 방법이 있습니까? 당신이 Html.RouteLink을 시도 할 수 있습니다

답변

0

당신은 라우팅 그것은 작동합니다

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.linkextensions.routelink.aspx

를 사용해야 경로 이름을 제공합니다.

+0

이 개념을 유지하면서 두 번째 라우터를 정의하고이를 기본 htmlhelper의 마지막 매개 변수로 사용할 수 있습니까? – jcolebrand

+0

그게 효과가; 그러나 액션과 컨트롤러를 매개 변수로 경로에 전달하지 않고 MVC 액션과 컨트롤러 이름을 계속 처리 할 수있는 솔루션을 찾고 싶습니다. – Jacob

+0

@Jacob RouteOption에서 컨트롤러 및 작업 이름을 익명 개체로 전달할 수 있습니다. –