C#Decimal Range属性允许负最小值

时间:2017-03-08 17:49:59

标签: c#

我有这个RangeAttribute,它不允许我为其分配的字段发布负数。

如何修改此项以允许decimal.MinValuedecimal.MaxValue作为参数?

[Range(0, 
       float.MaxValue, 
       ErrorMessage = "Please enter valid float Number")]

我试过了,但它甚至不允许这样做:

  

要根据一系列小数值验证属性,您必须提供Decimal结构的类型和两个将转换为十进制值的字符串值。

[Range(typeof(Decimal), 
      decimal.MinValue.ToString(), 
      decimal.MaxValue.ToString(), 
      ErrorMessage = "Please enter valid float Number")]

3 个答案:

答案 0 :(得分:2)

RangeAttribute有三个构造函数,它们包含两个整数,两个双精度数或两个字符串。他们都没有浮动。

尝试用两个双打来声明它,如下所示:

[Range((double)decimal.MinValue, 
       (double)decimal.MaxValue, 
       ErrorMessage = "Please enter valid decimal Number")]

答案 1 :(得分:1)

您可以对字符串中的十进制实际最小值/最大值进行硬编码以获得所需内容:

[Range(typeof(decimal), 
       "-79228162514264337593543950335",              
       "79228162514264337593543950335", 
        ErrorMessage = "There's an error")]

虽然此时验证似乎很无用

答案 2 :(得分:-1)

这不起作用?

[Range(float.MaxValue, 
       float.MaxValue, 
       ErrorMessage = "Please enter valid float Number")]

这允许任何数字

[Range(-42, 
       +42, 
       ErrorMessage = "Please enter valid float Number")]

允许-42和+ 42之间的任何数字