如果其他字段为空,如何使用FluentValidation对一个字段应用验证?
直到今天我在做一个项目时,我才听说FluentValidation,所以我遇到了一个问题。我有这个如果其他字段为空,如何使用FluentValidation对一个字段应用验证?,fluentvalidation,Fluentvalidation,直到今天我在做一个项目时,我才听说FluentValidation,所以我遇到了一个问题。我有这个 RuleFor(x=>x.Company) .NotEmpty() .WithMessage("Company Required"); RuleFor(x => x.FirstName) .NotEmpty() .WithMessage(FirstName Required"); RuleFor(x => x.LastName) .NotE
RuleFor(x=>x.Company)
.NotEmpty()
.WithMessage("Company Required");
RuleFor(x => x.FirstName)
.NotEmpty()
.WithMessage(FirstName Required");
RuleFor(x => x.LastName)
.NotEmpty()
.WithMessage("LastName Required");
还有一大堆其他的语句规则我需要做的是
若“公司”字段为空,则要求验证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验证没有发生。您第一次尝试使用When语句应该是有效的。这就是我的工作
When(x => string.IsNullOrWhiteSpace(x.Company), () => {
RuleFor(x => x.FirstName)
.NotEmpty()
.WithMessage("{PropertyName} Required");
RuleFor(x => x.LastName)
.NotEmpty()
.WithMessage("{PropertyName} Required");
});
@jmoerdyk,我现在看到的是,我的困惑在于何时,因为示例显示了它如何与布尔而不是字符串一起工作,所以您对字符串进行测试,得到布尔值
String.Length==0
等。