2013-07-07 2 views
0

기본적으로 내 응용 프로그램에서 나는 무거운보기 모델 (및 이러한보기 모델 내에서보기 모델)을 시작합니다. 컨트롤러에서 인스턴스화하고 채울 때 컨트롤러 메서드가 매우 두꺼운 것처럼 보입니다. 모든 논리가 모델 계층에서 처리되고 컨트롤러가 메서드를 호출하여 뷰 모델에 삽입 할 데이터 만 검색하는 경우에도 마찬가지입니다.뷰 모델을 인스턴스화하고 채우는 위치는 어디입니까?

내보기 모델을 인스턴스화하고 채우는 가장 좋은 장소는 어디입니까?

+0

일반적으로보기 모델은 컨트롤러에서만 인스턴스화됩니다. 실제 용도는보기로 전달되기 때문입니다. 코드에서 개선 할 수 있다고 생각하는 예제를 제공 할 수 있습니까? 아마도 컨트롤러에서 발생하는 일부 논리를 뷰 모델 자체로 옮길 수 있습니까? – David

답변

1

내보기 모델을 인스턴스화하고 채우는 데 가장 적합한 곳은 어디입니까?

응용 프로그램의 매핑 계층에 있습니다. 예를 들어, 당신은 다음과 같을 수 AutoMapper 컨트롤러 코드를 사용하는 경우 :

[AutoMap(typeof(DomainModel), typeof(ViewModel))] 
public ActionResult Index(int id) 
{ 
    DomainModel model = repository.Get(id); 
    return View(model); 
} 

물론 사용하지 않는 경우 :

public ActionResult Index(int id) 
{ 
    DomainModel model = repository.Get(id); 
    ViewModel viewModel = Mapper.Map<DomainModel, ViewModel>(model); 
    return View(viewModel); 
} 

또는 사용자 지정 작업 필터를

이도에 더 단순화 수 있습니다 AutoMapper이지만 일부 사용자 정의 코드는 문제가되지 않습니다. 이 작업을 처리 할 컨트롤러에 매핑 인터페이스를 주입하면됩니다.

관련 문제