Asp.net mvc 3 带小数的数据批注不起作用

Asp.net mvc 3 带小数的数据批注不起作用,asp.net-mvc-3,data-annotations,Asp.net Mvc 3,Data Annotations,我们有这样的代码: [DisplayName("Refresh Rate")] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:G2}")] [Range(1.00, 150.00, ErrorMessage = "Must be between 1 and 150")] public virtual decimal RefreshRate { get; set; } 这不管

我们有这样的代码:

    [DisplayName("Refresh Rate")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:G2}")]
    [Range(1.00, 150.00, ErrorMessage = "Must be between 1 and 150")]
    public virtual decimal RefreshRate { get; set; }
这不管用。如果我们把它改成

[Range(0.00, 150.00, ....
它起作用了。如果我们尝试使用适当的方法

[Range(typeof(Decimal), "1", "150", ....

它也不起作用。我所说的“不起作用”是指它无法验证。为什么0可以工作,但其他任何数字都不行?我们如何才能使这段代码正常工作?

我不知道验证小数的目的是什么,但也许这一技巧对您有效:

[DisplayName("Refresh Rate")]
[Datatype(DataType.Currency)]
[Range(1, 150, ErrorMessage = "Must be between 1 and 150")]
public virtual decimal RefreshRate { get; set; }
因为您需要2个精确的数字,所以有一个数据类型可能您可以使用它:Currency。所以,也许以下方法对你有用:

[DisplayName("Refresh Rate")]
[Datatype(DataType.Currency)]
[Range(1, 150, ErrorMessage = "Must be between 1 and 150")]
public virtual decimal RefreshRate { get; set; }
如果它不起作用,请告诉我