use*_*867 135 .net c# asp.net-mvc data-annotations
我想指定一个价格的十进制字段必须> = 0但我真的不想强加一个最大值.
这是我到目前为止所做的......我不确定这样做的正确方法是什么.
[Range(typeof(decimal), "0", "??"] public decimal Price { get; set; }
Run Code Online (Sandbox Code Playgroud)
小智 202
这样的事情怎么样:
[Range(0.0, Double.MaxValue)]
Run Code Online (Sandbox Code Playgroud)
这应该做你想要的,你可以避免使用字符串.
Jor*_*dan 75
如果你担心字符串看起来不错,你可以这样做:
[Range(0, Double.PositiveInfinity)]
Run Code Online (Sandbox Code Playgroud)
这将有一个默认的错误消息:
字段SuchAndSuch必须介于0和Infinity之间.
use*_*867 40
哦,似乎别无选择,只能手动输入最大值.我希望有一些类型的重载,你不需要指定一个.
[Range(typeof(decimal), "0", "79228162514264337593543950335")]
public decimal Price { get; set; }
Run Code Online (Sandbox Code Playgroud)
Nic*_*zig 32
您可以使用:
[Min(0)]
Run Code Online (Sandbox Code Playgroud)
这将强制要求的最小值为0(零),并且没有最大值.
您需要DataAnnotationsExtensions才能使用它.
Joh*_*ell 19
如果您使用价格,我相信您可以放心地承担任何费用将花费超过1万亿美元.
我用的是:
[Range(0.0, 1000000000000)]
Run Code Online (Sandbox Code Playgroud)
或者如果你真的需要它,只需粘贴Decimal.MaxValue(不带逗号)的值:79,228,162,514,264,337,593,543,950,335
如果你不是来自津巴布韦,其中任何一个都会运作良好.
Eri*_*sta 11
您可以使用自定义验证:
[CustomValidation(typeof(ValidationMethods), "ValidateGreaterOrEqualToZero")]
public int IntValue { get; set; }
[CustomValidation(typeof(ValidationMethods), "ValidateGreaterOrEqualToZero")]
public decimal DecValue { get; set; }
Run Code Online (Sandbox Code Playgroud)
验证方法类型:
public class ValidationMethods
{
public static ValidationResult ValidateGreaterOrEqualToZero(decimal value, ValidationContext context)
{
bool isValid = true;
if (value < decimal.Zero)
{
isValid = false;
}
if (isValid)
{
return ValidationResult.Success;
}
else
{
return new ValidationResult(
string.Format("The field {0} must be greater than or equal to 0.", context.MemberName),
new List<string>() { context.MemberName });
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
137290 次 |
| 最近记录: |