ServiceStack FluentValidation - 多个RuleSet的问题

时间:2015-06-05 12:48:44

标签: servicestack fluentvalidation

我有一个带有两个RuleSet的验证器。第一个RuleSet有4个规则,第二个规则有2个规则。当我单独使用每个RuleSet调用Validate时,我得到正确的错误数(4和2)但是当我一起调用它们时,我没有错误...对于我的生活,我无法弄清楚为什么 - 任何帮助表示赞赏!

(注意:在所有情况下,正在测试的6个属性都设置为null ...)

验证

public class ClientValidator : AbstractValidator<Client> {
    public ClientValidator() {
        RuleSet("RequiredHomeValidations", () => {
            RuleFor(client => client.Street)
                .NotEmpty()
                .WithMessage("Client's street address is required.");
            RuleFor(client => client.City)
                .NotEmpty()
                .WithMessage("Client's city is required.");
            RuleFor(client => client.State)
                .NotEmpty()
                .WithMessage("Client's state is required.");
            RuleFor(client => client.ZipCode)
                .NotEmpty()
                .WithMessage("Client's ZIP Code is required.");
        });

        RuleSet("RequiredContactsValidations", () => {
            RuleFor(client => client.PrimaryContactFirstName)
                .NotEmpty()
                .WithMessage("First name of client's primary contact is required.");
            RuleFor(client => client.PrimaryContactLastName)
                .NotEmpty()
                .WithMessage("Last name of client's primary contact is required.");
        });

要求验证:

        //ValidationResult requiredFieldsValidationResult = this.ClientValidator.Validate(client, ruleSet: "RequiredHomeValidations");  <-- 4 ERRORS
        //ValidationResult requiredFieldsValidationResult = this.ClientValidator.Validate(client, ruleSet: "RequiredContactsValidations");  <-- 2 ERRORS
        ValidationResult requiredFieldsValidationResult = this.ClientValidator.Validate(client, ruleSet: "RequiredHomeValidations, RequiredContactsValidations");  <-- 0 ERRORS, .IsValid == true

1 个答案:

答案 0 :(得分:1)

这是因为ServiceStack的FluentValidation实习版基于不支持多个结果集的早期版本。

现在应该在现在available on MyGet的ServiceStack的最新 v4.0.41 + 中解决此问题。