2014-11-13 3 views
1

나는 응용 프로그램의 모든 매개 변수가있는 사용자 정의 관리자 섹션으로 웹 응용 프로그램 (ASP.NET MVC 5)을 작성합니다.컨트롤러의 기본 경로를 사용하지 않도록 설정하는 방법 ASP.NET MVC 5

이 섹션의 이름을 쉽게 변경할 수 있기를 원합니다.

예.

myapp.com/admin/{controller}/{action} 

내가 영역을 사용하려고했습니다

myapp.com/custom-admin-name/{controller}/{action} 

이 될 수 있지만, 모든 controllersmodels이 지역의 namespace 결합되어 있기 때문에 자신의 이름을 편집하기 어려운 것처럼 보인다.

는 또한 사용자 정의 경로가

routes.MapRoute(
    "AdminControllerAction", 
    "custom-admin-name/{controller}/{action}", 
    new { controller = "Dashboard", action = "Index" } 
); 

그래서

mywebsite.com/custom-admin-name/dashboard/index 

을 할 수있는 설정하려고했습니다 그러나 문제는 내 관리 컨트롤러와 액션은 여전히 ​​

를 사용하여 호출 할 수 있다는 것입니다
mywebsite.com/dashboard/index 

기본값을 취소 할 수 있습니까? 컨트롤러/액션의 라우팅?

이 문제를 해결할 수있는 해결책이 있습니까? 이 네임 스페이스에 속하지 않는 컨트롤러가 무시됩니다 있도록이

RouteTable.Routes.Remove(RouteTable.Routes["NAME ROUTE YOU WISH TO RMOVE"]); 

답변

2

으로 제거

+0

오늘 밤 테스트 할 예정이지만 실행 가능한 솔루션처럼 보입니다. – RPDeshaies

+0

기본 라우터보다 먼저 관리 루트 섹션을 넣어야합니다. – RPDeshaies

+0

좋은 점은 다음과 같습니다. 대답 –

0

봅니다 주어진 경로에 대한 컨트롤러 네임 스페이스를 제한 할 수있는 방법이있다. (필요한 경우 여러 네임 스페이스를 추가 할 수 있습니다)

는 예를 들어, 다음은 YourApp.Controllers 네임 스페이스에서 컨트롤러로 제한됩니다

Route route = routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    namespaces: new[] { "YourApp.Controllers" }     
); 
route.DataTokens["UseNamespaceFallback"] = false; 

그렇지 않으면 그냥 네임 스페이스의 우선 순위를한다, 네임 스페이스 대체가 중요 비활성화 .

그래서, 당신은 위의 네임 스페이스 YourApp.Controllers에 기본 경로를 제한하고 네임 스페이스 YourApp.Controllers.Admin 제한 사용자 지정 관리 경로를 만들 수 있습니다

Route route = routes.MapRoute(
    "AdminControllerAction", 
    "custom-admin-name/{controller}/{action}", 
    new { controller = "Dashboard", action = "Index" }, 
    namespaces: new[] { "YourApp.Controllers.Admin" }     
); 
route.DataTokens["UseNamespaceFallback"] = false; 

가 Tareck에서 언급 한 바와 같이 있다는 점 유의 하시길 바랍니다 관리 경로가있다를 일반 경로 앞에 정의되어야합니다.

관련 문제