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