2012-11-03 6 views
0

우리는 nHibernate를 사용하는 MVC3 프로젝트를 가지고 있습니다. 저장소 및 서비스 계층에서 사용되는 모든 모델 클래스를 포함하는 별도의 모델 프로젝트가 있습니다. 이 모델은 System.ComponentModel.DataAnnotations의 DisplayAttribute 및 RequiredAttribute와 같은 데이터 주석을 사용합니다.MVC 속성에 대한 모델 계층 종속성

System.Web.Mvc에 포함 된 RemoteAttribute와 같은 특성도 있습니다.

물론 이것은 모델 프로젝트가 특정 프런트 엔드 기술에 종속되어 있음을 의미합니다.

솔루션에 다른 프런트 엔드가있을 수 있다고 가정하면이 종속 링크를 처리하는 가장 좋은 방법은 무엇입니까?

+1

모델 자체가 아닌 해당 ViewModel에만 해당 "특정보기"특성 적용 – psousa

답변

1

RemoteAttribute은 서버의 속성을 확인하기 위해 컨트롤러/동작을 지정하고 모델에는 컨트롤러, 동작 또는 경로와 같은 개념에 대한 지식이 없어야하므로 모델에 속하지 않습니다. 프리젠 테이션 레이어는 모델에 따라 다르며 그 반대가 아닙니다.

모델을 상속 한 뷰 모델을 만들고 속성을 오버라이드하고 (가상이어야 함) RemoteAttribute을 추가합니다. 이렇게하면 중복과 매핑을 피할 수 있습니다.

+0

현재보기 모델에는 모델 유형의 특성이 있습니다. 이 경우 다른 뷰 모델 레이어가 필요합니까? 하나는 Remote와 같은 원본 모델의 유효성 검사 속성을 상속하고 무시하고 뷰와 뷰에 필요한 데이터가 포함 된 면도기 뷰에서 사용되는 다른 뷰 모델과 새 유효성 검사보기 모델의 속성을 덮어 씁니다. –

+1

@ 존 스미스 네, 저에게 좋은 소리입니다. –

1

데이터베이스 모델과 프론트 엔드 기술 간의 종속성을 줄이기 위해 컨트롤러의 다른 프론트 엔드 동작에 대한 유효성 확인을 위해 특수 뷰 모델을 사용하고 뷰 모델에서 이후의 데이터베이스 엔터티에 데이터를 넣을 수 있습니다.

관련 문제