如果使用FluentValidation其他字段为空,如何将验证应用于一个字段?

时间:2017-02-17 21:32:38

标签: fluentvalidation

直到今天我还没有听说过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验证没有发生。

1 个答案:

答案 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");
});
相关问题