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

如何移除Swagger中枚举输入的可用值预览(Swashbuckle/.NET)

移除Swagger中枚举值的「Available values」预览列表(.NET 5/6/7 + Swashbuckle)

可以实现这个需求,核心思路是通过自定义CSS隐藏Swagger UI中枚举参数的预览列表,同时保留「Try it out」后的下拉选择功能,具体步骤如下:

方法一:注入自定义CSS隐藏预览区域

  1. 添加自定义样式文件
    在项目的wwwroot目录下创建swagger-custom.css文件,写入以下样式:

    /* 隐藏枚举参数的Available values预览列表 */
    .parameters-container .parameter__enum {
        display: none;
    }
    
  2. 配置Swagger UI加载自定义样式
    根据你的.NET版本,在配置Swagger的地方注入这个样式文件:

    • .NET 6/7(Program.cs):
      app.UseSwaggerUI(c =>
      {
          c.SwaggerEndpoint("/swagger/v1/swagger.json", "你的API版本名称");
          // 加载自定义CSS
          c.InjectStylesheet("/swagger-custom.css");
      });
      
    • .NET 5(Startup.cs的Configure方法):
      app.UseSwaggerUI(c =>
      {
          c.SwaggerEndpoint("/swagger/v1/swagger.json", "你的API版本名称");
          c.InjectStylesheet("/swagger-custom.css");
      });
      

方法二:通过自定义Schema过滤器调整枚举展示(可选)

如果不想用CSS,也可以通过自定义Schema过滤器修改OpenAPI文档的枚举描述,但这种方式需要注意:它会移除OpenAPI schema中的枚举值描述,但保留下拉所需的enum字段(确保Try it out时下拉框正常)。不过这种方式不如CSS直接,示例代码如下:

public class HideEnumPreviewFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        if (context.Type.IsEnum)
        {
            // 清空枚举的描述列表,Swagger UI就不会显示Available values了
            schema.Enum.Clear();
            // 重新添加枚举值的原始值,保证下拉框正常工作
            foreach (var enumValue in Enum.GetValues(context.Type))
            {
                schema.Enum.Add(new OpenApiString(enumValue.ToString()));
            }
        }
    }
}

然后在AddSwaggerGen中注册这个过滤器:

builder.Services.AddSwaggerGen(c =>
{
    c.SchemaFilter<HideEnumPreviewFilter>();
    // 其他配置
});

注意:方法二可能会影响部分Swagger UI的其他枚举展示逻辑,优先推荐方法一。

内容的提问来源于stack exchange,提问作者Julius Mikkelä

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:23:21