【问题标题】:How to validate enum in DTO so it contains valid values for that enum type?如何验证 DTO 中的枚举,使其包含该枚举类型的有效值?
【发布时间】:2021-11-22 15:58:51
【问题描述】:

我有一个 DTO:

public class MyDto
{
    [Required]
    [Range(1, int.MaxValue)]
    public MyEnum MyEnum { get; set; }
}
public enum MyEnum
{
    E1 = 1,
    E2 = 2 << 0,
    E3 = 2 << 1,
    E4 = 2 << 2,
}

当带有空主体{}的请求被发送到带有签名的方法时: public async Task&lt;IActionResult&gt; Method([FromBody] MyEnum value)

MyEnum 将默认为 0,这对于该枚举来说是无效值。这就是我引入[Range(1, int.MaxValue)]注解的原因。但如果请求看起来像这样:

{"MyEnum" : 3} [FromBody] 将使用无效值 3 构造 MyDto

问题:当请求包含对MyEnum 无效的值时,我如何使[FromBody] 模型验证失败,唯一有效的值是E1,E2,E3,E4,1,2,4,8,16

【问题讨论】:

    标签: c# asp.net-core enums


    【解决方案1】:

    好的,我找到了:

        [Required]
        [EnumDataType(typeof(MyEnum))]
        public MyEnum MyEnum { get; set; }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多