0

这是有问题的财产声明:

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

当调用 validate 方法时,会抛出一个 FormatException,告诉我值类型需要是 Int32。

请问怎么修?

4

3 回答 3

1

好吧...快速明显的解决方法是将类型更改为short或int,

但我想做的另一个观察是范围。您告诉 RangeValidator 取 1 到 256 之间的包含范围,但您只能分配一个字节值直到 255,也许这就是编译器大喊大叫的原因。

RangeValidator 还从参数推断 Range 的类型,因此,请尝试强制转换

[RangeValidator((byte) 1, ...
于 2009-04-07T18:36:09.673 回答
1

正如 Jhonny 所说,转换为字节......但更像这样

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

另一种选择是在 SelfValidation 消息中调用范围验证器并在那里转换。

于 2010-05-07T22:16:27.707 回答
0

我从来没有使用过 RangeValidator 类/属性,但是当一个字节只能达到 255 时,你有 256 作为上限是一个问题吗?

于 2009-04-07T18:36:02.857 回答