2015-06-05 2 views
0

У меня есть валидатор с двумя RuleSets. Первый RuleSet имеет 4 правила, а второй имеет 2 правила. Когда я вызываю Validate с каждым RuleSet индивидуально, я получаю правильное количество ошибок (4 и 2), но когда я их называю вместе, у меня нет НИКАКИХ ошибок ... Для жизни я не могу понять, почему - любой Помогите оценить!ServiceStack FluentValidation - Проблема с несколькими наборами правил

(Примечание: Во всех случаях 6 свойств испытывается устанавливаются на нуль ...)

Validator:

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

Это было из-за интернированной версии ServiceStack FluentValidation, основанной на более ранней версии, которая не поддерживала несколько наборов результатов.

Это должно быть разрешено в последних v4.0.41 + ServiceStack, который теперь available on MyGet.

+0

Я надеялся, что это что-то в этом роде. Еще раз спасибо за отличный продукт и отличную поддержку! – user2220004

+0

mythz - существует ли ограничение на количество допустимых наборов правил? Теперь у меня есть 4 набора правил - A, B, C и D. В моем тестовом случае A производит две ошибки, а C - одну. B и D не производят. Когда я запускаю их все вместе, я получаю только две ошибки от A. Когда я запускаю A и BI, получаю два из A, а когда я запускаю C и D, я получаю сообщение от C. Не знаю, почему я не получаю все три, когда я запускаю их всех вместе? – user2220004

+0

@ user2220004 Какое поведение имеет обычная библиотека [FluentValidation] (https://github.com/JeremySkinner/FluentValidation)? – mythz

Смежные вопросы