You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:57:03