Utilizzando RangeValidator con byte
-
05-09-2019 - |
Domanda
Questa è la dichiarazione di proprietà in questione:
[RangeValidator(1,RangeBoundaryType.Inclusive,255,RangeBoundaryType.Inclusive,MessageTemplate = "StartFlexibility is out of range")]
public byte StartFlexibility { get; set; }
Quando il metodo validate viene chiamato, un FormatException è gettato a dirmi che il tipo di valore deve essere Int32.
Come risolvere, per favore?
Soluzione
bene ... la correzione rapida ovvio sarà modificare il tipo di short o int,
ma un'altra osservazione che voglio fare, è con la gamma. Si sta dicendo il RangeValidator di prendere una gamma compresa tra 1 e 256, ma si può solo assegnare un valore di byte fino a 255, forse questo è il motivo compilatore di gridare.
Il RangeValidator è anche infering il tipo di Range dai parametri, quindi, provare a lanciare
[RangeValidator((byte) 1, ...
Altri suggerimenti
Come dice Jhonny, gettato al byte ... ma più come questo
[RangeValidator(typeof(Byte), "1", RangeBoundaryType.Inclusive, "255", RangeBoundaryType.Inclusive, MessageTemplate = "Some message")]
L'altra opzione sarebbe quella di chiamare il validatore gamma in un messaggio SelfValidation e gettato lì.
Non ho mai usato il RangeValidator classe / attributo, ma è un problema che si dispone di 256 come un limite superiore quando un byte può ottenere solo a 255?