如果其他字段为空,如何使用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

直到今天我在做一个项目时,我才听说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");
还有一大堆其他的语句规则我需要做的是

若“公司”字段为空,则要求验证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
等。