저는 사람들이 ViewModel을 구축하는 다양한 방법과 그 방법을 선택하는 이유에 대해 궁금합니다.ViewModels을 채우거나 유효성을 검사하는 방법은 무엇입니까?
여기 몇 가지 방법을 생각해 볼 수 있습니다.
-1. 주입 된 저장소 - 컨트롤러가 모델을로드하고 ViewModel에 매핑합니다. 여기서 ViewModel 생성자는 다양한 콜렉션을 취하여 ex에 대해 내부적으로 설정할 수 있습니다.
public CustomerController(ISomeRepository repository)
{
_repository = repository;
}
public ActionResult Create()
{
CustomerCreateViewModel model = new CustomerCreateViewModel(_repository.GetShipTypes,
_repository.GetStates);
..
..
}
-2와 같은 선택 목록에 있습니다. ViewModelBuilder - 주입 된 저장소의 인스턴스로 컨트롤러에 주입되거나 인스턴스화됩니다. ,
var orderViewModel = orderViewModelBuilder.WithStates().Build(orderId);
-3
>var orderViewModel = orderViewModelBuilder.WithStates().Build(orderId);
또는 같은 것을 통해 호출합니다. 컨트롤러에서 직접 (코드 불필요 - 지저분한)
-4. 컨트롤러가 다음 뷰 모델 매핑 또는 도메인 모델 반환 몇 가지 다른 서비스 (주입 여부) (사람이 직접 지정되지 않은 뷰 모델을 반환하는이 일을가/뷰 모델 빌더 클래스로 언급?)
public JobCreateViewModel BuildJobCreateViewModel(int parentId)
{
JobCreateViewModel model = new JobCreateViewModel();
model.JobStatus = _unitOfWork.JobRepository.GetJobStatuses();
model.States=_unitOfWork.StateRepository.GetAll();
return model;
}
조회 모델의 유효성 확인과 관련하여 이제는 표준 유효성 검사를 위해 기본 ViewModel 클래스를 상속하거나 모든 ViewModel간에 유효성 검사 (예 : 데이터 주석 특성)를 복사하거나 간단히 서버 측 유효성 검사에 의존합니다. 그것은 모두 귀하의 도메인 개체를 다시 확인할 수 있습니까?
다른 사람? 더 나은 점이 있나요? 왜?
편집 아래 링크를 기반으로, ViewModels의 아키텍처에 대한 Jimmy Bogard의 멋진 기사를 찾았습니다. 위의 질문에 직접적으로 대답하지는 않지만 ViewModel 정보를 얻기 위해 여기에 오는 모든 사람들에게 훌륭한 참고 자료입니다. http://lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models/
여기에 downvote가있었습니다 - 단지 궁금한 이유 - 내가 명확히 할 수있는 것? –
내 휴대 전화에서 실수로 별표를 표시하려고 시도했지만 미안합니다. 이제 실행 취소하기에는 너무 늦었습니다. – Jason
아, 걱정할 필요는 없습니다.) –