【发布时间】:2021-11-22 15:58:51
【问题描述】:
我有一个 DTO:
public class MyDto
{
[Required]
[Range(1, int.MaxValue)]
public MyEnum MyEnum { get; set; }
}
public enum MyEnum
{
E1 = 1,
E2 = 2 << 0,
E3 = 2 << 1,
E4 = 2 << 2,
}
当带有空主体{}的请求被发送到带有签名的方法时:
public async Task<IActionResult> Method([FromBody] MyEnum value)
MyEnum 将默认为 0,这对于该枚举来说是无效值。这就是我引入[Range(1, int.MaxValue)]注解的原因。但如果请求看起来像这样:
{"MyEnum" : 3} [FromBody] 将使用无效值 3 构造 MyDto。
问题:当请求包含对MyEnum 无效的值时,我如何使[FromBody] 模型验证失败,唯一有效的值是E1,E2,E3,E4,1,2,4,8,16?
【问题讨论】:
标签: c# asp.net-core enums