2012-02-24 4 views
3

시나리오는 : 내가 일하는 회사는 계약에 의해 정의 된 기능을 제품으로 출하해야합니다.ASP.NET MVC 3에서 구성 가능한 시스템을 만드는 방법은 무엇입니까?

  • 한 클라이언트는 표시 할 데이터베이스 및 다운로드, 그리고 많은 다른 제품에서 데이터 만 필요로 전체 모든 보고서 기능을 통해 시스템 및 물건
  • 다른 클라이언트 (또는 더 정확하게 제품)가 필요합니다 가까운 미래에 시나리오가 나타날 수 있습니다.

다른 시스템을 만들고 각각에 버그를 추가하거나 수정하는 대신 클라이언트에게 전달할 내용과 보낼 개체를 설정할 수 있다는 것이 합리적입니다. 나는 그것에 대한 우아한 해결책을 찾기 위해 노력하고 있습니다 ... 내 컨트롤러와 모델은 똑같이 유지되지만 내보기는 큰 시간을 바꿀 것입니다.

어떻게 작동 시키는가에 대한 의견이 있으십니까?

답변

0

구성별로보기가 다른 경우 각보기 폴더에 하위 폴더를 만드는 것이 해결책 일 수 있습니다. 예 : Views/Home/Config1/Index.cshtml, Views/Home/Config2/Index.cshtml 등 컨트롤러에서 View (및 PartialView) 기능을 덮어 쓰면 (예 : MasterController 만들기)보기 디렉토리의 오른쪽 하위 폴더로 자동 전환 할 수 있습니다.

+0

하지만 우아하지 않습니다. 내 말은, 각기 다른 설정을 위해 각 컨트롤러마다 다른 View 폴더를 생성한다는 것입니다. 결국, 나는 많은 폴더로 끝날 것입니다. –

+0

참, 이것은 고객 당 구성이 아닌 예를 들어 3 개의 고정 구성이있는 경우에만 작동합니다. – Marthijn

1

내가 제대로 이해하는지 확실하지 않습니다. 두 개의 서로 다른 기능 세트가 있고 둘 다 사용할 수있는 단일 코드베이스에 이들을 결합하고자하십니까? 비슷한 수준에 있습니까? 다음의

내가 데이터와 로직 계층 (More Here)에 대한 단일 코드베이스를 유지하고, 프리젠 테이션 계층에 차이의 양에 depdending 작업 것

하나를 수행합니다

  • 다른 asp.net의 mvc3 만들기 다른 계층의 "공유 된"라이브러리를 사용하는 프로젝트
  • 하나의 단일 asp.net mvc3 프로젝트에서 모든 기능을 생성 한 다음 특정 구성을 활성화하거나 비활성화하는 경로에서 작업합니다. 원하는 경우 일부 구성에서이 작업을 수행 할 수도 있습니다 따라서 각 클라이언트마다 특정 빌드가 필요하지 않습니다.

나는 더 이상 말할 수 없다.

+0

음, 컨텍스트는 Power Generation입니다. 즉, 시스템이 우리의 하드웨어에 의해 수집 된 발전소 및 생성 단위에 관한 데이터를 표시 함을 의미합니다. 필자가 작업 한 시스템은 상업 및 유지 관리 데이터와 같은 관리 데이터 및 식물의 이미지와 또한 제품이 목록 및 차트로 수집 한 데이터를 표시합니다. 이제 관리 데이터를 표시하지 않는 제품이 필요합니다. 올바른 방법으로 수행하는 방법을 알지 못합니다. –

+0

글쎄, 당신은 지금 바로 당신이 두 번째 제품에 필요한 것을 추가하고 구현하지 않은 제품을 단순히 사용하지 않도록 미리 구현 한 것과 똑같은 로직을 사용할 수 있습니다 (제안에 대한 답변 참조). 구현 관련 문제가 있습니까? – WDRust

+0

기본 메뉴 (샘플과 함께 제공되는 메뉴)를 만들 때처럼 if를 작성하여 cshtml의 if가 표시되어야하는지 여부를 결정하는 것과 같은 것을하고 싶었습니다. 예를 들어 각 컨트롤러 액션에 ViewBag 항목을 만들어이 데이터를 보내지 않고이 데이터를 시스템에 포함시키지는 않겠습니다. 적어도 그것은 그것이 작동하는 것을 볼 수있는 한 가지 방법입니다. –

0

사용자가보기 권한을 가진 것처럼이 정보를 데이터베이스에 저장하고이 정보를 기반으로 메뉴를 만들어야하지 않습니까?

이것은 전체 메뉴 구조가 동적이된다는 것을 의미합니다 (따라서 메뉴가 정적 인 것처럼 상상할 수 있습니다). 그러나 그것은 당신의 문제를 해결할 것입니다. 제 생각에는 ..

+0

그건 내가 원하지 않는 것입니다. 위키 애플리케이션이나 Mantis Bug Tracker와 같이 구성 가능할 수있는 무언가가 필요합니다. 다른 역할을 만들려면 제공된 주석을 사용하면 충분합니다. –

관련 문제