gpt4 book ai didi

c# - Web API 验证提供程序是否有枚举属性?

转载 作者:行者123 更新时间:2023-11-30 17:02:12 24 4
gpt4 key购买 nike

我正在为 DTO 对象使用 DataAnnotations。我在 DTO 对象上应用 [Required] 属性。它不适用于 Enum 类型的属性。有没有办法自定义 Web API 验证提供程序来处理这个问题,或者有没有其他方法可以验证 Enum 属性?

我试过自定义模型 Binder ,但它没有给我想要的结果。

有关引用,请参阅 Acheive Default model Binding working with custom model binder in WebPI and asp.net mVC 4 .

最佳答案

我“可能”遇到过同样的问题。

我有以下 DTO 代码,我希望 Web API 反序列化

public class FooDTO
{
[Required]
public FooEnum FooEnum { get; set; }
//.. other attributes omitted
}
}

public enum FooEnum
{
Foo, Bar
}

当我在请求中从 POST JSON 数据 中省略 FooEnum 时,它总是会使用第一个 创建一个 FooDTO FooEnum。我认为发生的情况是它的默认值不是可为空的值,因此它默认为 Enum 中的值。

我通过将 ? 添加到 Enum 属性的末尾来解决这个问题,如下所示:

public class FooDTO
{
[Required]
public FooEnum? FooEnum { get; set; }
//.. other attributes omitted
}
}

在此之后,如果请求正文中省略了 Enum,则 [Required] 将使模型状态无效,我将得到预期的结果:请求将失败。

关于c# - Web API 验证提供程序是否有枚举属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20082158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com