我已经开始在WPF项目上使用FluentValidation,直到现在我以一种简单的方式使用它来检查字段是否已填充或小于n个字符。
现在,我要检查插入的值(这是一个字符串...该死的旧代码)是否大于0。有没有简单的方法可以使用
进行转换?RuleFor(x=>x.MyStringField).Somehow().GreaterThen(0) ?
预先感谢
答案 0 :(得分:3)
另一种解决方案:
RuleFor(a => a.MyStringField).Must(x => int.TryParse(x, out var val) && val > 0)
.WithMessage("Invalid Number.");
答案 1 :(得分:1)
只需编写这样的自定义验证器
public class Validator : AbstractValidator<Test>
{
public Validator()
{
RuleFor(x => x.MyString)
.Custom((x, context) =>
{
if ((!(int.TryParse(x, out int value)) || value < 0))
{
context.AddFailure($"{x} is not a valid number or less than 0");
}
});
}
}
在需要验证的地方进行此操作
var validator = new Validator();
var result = validator.Validate(test);
Console.WriteLine(result.IsValid ? $"Entered value is a number and is > 0" : "Fail");