C# FluentValidation和嵌套验证程序
我有一门课:C# FluentValidation和嵌套验证程序,c#,validation,fluentvalidation,C#,Validation,Fluentvalidation,我有一门课: public class ClientInfo { public string LabAccount { get; set; } //.... } 和验证程序类: public class ClientInfoFluentValidator : AbstractValidator<ClientInfo> { public ClientInfoFluentValidator() { RuleFor(d => d.La
public class ClientInfo
{
public string LabAccount { get; set; }
//....
}
和验证程序类:
public class ClientInfoFluentValidator : AbstractValidator<ClientInfo>
{
public ClientInfoFluentValidator()
{
RuleFor(d => d.LabAccount)
.NotEmpty()
.WithMessage("LabAccount is required");
RuleFor(d => d.LabAccount)
.Length(8)
.WithMessage("LabAccount is limited by 8 letters");
//....
}
}
public class OrderFluentValidator : AbstractValidator<Order>
{
public OrderFluentValidator()
{
//...
RuleFor(d => d.ClientInfo)
.NotNull()
.WithMessage("ClientInfo part is required");
RuleFor(d => d.ClientInfo)
.SetValidator(new ClientInfoFluentValidator());
}
}
和验证程序类:
public class ClientInfoFluentValidator : AbstractValidator<ClientInfo>
{
public ClientInfoFluentValidator()
{
RuleFor(d => d.LabAccount)
.NotEmpty()
.WithMessage("LabAccount is required");
RuleFor(d => d.LabAccount)
.Length(8)
.WithMessage("LabAccount is limited by 8 letters");
//....
}
}
public class OrderFluentValidator : AbstractValidator<Order>
{
public OrderFluentValidator()
{
//...
RuleFor(d => d.ClientInfo)
.NotNull()
.WithMessage("ClientInfo part is required");
RuleFor(d => d.ClientInfo)
.SetValidator(new ClientInfoFluentValidator());
}
}
但当我尝试验证顺序时
类:
OrderFluentValidator validator = new OrderFluentValidator();
[TestMethod]
public void OrderInfoValid()
{
Order model = new Order
{
ClientInfo = new ClientInfo
{
LabAccount = "1234567"
//....
},
//....
};
validator.ShouldHaveValidationErrorFor(d => d.ClientInfo, model);
}
上面说,
model
类是有效的。为什么会这样?为什么ClientInfo
验证程序不工作?您需要在子视图模型上指定应该包含错误消息的确切属性。这似乎是断言的问题,而不是视图模型或验证器的问题:
validator.shouldlhavevalidationerror(d=>d.ClientInfo.LabAccount,model);
我也遇到了这个问题。调用“Validate”似乎只验证该视图模型,而不验证其任何子模型。我还没有找到一种方法来在一次“验证”调用中验证视图模型的层次结构。类似的问题:。