处理已处理或已转换的值时的RuleFor语法

时间:2017-07-19 16:08:11

标签: c# fluentvalidation

在FluentValidation中,是否有人知道我如何纠正以下语法:

    RuleFor(x =>
        double.Parse(x.MyValue, System.Globalization.CultureInfo.InvariantCulture)
    ).InclusiveBetween(0, 23).WithMessage("Number should be between (0,23]")
     .NotEqual(0).WithMessage("Number cannot be 0");

目前,除非我这样做,否则不会在文本框中呈现任何结果:

 RuleFor(x => x.MyValue)

x.MyValue是一个字符串,我真的需要将其转换为double。由于与此无关的其他原因,这是一个故意的字符串。

1 个答案:

答案 0 :(得分:0)

在lambda表达式中解析值将导致ModelState属性与要验证的属性不匹配。

在您的情况下,您必须使用WithName(nameof(Model.MyValue))

取消规则属性名称

最终结果将是:

RuleFor(x => double.Parse(x.MyValue, System.Globalization.CultureInfo.InvariantCulture))
                .InclusiveBetween(0, 23).WithMessage("Number should be between (0,23]")
                .NotEqual(0)
                .WithMessage("Number cannot be 0")
                .WithName("MyValue");