Zack Owens의 개요에 따라 멀티 테넌시를 사용하는 응용 프로그램을 작성 중입니다.멀티 테넌트 MVC 3보기 모델의 응용 프로그램 문제
Zack의 예에서 각 테넌트에 대한 컨트롤러와 뷰를 저장하기 위해 별도의 C# 클래스 라이브러리가 있습니다. 필자는 뷰를 컴파일 한 Spark View 엔진을 사용하지 않기 때문에 옵션이 아닙니다. 대신 각 임차인을 위해 별도의 MVC3 앱 프로젝트를 만들었습니다. 콘텐트, 컨트롤러, 뷰 등을 저장하고 있습니다.
커스텀 컨트롤러 팩토리가있는 메인 MVC 앱 프로젝트 (시작 앱)가 있습니다. Zacks 예제와 유사한 어셈블리를 스캔하고 구조 맵을 사용하여 종속성 삽입을 설정합니다. 컨트롤러보기를 사용하여 올바른보기를 잡는 뷰 엔진이 있습니다. 임차인 응용 프로그램에서 뷰 또는 종속성을 찾을 수 없으면 MVC App 프로젝트의 뷰 또는 종속성을 사용합니다. 뷰 모델을 제외하고 모든 것이 효과적입니다.
우리보기 중 대부분은 (전부는 아니지만)보기 모델에 전달됩니다. 세입자가 사용자 정의보기와 함께 갈 수 있도록 사용자 정의보기 모델을 가질 수 있도록 View App 클래스가 Main App Project가 아닌 Tenant App Project에 있어야합니다.
작동하는 것처럼 보이지만 계속 오류가 발생합니다.
시나리오 # 1 - 기본 MVC App Project에 기본보기 모델이 있습니다. Tenant App은 Main App에 대한 참조를 가지므로 기본 View Model을 사용할 수 있습니다. 아무 문제 없습니다. 이제 View Model을 추가하거나 View Model을 재정의하려면 클래스를 만들어 Tenant App에 저장합니다. 문제는 페이지를 호출 할 때 메인 애플리케이션에서 테넌트 애플리케이션에 대한 참조가없고 순환 참조 문제로 인한 것이 아니기 때문에 메인 MVC 애플리케이션이 새로운 뷰 모델을 찾을 수 없다는 것입니다.
시나리오 # 2 - 거주자 응용 프로그램에서 참조를 주 응용 프로그램으로 제거합니다. 그런 다음 기본 애플리케이션에서 기본 애플리케이션 모델을 기본 애플리케이션으로 복사하고, 이름 공간을 변경하고, 기본 애플리케이션에서 보조 애플리케이션으로 참조를 작성하여 기본 애플리케이션에서 뷰 모델 클래스에 액세스 할 수 있도록합니다.
나는 다음을 실행하고 다음과 같은 오류가 발생합니다 :
사전에 전달 모델 항목 유형 'Sample.Models.Login'의이지만,이 사전은 유형 'Sample.Models의 모델 항목을 필요로 .로그인'.
오류는 의미가 있지만 실제로는 아닙니다. Sample.Models.Login이라는 클래스가 하나뿐입니다.
저는 이것이 왜 이렇게하고 있는지에 대한 가정을 가지고 있지만 알아낼 수는 없습니다. 모든 팁이나 조언을 크게 주시면 감사하겠습니다.
고맙습니다.
참고로보기를 컴파일 할 수 있습니다. 언로드 할 프로젝트를 마우스 오른쪽 단추로 클릭 한 다음 마우스 오른쪽 단추로 클릭하여 편집 한 다음 첫 번째 그룹의 마지막 항목 (MvcBuildViews)을 false 대신 true로 설정합니다. 프로젝트를 저장하고 다시로드하고 컴파일하십시오. –