范围验证,其中值是逗号而不是点

时间:2015-04-03 18:49:20

标签: c# validation asp.net-mvc-4

我想使用范围验证器:

[Range(typeof(Decimal), "0.1", "9999",
 ErrorMessage = "{0} must be a decimal/number between {1} and {2}.")]

但我正在使用DecimalModelBinder,所以十进制值现在使用逗号而不是句点(点)。

所以2,5现在有效,而不是2.5

我想使用介于0.1和9999之间的范围。

我收到错误:

  

0.1不是Decimal的有效值。

编辑:

我在web.xml中使用此文化设置

<system.web>
    <globalization fileEncoding="utf-8"
           requestEncoding="utf-8"
           responseEncoding="utf-8"
           uiCulture="sl-SI" 
           culture="sl-SI" />
  </system.web>

1 个答案:

答案 0 :(得分:0)

它取决于您当前的文化背景。     System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalSeparator

您当前的文化SL使用&#34;,&#34;作为小数点分隔符。如果您使用像en-US这样的文化,那就是&#34;。&#34;有效。

确保您当前的线程文化设置为SL,可以使用上面的代码进行检查。

另外,我不确定它是否重要,但是文档说比较类型应该是double,而不是decimal。