2010-05-04 5 views
1

"뷰 모델"이라는 이름은 뷰의 데이터를 모델링 함을 나타냅니다. 그 정도는 명백합니다. 뷰 모델에서 할 수있는 또 다른 것은 무엇입니까?뷰 모델에 어떤 종류의 데이터가 속합니까?

예를 들어,보기에는 장바구니에있는 항목 목록, 고객의 신용 카드 정보 필드 및 고객의 청구 정보 필드가 표시 될 수 있습니다. 뷰 모델에는 모든 항목의 속성이 포함될 수도 있고 또는 장바구니 항목의 속성 만 포함될 수도 있습니다.

답변

2

보기 모델은보기가 표시/수정하는 필드를 나타내는 클래스입니다. 예를 들어 장바구니와 고객의 신용 카드를 모두 같은 페이지에 표시하려는 경우 이러한 속성은 모두 뷰 모델에 속해야합니다. 뷰가 일 이름의 드롭 다운 목록을 보여줄 것입니다 경우

당신은 당신의 뷰 모델에서이 같은 특성을 넣을 수 :

당신이보기 모델을 사용하는 방법을 정확하게
public IEnumerable<SelectListItem> DayNames 
{ 
    get 
    { 
     return CultureInfo 
      .CurrentCulture 
      .DateTimeFormat 
      .DayNames 
      .Select((dayName, index) => new SelectListItem 
      { 
       Value = index.ToString(), 
       Text = dayName 
      }); 
    } 
} 
+0

비어있는 입력 필드는 어떻게됩니까? 이 데이터는 modelbinder를 통해 제출 작업에 제공됩니다. 제출 작업이 뷰 모델을 받아야한다는 의미입니까? –

+0

예, 제출 작업은 데이터 액세스 계층으로 처리 될 도메인 모델에 매핑 될보기 모델을 받아야합니다. –

1

는 판단 호출입니다. 한 명의 개발자가 입력 된 ViewModel을 더 적게 사용하여 재사용 할 수 있습니다. 또 다른 개발자는 더 많은 ViewModel을 가질 수 있습니다. 그리고 다른 개발자가 ViewData에 더 의존 할 수도 있습니다.

가능한 경우보기 모델을 잘 정리하고보기에 필요한 항목 만 포함하고 대부분 밝은 항목 개체로 구성하십시오. 그러나 복잡한보기가있는 경우보기 논리를 단순화하는 데 도움이되는 고도로 사용자 지정된보기 모델 클래스를 만드는 것을 두려워하지 마십시오. 약간의 사용되지 않는 데이터가있는 재사용 가능한 ViewModel을 만드는 것은 괜찮지 만, 모든 ViewModel을 하나의 크기로만 사용하는 것을 피하십시오. ViewModel은 해당 뷰에 필요한 데이터 만 있거나 매우 근접해야합니다.

관련 문제