[英]FluentValidation and nested validator
我有一堂課:
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");
//....
}
}
然后我有類,它有ClientInfo
類作為屬性:
public class Order
{
public ClientInfo ClientInfo { get; set; }
//....
}
和驗證器類:
public class OrderFluentValidator : AbstractValidator<Order>
{
public OrderFluentValidator()
{
//...
RuleFor(d => d.ClientInfo)
.NotNull()
.WithMessage("ClientInfo part is required");
RuleFor(d => d.ClientInfo)
.SetValidator(new ClientInfoFluentValidator());
}
}
當我嘗試僅驗證ClientInfo
它可以工作:
ClientInfoFluentValidator validator = new ClientInfoFluentValidator();
[TestMethod]
public void ClientInfoInvalidLabAccountLength()
{
ClientInfo model = new ClientInfo
{
LabAccount = "1234567"
//....
};
validator.ShouldHaveValidationErrorFor(d => d.LabAccount, model);
//....
}
但是當我嘗試驗證Order
類時:
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.ShouldHaveValidationErrorFor(d => d.ClientInfo.LabAccount, model);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.