컨트롤러 내에 컨트롤러가있을 수 있습니까?asp.net mvc 4 컨트롤러 내의 컨트롤러
이미 사용자 컨트롤러가 있고 이제 역할 컨트롤러를 추가하려고합니다.하지만 다른 컨트롤러를 만들고 액세스하는 대신 사용자 컨트롤러 내에서/users/roles/index와 같은 역할 컨트롤러에 액세스하려고합니다. 를 통해/역할/인덱스
컨트롤러 내에 컨트롤러가있을 수 있습니까?asp.net mvc 4 컨트롤러 내의 컨트롤러
이미 사용자 컨트롤러가 있고 이제 역할 컨트롤러를 추가하려고합니다.하지만 다른 컨트롤러를 만들고 액세스하는 대신 사용자 컨트롤러 내에서/users/roles/index와 같은 역할 컨트롤러에 액세스하려고합니다. 를 통해/역할/인덱스
당신이 경로
//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 })
로 사용할 수 있습니다 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...
을 선택하는 것)