ASP.NET Core Web API - 如何使用 Fluent Validation 执行条件相对验证
ASP.NET Core Web API - How to perform conditional relative validation using Fluent Validation
在 ASP.NET Core-6 Web API 中,我有这个使用 Fluent Validation 的验证器:
public CustomerValidator()
{
RuleFor(p => p.NotificationType)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage("{PropertyName} should be not empty. NEVER!");
RuleFor(p => p.MobileNumber)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage("{PropertyName} should be not empty. NEVER!");
RuleFor(p => p.Email)
.EmailAddress();
}
我想使用这些条件进行验证:
如果 NotificationType = 'Email',则应要求提供电子邮件
如果 NotificationType = 'SMS',则应该需要 MobileNumber
如果 NotificationType = 'Both',则应要求提供电子邮件和手机号码
如何实现?
谢谢
您可以在 fluentvalidation 上使用 When()
扩展。
https://docs.fluentvalidation.net/en/latest/conditions.html
RuleFor(p => p.MobileNumber)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage("{PropertyName} should be not empty. NEVER!")
.When(x => x.NotificationType == "SMS");
在 ASP.NET Core-6 Web API 中,我有这个使用 Fluent Validation 的验证器:
public CustomerValidator()
{
RuleFor(p => p.NotificationType)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage("{PropertyName} should be not empty. NEVER!");
RuleFor(p => p.MobileNumber)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage("{PropertyName} should be not empty. NEVER!");
RuleFor(p => p.Email)
.EmailAddress();
}
我想使用这些条件进行验证:
如果 NotificationType = 'Email',则应要求提供电子邮件
如果 NotificationType = 'SMS',则应该需要 MobileNumber
如果 NotificationType = 'Both',则应要求提供电子邮件和手机号码
如何实现?
谢谢
您可以在 fluentvalidation 上使用 When()
扩展。
https://docs.fluentvalidation.net/en/latest/conditions.html
RuleFor(p => p.MobileNumber)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage("{PropertyName} should be not empty. NEVER!")
.When(x => x.NotificationType == "SMS");