2010-05-07 4 views
6

나는 Domain Driven Design을 배우려고 노력하고 있으며, 최근에 많은 사람들이 특정 뷰에 표시하고자하는 모든 값을 저장하는 ViewModels를 만드는 것을지지한다고 읽습니다.ViewModel의 유효성을 검사하고 매핑하는 방법은 무엇입니까?

제 질문은 양식 인증을 어떻게해야합니까? 각 뷰에 대해 별도의 유효성 검사 클래스를 만들거나 함께 그룹화해야합니까? 또한 코드에서 어떻게 보이는지 혼란 스럽습니다. 나는 현재 검증을 생각하고 viewmodels 사물의 체계에 맞는 방법

이입니다

보기 (일부 사용자 입력) -> 컨트롤러 -> (뷰 모델의) FormValidation -> (만약 뷰 모델에 유효한 맵 도메인 모델) -> 도메인 계층 서비스 -> 인프라

고마워!

P. C#으로 Asp.net MVC를 사용합니다.

답변

0

나는 ViewModel에 폼 유효성 검사를 실험하고 복잡한 비즈니스 유효성 검사를 위해 서비스 레이어를 사용합니다.

이것은 실제로 진짜 잘 작동되었으며 코드는 너무 쉽게 읽고 이것은 일반적인 질문

0

도메인 모델에 유효성 검사 규칙을 넣는 것이 좋습니다. 이것은 가장 쉽고 반복적 인 방법입니다 (System.ComponentModel.DataAnnotations 사용 - 예 : MVC 2 기본 모델 바인더가 바로 지원함).
복잡하고 큰 와이드 도메인 모델이 있고 이름이 같은 매핑 속성을 사용하지 않는 경우 - AutoMapper를 사용해보십시오.이 도구는 이러한 종류의 작업을 수행하는 데있어 최고의 도구입니다.

0

프리젠 테이션 계층에서 뷰 모델의 유효성을 검사합니다. 명심해야 할 점은 프리젠 테이션 관련 유효성 검사 만 유효해야합니다 (날짜가 올바른 형식, 이름! = ""등).

Asp.net Mvc에는 일반적으로 기본 유효성 검사를 수행하기에 충분한 in-built validation support이 있습니다.

도메인 구동 디자인을 적용 할 때 까다로운 부분은 도메인 유효성 검사입니다. domain model dumb을 매우 어렵게 만들지 않고도 '유효성 검사 실행'을 할 수있는 복잡한 규칙, 리포지토리에 대한 의존성 및 이와 유사한 것들이있을 수 있습니다.

따라서 도메인 객체가 invalid 상태가되지 않도록하고 예외가 발생하는 경우를 대비하는 것이 좋습니다.


더 나은 기계적 도메인 모델에보기 모델을 매핑 할하지 않는 -이 방법은 커플 링을 증가, 도메인 모델의 캡슐화 아래를 바보을 깰 수 있습니다.

0

유지하는 것입니다 항상 정답이없는 하나입니다. Derick Bailey 저의 this post을 확인하십시오. 이 질문에 대한 좋은 토론이며이 문제에 대한 다른 훌륭한 게시물에 대한 링크가 몇 가지 있습니다.

관련 문제