我正在尝试使用Fluent验证验证GUID列表。
我的ID列表应该至少具有一个GUID ID。我做了一些研究,发现了类似的问题,而我最接近的解决方案就是像下面一样实施它,但它仍然行不通。即使我发送带有值的ID列表,我也会向我提供错误消息,即该值不能为null。我在做什么错?
public class Data
{
public List<Guid> Ids{ get; set; }
}
public class DataValidator : AbstractValidator<Data>
{
public DataValidator()
{
RuleFor(d => d.Ids).SetCollectionValidator(new GuidValidator());
}
}
public class GuidValidator : AbstractValidator<Guid>
{
public GuidValidator()
{
RuleFor(x => x).NotNull().NotEmpty();
}
}
我也尝试了此验证器,但它没有用:
public class DataValidator : AbstractValidator<Data>
{
public DataValidator()
{
RuleForEach(d => d.Ids).NotNull().NotEmpty();
}
}
您可以只链验证器:
public class DataValidator : AbstractValidator<Data>
{
public DataValidator()
{
RuleFor(d => d.Ids)
.NotNull() //validates whether Ids collection is null
.NotEmpty() //validates whether Ids collection is empty
.SetCollectionValidator(new GuidValidator()); //validates each element inside Ids collection using GuidValidator
}
}
另外,由于Guid
是一个结构,因此您不必在GuidValidator
内使用NotNull()
验证:
public class GuidValidator : AbstractValidator<Guid>
{
public GuidValidator()
{
RuleFor(x => x).NotEmpty();
}
}