验证规则取决于使用流畅验证的独立规则组的成功

问题描述 投票:0回答:1

我正在尝试为这种情况想出正确的语法:

规则A
规则B
以上都是独立

规则 C - 仅当规则 A 和规则 B 通过验证时才会运行。

示例:
UserIdExists(规则A)
OrderIdExists(规则B)
OrderId 属于 UserId - 依赖于上述两条规则成功的规则

代码示例(即使 UserIdExists 或 OrderIdExists 之一未通过验证,当调用 OrderBelongsToUser 时,该示例也不起作用):

RuleFor(request => request).NotNull().DependentRules(() =>
        {
            RuleFor(request => request).CustomAsync(UserIdExists)

            RuleFor(request => request).CustomAsync(OrderIdExists)

        }).CustomAsync(OrderBelongsToUser);
c# fluentvalidation
1个回答
0
投票

您的“UserIdExists”和“OrderIdExists”规则现在仅依赖于请求不为空。如果您只想在用户和订单 ID 存在的情况下执行规则“OrderBelongsToUser”,您可以执行以下操作:

RuleFor(request => request)
    .ChildRules(child =>
    {
        child.RuleFor(request => request)
            .CustomAsync(UserIdExists)
            .CustomAsync(OrderIdExists)
    })
    .DependentRules(() =>
    {
        RuleFor(request => request).CustomAsync(OrderBelongsToUser);
    });
© www.soinside.com 2019 - 2024. All rights reserved.