我想使用范围验证器:

[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 之间的范围。

我收到错误:



编辑:

我在 web.xml 中使用这种文化设置
<system.web>
    <globalization fileEncoding="utf-8"
           requestEncoding="utf-8"
           responseEncoding="utf-8"
           uiCulture="sl-SI"
           culture="sl-SI" />
  </system.web>

最佳答案

它脱离了您当前的文化环境。
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalSeparator

您当前的文化 SL 使用“,”作为小数点分隔符。如果您使用像 en-US 这样的文化,如果会使用“.”。作为有效。

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

另外,我不确定这是否重要,但文档说比较类型应该是 double 数,而不是十进制数。

关于c# - 范围验证,其中值用逗号而不是点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29437989/

10-13 04:37