0

Microsoft에서 템플릿 사이트에 로그인 페이지를 표시하는 방법에 대해 혼란스러워합니다. "사용자 이름", "암호"및 "내 정보 기억"에 대한 구체적인 표현 모델 자체에 설정됩니다. 이것은 나에게 완전히 거꾸로 보인다. 나는 MVC 패턴의 전체적인 포인트가 관심사의 분리를 돕는 것이라고 생각했다; 뷰에 표시된 텍스트가 그런 모델에 묶여 있지 않을 것입니다. 뷰에서 일반 텍스트로 "사용자 이름"을 원한다면 모델을 변경하지 않고도 "사용자 ID"로 변경하거나 다른 언어로 쉽게 변환 할 수 있습니다.MVC3 용 템플릿 사이트; 이것이 모델을 표시하는 적절한 방법입니까?

로그인 페이지와 비슷하게 작동하는 새 페이지를 만들 때 템플릿을 따라야합니까? 모델 자체에 표시 텍스트를 정의하는 데 몇 가지 이점이 있습니까?

답변

3

실제로보기로 전달해야하는 것은 모델이 아닙니다. 뷰 모델입니다. 뷰 모델은 특정 뷰의 요구 사항에 맞게 특별히 조정 된 클래스입니다. 따라서 [Display] 속성을 사용하여 속성을 장식하여 해당 레이블의 텍스트를 변경하거나 두 번째 인수로 Html.LabelFor 도우미를 사용하는 경우보기에서 설정하면됩니다.

+0

흥미 롭습니다 ... AccountModels.cs의 클래스가 "보기 모델"로 정의되어있는 곳이 있습니까? 나는 전에이 개념을 몰랐다. 뷰에 정의 된 모델의 텍스트를 갖는 것보다 이것이 바람직한 이유는 알 수 없습니다. – GendoIkari

+0

@GendoIkari 해당 레이블은보기의 여러 위치에 레이블이있는 경우보기의 각보기보다 ViewModel에서 레이블을 쉽게 변경할 수 있기 때문에 바람직합니다. 이 패턴은 MVVM 패턴입니다. – AJC

+0

고마워 ... 이제는 "뷰 모델"이라는 용어를 들었으므로 웹에서 유용한 정보를 찾고 있습니다. 1.0 이후 MVC로 작업하지 않았으므로 이것은 나에게 새로운 것입니다. – GendoIkari

0

"System.ComponentModel.DataAnnotations"네임 스페이스의 attibute로 viewmodel 속성을 꾸밀 수 있으며 더 많은 뷰와 컨트롤러 동작에서 디스플레이 레이블 및 유효성 검사 모델에 사용할 수 있습니다. 이 목적을 위해 model 대신 viewmodel을 사용할 수 있습니다.

관련 문제