2014-11-07 3 views
1

모델 바인딩에 사용하는 속성 중 하나가 [Required] 속성의 정수 인 십자가가 오늘 왔습니다. 그러나 모델 바인더는 실수로보기에 양식을 제공하지 않았기 때문에 행복하게 건너 뜁니다. 내가 고칠 때, 그것은 잘 작동했다.입력 유효성 확인과 모델 유효성 확인

나는 article을 읽었지만 모델 유효성 확인 대신 입력 유효성 검사가 트리거되는 시점이나 위치를 실제로 이해할 수 없었습니다.

두 가지를 동시에 사용할 수 있습니까? 어떻게 전환 할 수 있습니까?

P.S는 : 나는 MVC 5.

답변

1

에 개발하고이 문제가 nullable이 아닌 특성에 [Required] 속성이 아무런 효과가 없다는 사실에 있다고 밝혀졌다. 결국 값이 제공되지 않더라도 클래스 초기화는 null이 아닌 속성에 대한 기본값을 할당합니다.이 값은 모델 바인더에서 유효한 것으로 간주됩니다. 예를 들어 public int x { get; set; }에 값이 제공되지 않으면 클래스 초기화가 0으로 지정됩니다 (정수 값의 기본값).

이 경우 솔루션은 public int? x { get; set; } 뒤에 ? 접미사를 붙일 수있는 nullable이 아닌 속성을 nullable로 만드는 것입니다.

입력 유효성 검사는 MVC1 이전의 MVC2에서 미리보기를 사용하여 제출 된 값만 유효성을 검사하고 실제로 모델 내부에서 정의 된 것에 대해 신경 쓰지 않습니다. 그러나 이는 유효성 확인 시스템이 유효성 검사 오류에 대한 모델 경계를 검사하는 모델 유효성 검사로 변경되었습니다. 그러나 필수 속성은 일부를 혼동시킬 수있는 미묘한 속성입니다.