我有一个带有两个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
答案 0 :(得分:1)
这是因为ServiceStack的FluentValidation实习版基于不支持多个结果集的早期版本。
现在应该在现在available on MyGet的ServiceStack的最新 v4.0.41 + 中解决此问题。