Использование RangeValidator с байтом
Это декларация о недвижимости:
[RangeValidator(1,RangeBoundaryType.Inclusive,255,RangeBoundaryType.Inclusive,MessageTemplate = "StartFlexibility is out of range")]
public byte StartFlexibility { get; set; }
Когда вызывается метод validate, выдается исключение FormatException, сообщающее, что тип значения должен быть Int32.
Как исправить, пожалуйста?
3 ответа
Хорошо... быстрое очевидное исправление - изменить тип на short или int,
но еще одно замечание, которое я хочу сделать, касается диапазона. Вы говорите RangeValidator, чтобы он принимал инклюзивный диапазон от 1 до 256, но вы можете просто присвоить байтовое значение до 255, возможно, это причина, по которой компилятор выкрикнул.
RangeValidator также выводит тип Range из параметров, поэтому попробуйте привести
[RangeValidator((byte) 1, ...
Как говорит Джонни, приведение к байту... но больше так
[RangeValidator(typeof(Byte), "1", RangeBoundaryType.Inclusive, "255", RangeBoundaryType.Inclusive, MessageTemplate = "Some message")]
Другой вариант - вызвать валидатор диапазона в сообщении SelfValidation и привести его там.
Я никогда не использовал класс / атрибут RangeValidator, но есть ли проблема, что у вас есть 256 в качестве верхней границы, когда байт может добраться только до 255?