2012-08-30 2 views
6

은 DataAnnotation을 사용하여 ASP.NET MVC4에서 복잡한 클래스의 유효성 검사와 관련된 문제를 발견했습니다.ASP.NET MVC4에서 복잡한 클래스의 유효성 검사에 실패했습니다.

// CREATE A DUMMY INSTANCE OF THE MODEL 
Customer cust = new Customer(); 
cust.UserName = "x"; 
cust.DisplayName = "x"; 

Order orderModel = new Order(); 
orderModel.customer = cust; 

// VALIDATE MODEL 
TryValidateModel(orderModel); // ModelState.IsValid is TRUE (which is incorrect) 
TryValidateModel(cust); // ModelState.IsValid is FALSE (whic is correct} 

이 orderModel의 검증이 cust.UserName로 실패 :

의는 다음과 같은 모델을 보자

public class Customer 
{ 
    [Required] 
    [StringLength(8, MinimumLength = 3)]   
    public string UserName { get; set; } 

    [Required] 
    [StringLength(8, MinimumLength = 3)] 
    public string DisplayName { get; set; } 
} 


public class Order 
{ 
    public Customer customer { get; set; } 
} 

가 그럼 난 내 컨트롤러에이 모델의 인스턴스를 확인하려고 (간체) 1 문자 만 있지만 모델에는 3 개가 필요합니다. cust.DisplayName에도 동일하게 적용됩니다. 그러나 순수 고객 클래스의 유효성을 검사하면 예상대로 실패합니다.

어떤 아이디어가 잘못 되었나요?

감사

지리산

+1

지금까지 데이터 주석 장식 단순한 특성을 가진 인구와 뷰 모델을 만들기 그런 중첩 된 객체의 유효성을 검사 할 수 없습니다. 아마도 사용자 정의 유효성 검사기를 사용할 수 있습니다. – saj

+1

데이터 주석 유효성 검사가 기본적으로 중첩 된 객체의 유효성 검사를 실행하지 않는 것으로 보입니다. Simmilar 여기에 게시 http://stackoverflow.com/questions/2493800/how-can-i-tell-the-data-annotations-validator-to-also-validate-complex-child-pro –

답변

2

DataAnnotations은 그 자체에 대한 당신의 객체로 파고되지 않습니다. 당신은 두 가지 선택이 있습니다

1 - 자식 속성

을 확인하는 사용자 정의 유효성 검사기를 작성

2 - 난 당신을 알고

관련 문제