C# HttpGet接口返回Enum.GetValues获取的枚举列表报错如何解决
解决方案
错误原因
- 方法声明了
async关键字但无对应await异步操作,会触发编译告警,无异步逻辑可直接移除异步声明 IActionResult类型的接口不能直接返回集合对象,需要通过Ok()方法将结果包装为标准200响应体Enum.GetValues默认返回的是Array类型,直接序列化的结构不符合前后端交互的常规预期
实现代码
方案1:直接返回枚举值列表
适用于前端只需要枚举值的场景
[HttpGet("GetType")] public IActionResult GetTemplateType() { var liste = Enum.GetValues(typeof(NotificationTemplateType)) .Cast<NotificationTemplateType>() .ToList(); return Ok(liste); }
.NET 5及以上版本可以简化为泛型写法:
[HttpGet("GetType")] public IActionResult GetTemplateType() { var liste = Enum.GetValues<NotificationTemplateType>().ToList(); return Ok(liste); }
方案2:返回枚举名称+值的键值对列表
适用于前端需要同时拿到枚举文本和对应数值的场景,是更推荐的交互方式
[HttpGet("GetType")] public IActionResult GetTemplateType() { var enumList = Enum.GetValues<NotificationTemplateType>() .Select(e => new { Name = e.ToString(), Value = (int)e }) .ToList(); return Ok(enumList); }
内容的提问来源于stack exchange,提问作者Burcu
相关产品推荐
相关产品推荐

