【问题标题】:Does Web API validation provider have anything for Enum properties?Web API 验证提供程序是否有任何 Enum 属性?
【发布时间】:2015-10-06 17:17:44
【问题描述】:

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

我尝试了自定义模型绑定器,但它没有给我想要的结果。

参考请见Acheive Default model Binding working with custom model binder in WebPI and asp.net mVC 4

【问题讨论】:

    标签: c# asp.net-mvc-4 asp.net-web-api data-annotations


    【解决方案1】:

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

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

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

    当我在请求中从 POST JSON data 中省略了 FooEnum 时,它总是会创建一个带有第一个 FooEnumFooDTO。我认为发生的情况是它默认不是一个可为空的值,因此它默认为来自Enum 的值。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2019-12-05
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 2012-10-19
      相关资源
      最近更新 更多