2012-05-17 4 views
3

나는 가지고있는 영역에서 작동하는 경로를 얻으려고 애 쓰고 있습니다.mvc4 영역 내에서 라우팅 동작이 동작을 매핑 할 수 없습니다.

내 영역을 ABC라고하며이 영역 내에 홈이라는 컨트롤러가 있습니다. "http : // localhost : 8000/abc"를 탐색하면 홈/색인으로 중단 점을 맞출 수 있습니다. 그러나 "http : // localhost : 8000/ABC/details"와 같은 세부 정보라는 다른 작업을 시도 할 때 얻을 수 있습니다. 이상적으로

context.MapRoute(
      "details", 
      "Home/Home/{action}/{id}", 
      new {controller="home", action = "details", id = UrlParameter.Optional }, 
      constraints: null, 
      namespaces: new[] { "WebApplication.Areas.ABC.Controllers" } 

     ); 

을 (404)

내가

context.MapRoute(
      "details", 
      "ABC/Home/{action}/{id}", 
      new { action = "details", id = UrlParameter.Optional }, 
      constraints: null, 
      namespaces: new[] { "WebApplication.Areas.ABC.Controllers" } 

     ); 



     context.MapRoute(
      "ABC_Home", 
      "ABC/{controller}/{action}/{id}", 
      new { controller = "home",action="Index", id = UrlParameter.Optional }, 
      constraints: null, 
      namespaces: new[] { "WebApplication.Areas.ABC.Controllers" } 
    ); 

을 시도 이것은 내가 "8000/ABC/홈/세부 경우 http : // localhost :"사용하는 경우 나 조치를 칠 수 있습니다 나는 가능하다면 URL 내에서 집을 사용하고 싶지 않다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

도움이 될 것입니다!

답변

3

이 경우 하나의 경로 만 있으면됩니다. 컨트롤러에 경로를 포함시키지 마십시오. 이는 /ABC으로 시작하여 암시 된 것으로 보입니다. 그냥 기본값으로 컨트롤러에 할당 : 귀하의 요구 사항에 따라

context.MapRoute(
    "ABC_Home", 
    "ABC/{action}/{id}", 
    new { controller = "home", action="Index", id = UrlParameter.Optional }, 
    constraints: null, 
    namespaces: new[] { "WebApplication.Areas.ABC.Controllers" } 
} 

, /ABC/홈/색인이 의지 경로 및 라우팅 할 /ABC/세부-/홈/세부 사항.

그런 다음, 기본처럼 당신이 또 다른 규칙을 추가 할 수있는 무언가를 다른 컨트롤러에 액세스해야하는 경우 :

context.MapRoute(
    "Default_Route", 
    "{controller}/{action}/{id}", 
    new { id = UrlParameter.Optional } 
} 
+0

감사합니다 dbaseman Logged –

0

난 당신이 변수 액션 이름을 가진 컨트롤러를 기본 수 있다고 생각하지 않습니다, 그렇지 않으면 경로에서 액션이나 컨트롤러이고 어떤 경로가 일치하는지 알 수있는 방법이 없습니다. 난 당신이 하드 코드의 행동을 할 수 있다고 생각 :

관련 문제