2016-09-02 3 views
1

Я пытаюсь показать дружественное сообщение об ошибке при проверке формы. У меня есть свойство с аннотациями в классе модели:Значение '' недействительно, когда тип данных is 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. Значение Null не может быть присвоено переменной типа int. Таким образом, ошибка уже возникает при привязке нулевого значения к переменной int до того, как будет достигнута проверка EF. Таким образом, код [Required(ErrorMessage="The number attribute is required")] не выполнен.

Использование nullable int (int?) принимает пустые и пустые значения пользователя. Впоследствии будет выполнена проверка EF, и вы можете выполнить проверку «без пустого ввода», используя аннотации [Required].