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

Swagger UI如何将enum与boolean类型属性渲染为下拉选择框

Swagger UI 枚举、布尔属性下拉框配置方案(.NET 平台)

1. 枚举属性渲染为文本下拉框

配置Swagger服务注册

根据你使用的.NET版本选择对应配置:

  • .NET 6 及以上版本(Program.cs)
builder.Services.AddSwaggerGen(options =>
{
    // 你原有Swagger配置,比如SwaggerDoc等,保持不变
    // 核心配置:将枚举转为字符串形式展示,而非数值
    options.DescribeAllEnumsAsStrings();
    // 可选:枚举值使用驼峰命名展示
    options.DescribeStringEnumsInCamelCase();
});
  • .NET 5 及以下版本(Startup.cs ConfigureServices方法)
services.AddSwaggerGen(options =>
{
    // 原有Swagger配置保持不变
    options.DescribeAllEnumsAsStrings();
    options.DescribeStringEnumsInCamelCase();
});

注意:如果使用Swashbuckle.AspNetCore v6.0+版本,DescribeAllEnumsAsStrings()扩展方法已标记为过时,替换为以下配置即可:

options.SchemaGeneratorOptions = new SchemaGeneratorOptions
{
    DescribeAllEnumsAsStrings = true,
    DescribeStringEnumsInCamelCase = true
};

配置完成后重启项目,DayEnum属性就会自动渲染为包含Today、Tomorrow、ThisWeek、ThisMonth四个选项的下拉选择框。


2. 布尔属性渲染为「是/否」下拉框

如果需要将布尔类型属性也改为二选一的下拉选择,需要自定义Schema过滤器:

步骤1:创建自定义布尔Schema过滤器

using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using Microsoft.OpenApi.Any;

public class BooleanSchemaFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        if (context.Type == typeof(bool) || context.Type == typeof(bool?))
        {
            schema.Enum = new List<IOpenApiAny>
            {
                new OpenApiBoolean(true),
                new OpenApiBoolean(false)
            };
            // 追加选项说明,方便用户理解
            schema.Description += " 可选值:是(true) / 否(false)";
        }
    }
}

步骤2:注册过滤器到Swagger配置

在刚才的AddSwaggerGen配置块中追加一行:

options.SchemaFilter<BooleanSchemaFilter>();

重启项目后布尔类型属性就会渲染为下拉选择框。

内容的提问来源于stack exchange,提问作者hosam hemaily

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:18:03