C# 处理已处理或转换的值时的语法规则

C# 处理已处理或转换的值时的语法规则,c#,fluentvalidation,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("Num

在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。出于与此无关的其他原因,它是一个字符串。

解析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");

解析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");