我想指定一个价格的十进制字段必须是>= 0,但我真的不想强加一个最大值。
这是我目前所做的…我不知道正确的做法是什么。
[Range(typeof(decimal), "0", "??"] public decimal Price { get; set; }
我想指定一个价格的十进制字段必须是>= 0,但我真的不想强加一个最大值。
这是我目前所做的…我不知道正确的做法是什么。
[Range(typeof(decimal), "0", "??"] public decimal Price { get; set; }
当前回答
我打算这样做:
[Range(typeof(decimal), ((double)0).ToString(), ((double)decimal.MaxValue).ToString(), ErrorMessage = "Amount must be greater than or equal to zero.")]
但是,这样做的问题是编译器想要一个常量表达式,这禁止((double)0). tostring()。编译器将接受
[Range(0d, (double)decimal.MaxValue, ErrorMessage = "Amount must be greater than zero.")]
其他回答
我将写入decimal.MaxValue.ToString(),因为这是十进制类型的有效上限,它相当于没有上限。
你可以使用:
[Min(0)]
这将强制要求的最小值为0(零),而没有最大值。
你需要DataAnnotationsExtensions来使用它。
[范围(0.01,100000000,ErrorMessage = "价格必须大于零!")]
我打算这样做:
[Range(typeof(decimal), ((double)0).ToString(), ((double)decimal.MaxValue).ToString(), ErrorMessage = "Amount must be greater than or equal to zero.")]
但是,这样做的问题是编译器想要一个常量表达式,这禁止((double)0). tostring()。编译器将接受
[Range(0d, (double)decimal.MaxValue, ErrorMessage = "Amount must be greater than zero.")]
如果你担心字符串看起来好看,你可以这样做:
[Range(0, Double.PositiveInfinity)]
这将有一个默认的错误消息:
字段SuchAndSuch必须在0到无穷大之间。