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
相关产品推荐
相关产品推荐

