2016-09-02 5 views
1

양식 검증시 오류 메시지를 표시하려고합니다. 나는 모델 클래스에 주석 속성이 있습니다데이터 유형이 int 일 때 값 ''이 (가) 유효하지 않습니다.

[Required(ErrorMessage="The number attribute is required")] 
public int Level { get; set; } 

그것은 작동하지 않습니다,하지만 난 string에 데이터 형식을 변경할 때, 주석의 오류 메시지가 표시됩니다. int이 지원되지 않는다는 의미입니까?

+0

[int는 값 유형이므로 절대 null이 아닙니다.] (http://stackoverflow.com/questions/5057267/what-is-the-difference-between-a-reference-type-and-value-type-in -c) – Liam

답변

4

유효성 검사가 해당 유형에서 작동하지 않는 것으로 보이는 이유는 0부터입니다. 0은 값입니다.

nullable int (int?)로 유형을 변경해보십시오. 그러면 괜찮습니다.

+0

답변이 작동했습니다. 감사합니다. –

0

사용자의 입력이 빈 문자열이면 값은 null로 변환됩니다. 널값은 int 유형 변수에 지정할 수 없습니다. 따라서 EF 유효성 검사에 도달하기 전에 null 값을 int 변수에 바인딩 할 때 이미 오류가 발생합니다. 따라서 [Required(ErrorMessage="The number attribute is required")] 코드가 실행되지 않습니다.

nullable int (int?)를 사용하면 사용자의 null 값과 빈 값을 사용할 수 있습니다. 결과적으로 EF 유효성 검사가 실행되고 [Required] 주석을 사용하여 "빈 입력 없음"유효성 검사를 수행 할 수 있습니다.

관련 문제