验证小数精度
Validating decimal precision
你好,我正在尝试计算,我正在使用流畅的验证包来确保我的规则得到遵守
验证正在触发并进入规则,但仍未 100% 正常工作
SageOrderMixB sageOrder = new SageOrderMixB();
var validator = new MixValidator();
var results = validator.Validate(sageOrder);
public class MixValidator : AbstractValidator<SageOrderMixB>
{
public MixValidator()
{
RuleFor(x => x.WeightInTons).LessThanOrEqualTo(28).ScalePrecision(2, 2).WithMessage("Weight cannot be greater than 28 and must be a precison of 2"); ;
}
}
但是,如果我将权重输入为 29,它仍然会绕过我的单元测试并使其失败
在这里你会看到我在添加到我的模型之前的陷阱
if (results.IsValid == false)
{
sberror.Clear();
foreach (var item in results.Errors)
{
sberror.Append(item.ErrorMessage);
}
MessageBox.Show("Please correct the following " + sberror.ToString(), "", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
sageOrdersList.Add(sageOrder);
对我来说,这是我做这件事的位置确保你在你设置值之后拥有它
var results = validator.Validate(sageOrder);
我想,你需要为此使用正则表达式。
[RegularExpression(@"^\d+(\.\d{2,2})$")]
这里:
.ScalePrecision(2,2)
第一个2
是小数位数。第二个 2
是数字位置的数量。
0.45 <-- this is valid
1.45 <-- this is invalid
例如
.ScalePosition(2,4)
27.24 <-- this is valid
来源:https://docs.fluentvalidation.net/en/latest/built-in-validators.html#scaleprecision-validator
你好,我正在尝试计算,我正在使用流畅的验证包来确保我的规则得到遵守
验证正在触发并进入规则,但仍未 100% 正常工作
SageOrderMixB sageOrder = new SageOrderMixB();
var validator = new MixValidator();
var results = validator.Validate(sageOrder);
public class MixValidator : AbstractValidator<SageOrderMixB>
{
public MixValidator()
{
RuleFor(x => x.WeightInTons).LessThanOrEqualTo(28).ScalePrecision(2, 2).WithMessage("Weight cannot be greater than 28 and must be a precison of 2"); ;
}
}
但是,如果我将权重输入为 29,它仍然会绕过我的单元测试并使其失败
在这里你会看到我在添加到我的模型之前的陷阱
if (results.IsValid == false)
{
sberror.Clear();
foreach (var item in results.Errors)
{
sberror.Append(item.ErrorMessage);
}
MessageBox.Show("Please correct the following " + sberror.ToString(), "", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
sageOrdersList.Add(sageOrder);
对我来说,这是我做这件事的位置确保你在你设置值之后拥有它
var results = validator.Validate(sageOrder);
我想,你需要为此使用正则表达式。
[RegularExpression(@"^\d+(\.\d{2,2})$")]
这里:
.ScalePrecision(2,2)
第一个2
是小数位数。第二个 2
是数字位置的数量。
0.45 <-- this is valid
1.45 <-- this is invalid
例如
.ScalePosition(2,4)
27.24 <-- this is valid
来源:https://docs.fluentvalidation.net/en/latest/built-in-validators.html#scaleprecision-validator