Использование 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?

Другие вопросы по тегам