Web API验证提供程序对Enum属性有任何内容吗



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

我试过一个自定义的模型活页夹,但它没有给我想要的结果。

有关参考,请参阅Acheive默认模型绑定与WebPI和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 data中省略了FooEnum时,它总是用第一个FooEnum创建一个FooDTO。我认为发生的情况是,它的每个默认值不是一个可以为null的值,因此它默认为Enum中的一个值。

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

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

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

相关内容

  • 没有找到相关文章

最新更新