FluentValidator isEmpty 不验证第一项

发布于 2025-01-19 16:49:23 字数 585 浏览 1 评论 0原文

我有一个流畅的验证器:

RuleFor(x => x.TypeTest)
          .NotEmpty()
          .WithMessage(x => string.Format(MessagesValidation.ValeurRequise, nameof(x.TypeTest)))

TypeTest 是枚举类型

public enum TypeTest
  {
    A,
    B,
    C,
  }
  • 即使我给出 TypeTest = "A" 验证器也不会验证它并返回错误。
  • 解决方案,但我不喜欢它:
public enum TypeTest
  {
    Empty = 0,
    A,
    B,
    C,
  }

还有其他解决方案吗?请。

更新

问题是每当我给出第一个值时,它都会被视为空,并且验证器会返回错误。这就是为什么我添加一个新值作为 Empty 但我问是否还有其他方法?

I have a fluent validator:

RuleFor(x => x.TypeTest)
          .NotEmpty()
          .WithMessage(x => string.Format(MessagesValidation.ValeurRequise, nameof(x.TypeTest)))

TypeTest is enum type

public enum TypeTest
  {
    A,
    B,
    C,
  }
  • Even I give TypeTest = "A" validator doesn't valid it and return an error.
  • Solution but I didnt Like it:
public enum TypeTest
  {
    Empty = 0,
    A,
    B,
    C,
  }

is there any other solution ? please.

Updated

the problem is anytime I give the first value, it consider as Empty, and validator return an error. that is why I add a new value as Empty but im asking if there's an other way ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

乖乖兔^ω^ 2025-01-26 16:49:23

为什么要尝试使用 NotEmpty() 方法验证枚举类型?枚举永远不能为空。它总是有一个默认值。
如果要验证枚举类型的值,应该使用 IsInEnum() 方法。
此外,您不能像您在问题中所写的那样将字符串分配给枚举类型。

Why are you trying to validate an enum type using NotEmpty() method? Enum can never be empty. It always has a default value.
If you want to validate value of an enum type, you should use IsInEnum() method.
Also, you can't assign a string to an enum type as you've written in your question.

酒浓于脸红 2025-01-26 16:49:23

如果要typeTest允许“空”值,请使属性无效:

public TypeTest? TypeTest { get; set; }
//             ^ (the question mark after the type allows nulls to be assigned)

应该使“ notempty()”验证器正常工作,但是缺点是为枚举介绍一个可能的值:<代码> null 。根据您的用例,可能需要null值。将属性的类型从typEtest更改为typeTest?将需要下游代码更改。任何依赖typeTest属性的任何内容都需要使用x.typetest.value而不仅仅是x.typetest

If you want TypeTest to allow for "empty" values, make the property nullable:

public TypeTest? TypeTest { get; set; }
//             ^ (the question mark after the type allows nulls to be assigned)

That should get the "NotEmpty()" validator working, but the downside is introducing an additional possible value for an enum: null. Depending on your use case, a null value might be desirable. Changing the type of the property from TypeTest to TypeTest? will require downstream code changes. Anything relying on the TypeTest property will need to access the enum value using x.TypeTest.Value rather than just x.TypeTest.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文