SO의 커뮤니티 응답을보고 싶습니다. ViewModel은 기본적으로 뷰와 데이터를 바인딩하는 데 사용된다는 것을 알고 있습니다. 양식이 제출 될 때, 반환 될 (모델 바인딩 된) 객체가 ViewModel 또는 엔터티일까요? 나는 ViewModel이 엔티티라는 것을 알고 있지만 여기서는 이론적으로 이야기하고 있습니다. 나 자신과 팀이 개념을 이해하고 있는지 확인하고 싶습니다.ViewModel의 모든 곳!
답변
그것은 오래 당신이 lazyness의 디자인을 손상하지 않는 한 둘을 확인합니다. 예 : 복잡한 엔티티에 바인딩하는 것은 쉽지 않습니다. 예를 들면 엔티티에 매개 변수없는 생성자가없는 경우와 바인딩을 쉽게하기 위해 이러한 엔티티를 피하면 ... 나쁜 것입니다. UI 컨트롤이 날짜 나 부동을 이해할 수 없기 때문에 모든 변수를 "문자열"로 만드는 것과 같습니다. 그것은 또한 멍청한 DTO 같은 entites 및 빈혈 도메인 모델로 이어질 수 있습니다. 그러나 스마트 엔티티가 필요하지 않은 경우 모델 바인딩에서 사용할 수 있습니다.
항상 그렇듯이 결정을 내리는 데는 경험과 좋은 취향이 필요합니다. 간단한 규칙은 없습니다. 도메인 디자인에 대한 UI 영향을 피하는 한 가지 방법은 도메인 수준을 먼저 개발하는 것입니다 (TDD가 좋은 도움이됩니다). 또 다른 방법은 도메인 계층에 대해 여러 개의 "클라이언트"를 갖는 것입니다. 다양한 요구 사항을 통해 핵심 기능을 도메인 계층으로 추출하고 프레젠테이션 특성 및 서식과 같은 특정 항목을 적절한 계층 /보기 모델로 이동시킬 수 있습니다.
ViewModel을 사용하여 데이터를 페이지로 전달하고 데이터를 가져옵니다. 모든 양식을 먼저 ViewModel에 연결하면 필요한 모든 유효성 검사가 실행되고 해당 DTO/Entity로 변환됩니다.
보기에 ViewModel을 제공하고 ModelBinder를 비즈니스 엔티티 중 하나에 바인딩하는 것을 선호합니다.
내 ViewModels에는 대개 디스플레이 위주의 데이터 (예 : 위젯 A 표시 여부)가 거의 포함되어 있지 않으므로 실제로 바인딩 할 필요가 없습니다.
친절,
댄
그건 내가하는 일이지만, 꽤 많은 사람들이 그들의 뷰 모델에 구속된다는 것을 알게됩니다. – RailRhoad
- 1. C#/WPF : ViewModel의 모든 속성에 대한 PropertyChanged?
- 2. 내 ViewModel의 생성자가 ViewModel의 데이터를 채워야합니까?
- 3. ViewModel의 책임
- 4. ViewModel의 속성 및 컬렉션 항목의 속성에 ViewModel의 속성을 바인딩하려면 어떻게해야합니까?
- 5. WPF의보기에서 ViewModel의 속성 설정
- 6. WPF - GlobalResource와 ViewModel의 연결
- 7. ViewModel의 구성원으로 ViewModel
- 8. ViewModel의 제스처 처리
- 9. ViewModel의 처분을 트리거하는 방법
- 10. ViewModel의 Silverlight 3 Beta, NavigationService
- 11. ViewModel의 메서드를 WPF의 이벤트에 연결
- 12. viewModel의 속성에 대한 데이터 바인딩
- 13. ViewModel의 모델이 포함 된 면도기
- 14. viewmodel의 체크 박스 값을 가져옵니다.
- 15. ViewModel의 유효성 검사가 예외를 throw합니다.
- 16. MVC 프로젝트를 나눌 곳
- 17. SQL 선택 모든 레코드 곳 독특한 복합 키
- 18. ActiveRecord 존재하지 않는 곳
- 19. Warbler : 내 이미지가있는 곳
- 20. 레이아웃 코드를 넣을 곳
- 21. ViewModel의 유효성을 검사하고 매핑하는 방법은 무엇입니까?
- 22. GridView 내에서 ViewModel의 속성에 바인딩하는 방법
- 23. MVC3 ViewModel의 컬렉션 또는 Ajax 서비스로 채우기
- 24. 진술이 추가되지 않는 곳
- 25. 여러 곳 generic 유형
- 26. 로컬 변수를 넣을 곳
- 27. 당신이 CSS를 정의하는 곳
- 28. 세션의 값이 저장되는 곳
- 29. 캐시가 asp.net에 저장되는 곳
- 30. SQL 로직을 넣을 곳
그러나 왜 모델 바인더가 적절한 DTO에 바인딩하고 유효성 검사를 적용 할 수있는 경우 변환을 수행합니까? 그냥 궁금해 ... – RailRhoad
@ RailRhoad- "이용 약관에 동의합니다"와 같은 것에 대해 생각하십시오. – RichardOD
@ RichardOD- 죄송합니다. 부자, 그게 무슨 뜻인지 정말 모르겠어요! – RailRhoad