代码之家  ›  专栏  ›  技术社区  ›  KevDog

使用带字节的RangeValidator

  •  0
  • KevDog  · 技术社区  · 15 年前

    这是有关财产申报:

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

    调用validate方法时,将引发一个formatException,告诉我值类型需要为Int32。

    请问怎么修?

    3 回复  |  直到 11 年前
        1
  •  1
  •   Jhonny D. Cano -Leftware-    15 年前

    好。。。快速明显的修复方法是将类型改为short或int,

    但是我想做的另一个观察,是关于范围的。您告诉rangevalidator取1到256之间的一个包含范围,但您只需将一个字节值赋给255,这可能是编译器需要喊出的原因。

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

    [RangeValidator((byte) 1, ...
    
        2
  •  1
  •   Brett Gregson    11 年前

    正如琼尼所说,转换成字节…但更像这样

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

    另一个选项是在selfvalidation消息中调用范围验证器并在那里进行强制转换。

        3
  •  0
  •   Chris Shaffer    15 年前

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

    推荐文章