2014-09-24 1 views
3

지금까지는이 작업을 수행 할 수 없어 도움이 필요합니다. 기본 MVC 5 사이트가 있고 Administration이라는 영역을 추가했습니다. 내 인생에서 지역에 대한 기본 컨트롤러/동작을 올바르게 설정하는 방법을 알 수 없습니다. 내 사이트에서영역에서 컨트롤러 이름을 제거하는 MVC5 사용자 지정 경로

, 내가 관리라는 영역 (색인 방법과 전망) 컨트롤러라는 이름의 관리자를 가지고 있고,이 지역 등록 비용 :

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     name: "Admin_base", 
     url: "Admin", 
     defaults: new { area = "Admin", controller = "Admin", action = "Index", id = UrlParameter.Optional } 
    ); 

    context.MapRoute(
     "Admin_default", 
     "Admin/{controller}/{action}/{id}", 
     new { action = "Index", id = UrlParameter.Optional } 
    ); 
} 

첫 번째지도 노선 날 http://myapplication/Admin를 검색 할 수 있습니다 내가 설정 한보기 (관리자/색인)와 URL이 http://myapplication/Admin (내가 원하는 것)으로 표시됩니다. 이제이를 추가하여 컨트롤러에 대한 추가 라우팅을 중단합니다. 따라서 Admin 영역의 Menu 컨트롤러로 이동하려고하면 오류가 발생합니다.

올바른 방법이 있습니까?

즉, http://myapplication/Admin/Menu/Create 경로를 올바르게 작성해야하지만이 영역에 대한 기본 컨트롤러/동작을 유지해야합니다.

답변

4

당신은 하나로 결합 할 수 있어야한다 :

context.MapRoute(
    "Admin_default", 
    "Admin/{controller}/{action}/{id}", 
    defaults: new { area = "Admin", 
        controller = "Admin", 
        action = "Index", 
        id = UrlParameter.Optional } 
); 

기본값을 할당하면 /Admin/를 호출 할 수 있어야하고, 나머지 매개 변수는 기본값으로 설정됩니다.

+0

정말 고마워요! 이 클래스를 일찍 시도한 것은 클래스 이름을 어딘가에서 재사용하여 작동하지 않는다고 생각했기 때문에 실패했습니다. 당신의 대답은 완벽하고 그렇게 설정할 것입니다. – Keith

관련 문제