2013-07-15 4 views
0

컨트롤러 내에 컨트롤러가있을 수 있습니까?asp.net mvc 4 컨트롤러 내의 컨트롤러

이미 사용자 컨트롤러가 있고 이제 역할 컨트롤러를 추가하려고합니다.하지만 다른 컨트롤러를 만들고 액세스하는 대신 사용자 컨트롤러 내에서/users/roles/index와 같은 역할 컨트롤러에 액세스하려고합니다. 를 통해/역할/인덱스

답변

0

당신이 경로

//Mapping vanity url for user roles 
routes.MapRoute(
    "RolesRouteName", // Route name 
    "user/{action}/{index}/{id}", 
    new { controller = "roles", action = "index", id = UrlParameter.Optional} 
); 

를 정의하고 일반적인 REST의 implem로 유지하려면

@Html.RouteLink("RouteLinkText", "RolesRouteName", new { id =1212 }) 
0

로 사용할 수 있습니다 IMHO 그런 다음 나는 그것을 피하고 각 루트 모델 (사용자, 역할 등)에 컨트롤러를 할당하는 것이 좋습니다.

중첩 리소스 (특정 사용자의 역할 만 표시, 업데이트, 삭제하려는 경우)를 통해 사용자가 액세스 할 수있게하려면 다음과 같이 경로를 정의 할 수 있습니다.

나는이 갈 것 대신에 당신의 의도가 /user/ URL 뒤에 역할 관리를 숨길 경우
routes.MapRoute(
    "RolesForUser", // Route name 
    "user/{userId}/{controller}/{action}/{id}", 
    new { controller = "roles", action = "index", id = UrlParameter.Optional} 
); 

그래서 user/3/roles/index에 대한 링크는 사용자, 역할 컨트롤러의 index 액션에 3.

을 당신을 데려 갈 것이다 조금 더 나아가 MVC 프로젝트에 사용자 (또는 관리자) Area을 만드십시오. Visual Studio에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Add -> Area...을 선택하는 것)