2010-12-03 3 views
3

나는이처럼 보이는 뷰 모델이있어 :DataAnnotations를 사용하여 Viewmodel의 일부 필드 만 유효성을 검사하려면 어떻게해야합니까?

public class Viewmodel 
{ 

    public int Type {get;set} // 0 if typeA, 1 if typeB 

    [Required] 
    public string AProperty1 {get;set} 

    [Required] 
    public string AProperty1 {get;set} 

    ... 

    [Required] 
    public string BProperty1 {get;set} 

    [Required] 
    public string BProperty1 {get;set} 
} 

이 뷰 모델을 얻고 견적 사용자 입력 AProperty1, AProperty2 등을 널 (null)로 BProperty-의 반환에이 개 형태가됩니다. FormB와 동일합니다. 양식 유형 (FormA 또는 FormB)이 ViewModel.type 필드에 지정됩니다.

문제는 내 컨트롤러에서 ModelState.IsValid 속성을 확인하고 필드의 절반이 항상 null이기 때문에 두 가지 모두에서 false가된다는 점입니다.

하나의 가능한 솔루션은 어떻게 든 내 ModelView의 ModelState.IsValid 속성을 재정 의하여 형식을 전달할 수 있습니다. 하지만 내가 아는 한 방법은 없습니다.

다른 해결책이 있습니까? (클라이언트 쪽 유효성 검사와 함께 사용할 수 있어야 함)

+0

은 IMO 여기에 문제는 당신이 당신의 진짜보기 모델과 맞지 않는 "뷰 모델"을 가지고있다. 그것을 나눠야합니다. – onof

+0

나는 이것이 잘못된 길이고 여기에서 문제의 주원인임을 알고있다. 그러나 이것은 필수 사항이다. – GaGar1n

답변