我将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]
将使模型状态无效,我将得到预期的结果:请求将失败。