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

.NET项目配置Swagger使参数P1为带枚举选项的字符串类型

.NET Swagger 配置Query参数为带枚举下拉的字符串类型

你当前代码的问题是把P1参数的Schema错误定义成了object类型,还嵌套了同名属性,这才导致Swagger把它识别成对象类型。要改成字符串类型并显示下拉枚举,直接给参数的Schema设置为string类型,同时指定枚举值即可,不需要嵌套Properties。

修正后的SwaggerExt类代码:

public class SwaggerExt : IOperationFilter
{
    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        if (operation.Parameters == null)
            return;

        foreach (var parameter in operation.Parameters)
        {
            if (parameter.Name.Equals("P1", StringComparison.OrdinalIgnoreCase))
            {
                // 直接将Schema设置为string类型,并添加枚举值
                parameter.Schema = new OpenApiSchema
                {
                    Type = "string",
                    Enum = new List<IOpenApiAny>
                    {
                        new OpenApiString("value-1"),
                        new OpenApiString("value-2"),
                        new OpenApiString("value-3")
                    }
                };
                // 可选:添加描述说明
                parameter.Description = "请选择P1的可选值";
            }
        }
    }
}

关键改动说明

  • 移除了Properties嵌套定义,直接给parameter.Schema赋值字符串类型的Schema
  • 将Type从object改为string,确保Swagger识别为字符串参数
  • 保留Enum列表,这样Swagger界面会自动生成下拉选择框

注册Filter的代码保持不变:

c.OperationFilter<SwaggerExt>();

这样修改后,Swagger里的P1参数就会显示为字符串类型的下拉选择框,而不是object类型了。

内容的提问来源于stack exchange,提问作者KA-Yasso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:02:39