2012-03-05 1 views
3

등록 된 영역이없는 웹 사이트가 있습니다. 그런 다음 "MyNewArea"이라는 영역을 등록했습니다.MVC 기본 영역 작동하지 않음

블로그와 같은 기본 웹 사이트 링크가 더 이상 작동하지 않습니다.

그래서 처음에는 프로젝트를 만들 때 하나의 영역이있는 영역 폴더와 기본 폴더가 생겼습니다.

내 지역에 AreaRegistration 클래스 있음.

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "MyArea_default", 
     "{controller}/{action}/{id}", 
     new { action = "Index", id = UrlParameter.Optional } 
    ); 
} 

하지만 기본과 충돌처럼이 보이는

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

중 하나 내가 기본 사이트와 컨트롤러와 함께 작동 할 영역을 얻기 위해 어떻게해야합니까?

답변

1

변경 새 지역 경로 테이블이 될 수 있습니다 : (가 처음 일치하는 것 같이"충돌"의 의미에서) 경로가 충돌 할 매핑

context.MapRoute(
    "MyArea_default", 
    "MyNewArea/{action}/{id}", 
    new { controller = "MyNewArea", action = "Index", id = UrlParameter.Optional } 
); 
2

네 말이 맞아. (그리고 턴 지역 경로에서),이 didn를 처리를 위해 귀하의 지역 경로를 사용

 context.MapRoute(
      "MyArea_default", 
      "MyArea/{controller}/{action}/{id}", 
      new { controller = "MyAreaController", action = "Index", id = UrlParameter.Optional } 
     ); 

이 지역을 추가 한 후 URL이 파산 이유 : 당신은 뭔가처럼되고 매핑 된 영역 경로를 변경해야 귀하의 MyArea에 존재합니다.

+1

컨트롤러를 지정해야 동일한 문제가 발생합니다. – griegs

+0

@griegs 기술적으로는 그렇지 않습니다. 이것은 단순히 매개 변수 기본값에 대한 것입니다. 그래서 예, 컨트롤러를 명시하지 않으면 문제가 발생할 것입니다. 그러나 나는 '컨트롤러'의 기본값을 포함하도록 나의 대답을 편집했다. –