2

나는이 다음 뷰 모델 :뷰 모델에 목록 유효성 검사를 추가하는 방법

나는 손님의 목록에 대한 몇 가지 유효성 검사를 추가 할
public class InvitationViewModel 
{ 
    public int id { get; set; } 
    public string InvitationName { get; set; } 
    public string Type { get; set; } 
    public string RSVPStat { get; set; } 
    public virtual List<Guests> guests { get; set; } 
} 

,이 데이터 주석을 사용할 수 있습니다 또는이 다른 방법?

의견을 보내 주셔서 감사합니다.

+0

예, 일반적으로 MVC에서는 유효성 검사를 위해 ViewModel에 데이터 주석을 추가합니다. 무슨 문제 있니? – Jonesopolis

+0

뷰 모델에 대한 특정 유효성 검사 집합을 원합니다. 이는 모델 클래스 유효성 검사와 다릅니다. 목록 에 대한 유효성 검사를 어떻게 추가합니까? – Chris

+0

당신은 스스로 질문에 답했습니다. – melancia

답변

1

귀하의 질문에 약간의 불확실성이 있기 때문에 기준을 반올림합니다. 목록 자체에 유효성 검사를 추가 할 수 있습니다.

[Required] 
public List<Guests> Guests { get; set; } 

키워드 virtual는 서브 클래스에 의해 오버라이드 (override) 할 수 속성, 메소드 또는 필드를 수 있습니다 : 그것은 꽤 많이 그냥 목록에 하나 개 이상의 항목이 있는지 확인할 것 Required 포함되어 있습니다. 가장 가능성이 큰, 당신이 귀하의 엔티티에 이것을보고 당신이보기 모델에서 여기에 동일한 필요가 있다고 생각했습니다. 엔티티가 참조 및 탐색 속성에 virtual을 사용하는 이유는 Entity Framework가 지연로드 기능을 제공하기 위해 엔티티의 프록시 클래스를 작성하기 때문입니다. 프록시 (그냥 하위 클래스)는 참조 및 탐색 속성을 재정 의하여 필요한 지연로드 코드를 삽입합니다.

실제 Guest 클래스의 속성에 유효성 검사 속성을 추가하는 방법에 대해 설명하는 경우보기 모델을 위해서만 할 수 없습니다. Guest에 추가하는 유효성 검사는 Guest을 사용하는 것입니다. 그래도 GuestViewModel 또는 이와 유사한 클래스를 구현하는 것을 막을 수는 없지만 원하는 모든 유효성 검사를 추가 할 수 있습니다.

+0

설명해 주셔서 감사합니다. Guest 속성에 유효성 검사 속성을 추가하고 싶습니다. GuestViewModel 작성에 대한 귀하의 제안을 시도하겠습니다. – Chris

+0

일반적으로보기에 데이터 저장소 개체를 직접 사용하는 것은 좋지 않습니다. 따라서 GuestViewModel이 최선의 방법입니다. – Mike

1

각 게스트의 유효성을 검사 하시겠습니까? 이 경우 데이터 주석으로 Guest를 표시하십시오. 목록 자체 (즉, 손님 수)에 대한 유효성 검사를 원하면 ValidationAttribute를 직접 작성하거나 모델에 IValidateableObject를 구현할 수 있습니다.

편집 :보기 모델이 다른 유효성 검사가 필요한 경우, GuestViewModel을 만들고 필요한 유효성 검사를 사용하여 표시하십시오.

+0

예, 각 게스트의 유효성을 검사합니다. 게스트는 주석으로 마크 업되었지만 뷰 모델은 다른 유효성 검사가 필요합니다. 예를 들어, Model Guest 클래스에는 null 일 수있는 속성이 있습니다. 그러나 ViewModel이 제출되면 동일한 필드가 필요합니다. – Chris

+0

나는 나의 대답을 편집했다 : 손님을 기반으로하는 GuestViewModel이 필요한 것 같다. 우리 프로젝트에서 이것은 도메인 모델과 뷰 모델이 거의 항상 다르기 때문에 일상적인 연습입니다. – gabnaim