仅当文本框为空时如何输入此规则以进行流畅验证

How to enter into this rulefor fluent validation only if textbox is empty

我正在使用简单的表单流畅验证。如何仅在 Notes 文本框为空时输入此规则,如果该 linq 查询 return 是一条记录,则应 return 验证。

如果文本框不为空,则不应输入此规则。

这是我试过的方法

RuleFor(i => i.Notes)
                .NotEmpty()
                .When((i) =>
                    {
                        bool result = false;

            result = _DAL.GetExists<EmployeeScheduleTypes>
                                    (q => q.Type == i.Type);


                        return result;
                    })
                .WithMessage("Notes is required");

当 属性 验证器应为 运行 时,应使用扩展方法 When 来指定条件。在您的情况下,条件不为空 Notes 属性。验证谓词应该转到 Must extension:

RuleFor(i => i.Notes)
    .Must(i => _DAL.GetExists<EmployeeScheduleTypes>(q => q.Type == i.Type))
    .When(i => String.IsNullOrEmpty(i.Notes))
    .WithMessage("Notes is required");

此规则表示:当 Notes 为空时,对象应具有现有类型,否则为 Notes 设置错误 属性。