2009-02-04 8 views
1

ASP.Net MVC의 RC1 버전에 문제가 있습니다. "Default"route 전에 Route를 추가 할 때마다 생성 된 URL은 추가 된 첫 번째 Route에 대한 것입니다. 여기 ASP.Net MVC RC1 RouteCollection.MapRoute 문제

가 Global.asax.cs 내 라우팅입니다

routes.MapRoute(
      "product-detailed", 
      "Products/{controller}/{action}/{id}", 
      new { controller = "ProductSubType", action = "Index", id = "" } 
     ); 

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

내 URL 생성 :

 <%= Html.ActionLink("Bikes", "Index", "Bikes") %><br /> 
     <%= Html.RouteLink("Bikes", "product-detailed", new { controller = "Bikes", action = "Index" }) %> 

내가 "/ 자전거/인덱스"와 같은 URL을 생성하는 최초의 ActionLink를 기대하고 두 번째 RouteLink는 "/ Products/Bikes/Index"를 만들지 만 두 URL은 "/ Products/Bikes/Index"로 끝납니다.

여기 라우팅에 누락 된 점은 무엇입니까?

감사합니다.

답변

4

당신은 아무것도 놓치지 않았습니다. 그것은 설계된대로 작동합니다.

컨트롤러와 동작이 모두 유효한 값에 제한이없는 최상위 경로에서 변수이기 때문에 해당 경로는 컨트롤러와 동작의 모든 값에 유효합니다.

잠재적 인 작업 차선책 : 그들은

  • 컨트롤러 및/또는 행동의 값을 상위 경로에 대한 제한을 추가 URL의 일부가 아닙니다 있도록

    • 컨트롤러 및/또는 조치 값을 수정
    • 조치 링크 대신 경로 링크를 사용하십시오. 올바른 경로가 어떤 경로인지 분명하게 명시하고 있기 때문입니다.
  • +0

    doh! 그냥 내 반응을 입력했다 ... : P – Brannon

    +0

    (누군가가 내가 브래넌에게 바보가되고 있다고 생각한다면, 나는 실생활에서 그를 안다.) –