2010-01-18 6 views
2

SO의 커뮤니티 응답을보고 싶습니다. ViewModel은 기본적으로 뷰와 데이터를 바인딩하는 데 사용된다는 것을 알고 있습니다. 양식이 제출 될 때, 반환 될 (모델 바인딩 된) 객체가 ViewModel 또는 엔터티일까요? 나는 ViewModel이 엔티티라는 것을 알고 있지만 여기서는 이론적으로 이야기하고 있습니다. 나 자신과 팀이 개념을 이해하고 있는지 확인하고 싶습니다.ViewModel의 모든 곳!

답변

0

그것은 오래 당신이 lazyness의 디자인을 손상하지 않는 한 둘을 확인합니다. 예 : 복잡한 엔티티에 바인딩하는 것은 쉽지 않습니다. 예를 들면 엔티티에 매개 변수없는 생성자가없는 경우와 바인딩을 쉽게하기 위해 이러한 엔티티를 피하면 ... 나쁜 것입니다. UI 컨트롤이 날짜 나 부동을 이해할 수 없기 때문에 모든 변수를 "문자열"로 만드는 것과 같습니다. 그것은 또한 멍청한 DTO 같은 entites 및 빈혈 도메인 모델로 이어질 수 있습니다. 그러나 스마트 엔티티가 필요하지 않은 경우 모델 바인딩에서 사용할 수 있습니다.

항상 그렇듯이 결정을 내리는 데는 경험과 좋은 취향이 필요합니다. 간단한 규칙은 없습니다. 도메인 디자인에 대한 UI 영향을 피하는 한 가지 방법은 도메인 수준을 먼저 개발하는 것입니다 (TDD가 좋은 도움이됩니다). 또 다른 방법은 도메인 계층에 대해 여러 개의 "클라이언트"를 갖는 것입니다. 다양한 요구 사항을 통해 핵심 기능을 도메인 계층으로 추출하고 프레젠테이션 특성 및 서식과 같은 특정 항목을 적절한 계층 /보기 모델로 이동시킬 수 있습니다.

0

ViewModel을 사용하여 데이터를 페이지로 전달하고 데이터를 가져옵니다. 모든 양식을 먼저 ViewModel에 연결하면 필요한 모든 유효성 검사가 실행되고 해당 DTO/Entity로 변환됩니다.

+1

그러나 왜 모델 바인더가 적절한 DTO에 바인딩하고 유효성 검사를 적용 할 수있는 경우 변환을 수행합니까? 그냥 궁금해 ... – RailRhoad

+1

@ RailRhoad- "이용 약관에 동의합니다"와 같은 것에 대해 생각하십시오. – RichardOD

+0

@ RichardOD- 죄송합니다. 부자, 그게 무슨 뜻인지 정말 모르겠어요! – RailRhoad

3

보기에 ViewModel을 제공하고 ModelBinder를 비즈니스 엔티티 중 하나에 바인딩하는 것을 선호합니다.

내 ViewModels에는 대개 디스플레이 위주의 데이터 (예 : 위젯 A 표시 여부)가 거의 포함되어 있지 않으므로 실제로 바인딩 할 필요가 없습니다.

친절,

+0

그건 내가하는 일이지만, 꽤 많은 사람들이 그들의 뷰 모델에 구속된다는 것을 알게됩니다. – RailRhoad

관련 문제