直到今天我还没有听说过FluentValidation,当时我正在开展一个项目,所以我遇到了一个问题。我有这个..
RuleFor(x=>x.Company)
.NotEmpty()
.WithMessage("Company Required");
RuleFor(x => x.FirstName)
.NotEmpty()
.WithMessage(FirstName Required");
RuleFor(x => x.LastName)
.NotEmpty()
.WithMessage("LastName Required");
以及其他一些RuleFor语句。我需要做的是......
如果公司字段为空,则需要验证FirstName和LastName,但如果公司字段不为空,则不对FirstName和LastName应用验证
我不知道从哪里开始。
修改
我尝试了When条件并想出了这个
When(x => x.Company == "" || x.Company == null, () =>
{
RuleFor(x => x.FirstName)
.NotEmpty()
.WithMessage("FirstName Required");
RuleFor(x => x.LastName)
.NotEmpty()
.WithMessage("LastName Required");
});
并且我“认为”应该引起FirstName和LastName的验证,但它没有。
然后我尝试了这种方式
When(x.Company.length == 0, () =>
{
RuleFor(x => x.FirstName)
.NotEmpty()
.WithMessage("FirstName Required");
RuleFor(x => x.LastName)
.NotEmpty()
.WithMessage("LastName Required");
});
同样的事情发生了,FirstName和LastName验证没有发生。
答案 0 :(得分:1)
您第一次尝试使用When语句应该有效。这对我有用。
When(x => string.IsNullOrWhiteSpace(x.Company), () => {
RuleFor(x => x.FirstName)
.NotEmpty()
.WithMessage("{PropertyName} Required");
RuleFor(x => x.LastName)
.NotEmpty()
.WithMessage("{PropertyName} Required");
});