c# - 来自 App 常量的流畅验证自定义检查

标签 c# fluentvalidation

如何验证 Status 是否存在于我的静态类中?

public static class AppConstants
{
    public static class FormStatus
    {
        public static string NEW = "New";
        public static string COMPLETE = "Complete";
        public static string DELETED = "Deleted";
    }
}

验证器类

public SetStatusCommandValidator(IApplicationDbContext context)
{
    _context = context;

    RuleFor(v => v.Status)
        .NotNull()
        .NotEmpty().WithMessage("Status is required.")
        .Must(???).WithMessage("Status is not a valid.");
}

基本上,如何验证状态值必须是 AppConstants.FormStatus 之一?

谢谢!

最佳答案

您可以在 Must 谓词中创建内联集合/数组并使用 .Contains:

RuleFor(v => v.Status)
    .NotNull()
    .NotEmpty().WithMessage(...)
    .Must(v => new [] { AppConstants.FormStatus.NEW, AppConstants.FormStatus.COMPLETE, AppConstants.FormStatus.DELETED }.Contains(v)).WithMessage(...);

或者,您可以向包含所有这些的 FormStatus 添加另一个属性:

public static class AppConstants
{
    public static class FormStatus
    {
        // Statuses here

        public static string[] ALL_STATUSES = new string[] { NEW, COMPLETE, DELETED };
    }
}

然后你的 Must 谓词就变成 Must(v => AppConstants.FormStatus.ALL_STATUSES.Contains(v)).WithMessage(...);

抱歉,如果语法不完全正确并且不能立即编译,我是在手机上编写的,无法仔细检查。

关于c# - 来自 App 常量的流畅验证自定义检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68371602/

相关文章:

c# - 在其他 MVC 项目中构建 URL

c# - [DataContract] 的 JSON 示例

c# - 公共(public)类由于其保护级别而无法访问

c# - 进度条不工作

c# - OneWayToSource 绑定(bind)重置目标值

c# - 使用父模型值的子模型验证。流利的验证。 MVC4

c# - 使用 Ninject 的 MVC 5 流畅验证

c# - 如何使用流畅的验证将值传递到错误消息中

c# - Fluent Validation 重载 (Less)GreaterThanOrEqualTo 方法不会呈现相同的结果

asp.net-mvc-3 - FluentValidation入门问题