作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 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
FooEnumEnum
中的值。
我通过将 ?
添加到 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/
我是一名优秀的程序员,十分优秀!