Корпоративная библиотека Блок валидации и наборы правил - PullRequest
2 голосов
/ 05 апреля 2010

Я использую наборы правил для типа, который выглядит следующим образом:

public class Salary
{

   public decimal HourlyRate { get; set; }

   [ValidHours]  //Custom validator
   public int NumHours { get; set; }

   [VerifyValidState(Ruleset="State")]  //Custom validator with ruleset
   public string State { get; set; }
}

Из-за бизнес-требований мне нужно сначала проверить набор правил "Состояние", а затем проверить всю бизнес-сущность

public void Save()
{
   ValidationResults results = Validation.Validate(salary, "State");

   //Check for validity

   //Now run the validation for ALL rules including State ruleset
   ValidationResults results2 = Validation.Validate(salary); //Does not run the ruleset marked with "State"

}

Как мне выполнить то, что я пытаюсь сделать?

1 Ответ

3 голосов
/ 05 апреля 2010

Вам нужно будет добавить VerifyValidState к обоим наборам правил:

public class Salary
{

   public decimal HourlyRate { get; set; }

   [ValidHours]  //Custom validator
   public int NumHours { get; set; }

   [VerifyValidState]  
   [VerifyValidState(Ruleset="State")]  //Custom validator with ruleset
   public string State { get; set; }
}

Затем вы можете вызывать каждый RuleSet отдельно (что вы уже делали). Код будет выглядеть так:

public void Save()
{
    ValidationResults results = Validation.Validate(salary, "State");

    //Check for validity
    if (results.IsValid)
    {    
        //Now run the validation for ALL rules including State ruleset
        results.AddAllResults(Validation.Validate(salary)); 
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...