2016-11-17 3 views
1

ASP.NET MVC에서 실행되는 엔터프라이즈 응용 프로그램이 있습니다. Google은 최근에 애플리케이션의 전체 UI를 개선하기 시작했습니다. 이제, UI라고 할 때, 단순한 CSS가 아닌 별도의 폴더에 넣고 동적으로로드 할 수 있습니다. 기본적으로 완벽한 탐색 구조, 레이아웃 요소, 모든 것이 이제 개선되고 있습니다. 그러나 전반적인 코드 (컨트롤러, 모델)는 여기저기서 약간의 개선이 이루어져 거의 동일하게 유지됩니다. 이제 우리는 개정 된 UI를 출시 할 예정이지만 동시에 기존 UI를 병렬로 지원합니다.프런트 엔드 ASP.Net MVC 버전

목표는 appURL/v2/과 같은 새 UI를 실행하는 것과 동일하게 유지됩니다.

지금 우리의 목표는 컨트롤러 모델을 다른 프로젝트에 복제 할 필요가 없다는 것입니다.

따라서 URL의 버전을 식별하려면 /v2/ 식별자를 기반으로 응용 프로그램에서 전역 적으로 다른보기를 제공하는 것이 가장 좋은 방법일까요?

답변

2

영역을 사용하면 동일한 컨트롤러를 사용하여 여러보기를 제공 할 수 있습니다. 두 경로가 같은 공간에있는 컨트롤러를 찾습니다,이 구조를 사용

routes.MapRoute(
    "v2_default", 
    "v2/{controller}/{action}/{id}", 
    new { area = "v2", controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    namespaces: new string[] { "YourNamespace.Controllers" } 
    ); 

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { area = "", controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    namespaces: new string[] { "YourNamespace.Controllers" } 
    ); 

: 그래서 당신은 따라가 "V2"를 자신의 전망을 즐길 수있는 "V2"영역을 생성하고 요청을 라우팅.

+0

컨트롤러와 동작은 동일하지만 모든 동작 내에서 코드를 변경하고보기에 if/else를 넣지 않고도 v2 영역에서보기를 가져와야한다고 정의하려면 어떻게해야합니까? – Vikram

+1

@Vikram보기는 경로 값에서 영역에 따라 해결되어야합니다. 그래서'/ v2'를 통해 액션을 요청하면, 그 액션을 위해'Areas/v2/Views' 디렉토리에 접근해야합니다. – CodeCaster

+0

시도했는데 컨트롤러 & 동작이 "/ v2"영역에 정의 될 것으로 예상된다는 것이 문제입니다. v2에 컨트롤러가 없으면 404 오류가 발생합니다. 어떤 아이디어, 어떻게 v2 지역보기와 일반 컨트롤러를 섞을 수 있습니까? – Vikram