문제

나는 방법에 건축하는 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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top