Использование RangeValidator с байтом - PullRequest
0 голосов
/ 07 апреля 2009

Это декларация о недвижимости:

 [RangeValidator(1,RangeBoundaryType.Inclusive,255,RangeBoundaryType.Inclusive,MessageTemplate = "StartFlexibility is out of range")]
    public byte StartFlexibility { get; set; }

Когда вызывается метод validate, выдается исключение FormatException, сообщающее, что тип значения должен быть Int32.

Как исправить, пожалуйста?

Ответы [ 3 ]

1 голос
/ 07 апреля 2009

хорошо ... быстрое очевидное исправление - изменить тип на short или int,

но еще одно замечание, которое я хочу сделать, касается диапазона. Вы говорите RangeValidator, чтобы он содержал диапазон от 1 до 256, но вы можете просто присвоить байтовое значение до 255, может быть, это причина, по которой компилятор выкрикнул.

RangeValidator также выводит тип Range из параметров, поэтому попробуйте выполнить приведение

[RangeValidator((byte) 1, ...
1 голос
/ 08 мая 2010

Как говорит Джонни, приведение к байту ... но больше похоже на это

[RangeValidator(typeof(Byte), "1", RangeBoundaryType.Inclusive, "255", RangeBoundaryType.Inclusive, MessageTemplate = "Some message")]

Другой вариант - вызвать валидатор диапазона в сообщении SelfValidation и привести его туда.

0 голосов
/ 07 апреля 2009

Я никогда не использовал класс / атрибут RangeValidator, но есть ли проблема, что у вас есть 256 в качестве верхней границы, когда байт может достигнуть только 255?

...