ASP.NET MVC 베타-그룹 컨트롤러와망 가능한가요?
-
04-07-2019 - |
문제
나는 방법에 건축하는 ASP.NET MVC 응용 프로그램으로 최신 베타 버전이며,궁금해 가능한 경우 기본값을 변경하려면 프로젝트의 레이아웃
/Views/Home/Index.aspx /Views/Home/About.aspx
하기
/Blog/Views/Home/Index.aspx /Blog/Views/Home/About.aspx
/포럼/Views/Home/Index.aspx /포럼/Views/Home/About.aspx
의 목표는 몇 가지 분리"사용"이내에 하나의 웹 프로젝트가 토마스 Owens 물 이미 여기: 아래 어플리케이션 개발하는 디렉토리 구조를 것으로 예상된 다른 개발자가?
물론 이것은 다음을 포함해야 합니다 컨트롤러뿐만 아니라,뿐만 아니라 수 있습니다.
해결책
이것은 새로운 개념이 아닙니다. "영역"이라고합니다 모노레일. 최근 에이 주제에 대해 많은 윙윙 거리는 소리가있었습니다. atl.net 포럼 그리고 다른 곳. 스티브 샌더슨은 이것을하는 방법 그러나 분명히 그것은 몇 가지 문제를 남깁니다. Reseponse에서는 분명히 MVC 팀이 "깊은 표정"미래의 릴리스를 위해.
다른 팁
네,그것이 가능해야 합니다.나는 생각할 수있는 방법 중 하나;있을 수 있습니다 다른 사람.
첫 번째 단계는 수정하는 기본 경로를 포함하는 응용 프로그램 이름:
routes.MapRoute("Default",
"{applicationName}/{controller}/{action}/{id})",
null, null);
나는 당신이 두 그룹""응용 프로그램으로 다른 네임스페이스 내에서 하나의 어셈블리입니다.그래서 당신이 있습니다 두 개의 네임스페이스는 다음과 같:
- 프로그램이 setup.블로그입니다.컨트롤러
- 프로그램이 setup.포럼도 있습니다.컨트롤러
다음으로,당신을 변경할 필요가 컨트롤러는 공장도록화하고 오른쪽 컨트롤러입니다.당신이 할 수 있는 동등 이 DefaultControllerFactory 과 재정의하 GetControllerType 방법:
protected override System.Type GetControllerType(string controllerName)
{
string applicationName;
if (RequestContext != null &&
RequestContext.RouteData.Values.TryGetValue(
"applicationName", out applicationName)) {
// return controller type using app name to
// look up namespace and controllerName argument
return ...
}
// if no match, maybe it's a different controller/route
return base.GetControllerType(controllerName);
}
마지막으로,당신은 당신을 말할 필요 MVC 를 사용하 ControllerFactory.글로벌.맨.cs:
private void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
ControllerBuilder.Current.SetControllerFactory(
MyApp.MyControllerFactory());
}
위치 뷰 마찬가지로 처리할 수 있습니다.이 경우에,당신은 하위 유형 WebFormViewEngine.
방금 모노레일의 "영역"과 유사한 컨트롤러 그룹에 대한 하나의 접근 방식을 설명하는 블로그 게시물을 작성했습니다. 그래도 중첩 된 지역을 다루지는 않습니다.
http://haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx