Usando RangeValidator com byte
-
05-09-2019 - |
Pergunta
Esta é a declaração de propriedade em questão:
[RangeValidator(1,RangeBoundaryType.Inclusive,255,RangeBoundaryType.Inclusive,MessageTemplate = "StartFlexibility is out of range")]
public byte StartFlexibility { get; set; }
Quando o método de validação é chamado, um FormatException é jogado me dizendo que as necessidades tipo de valor a ser Int32.
Como corrigir, por favor?
Solução
bem ... a correção óbvia rápida será alterar o tipo de short ou int,
mas uma outra observação que eu quero fazer, é com a faixa. Você está dizendo a RangeValidator para tomar um intervalo inclusivo entre 1 e 256, mas você só pode atribuir um valor byte até 255, talvez essa seja a razão compilador para gritar.
O RangeValidator também é inferir o tipo da Gama a partir dos parâmetros, por isso, tente lançando
[RangeValidator((byte) 1, ...
Outras dicas
Como Jhonny diz, elenco para byte ... mas mais como este
[RangeValidator(typeof(Byte), "1", RangeBoundaryType.Inclusive, "255", RangeBoundaryType.Inclusive, MessageTemplate = "Some message")]
A outra opção seria a de chamar o validador gama em uma mensagem SelfValidation e lançou lá.
Eu nunca usei a classe RangeValidator / atributo, mas é um problema que você tem 256 como um limite superior, quando um byte só pode chegar a 255?