C# 设置API模型属性的默认值属性,而不是“默认值”;“字符串”;

C# 设置API模型属性的默认值属性,而不是“默认值”;“字符串”;,c#,asp.net,asp.net-core,asp.net-web-api,C#,Asp.net,Asp.net Core,Asp.net Web Api,我有一个具有以下模型的web API: public class ParseLicenseRequest { public const string emptyStringDefault = ""; [Required(AllowEmptyStrings = false)] public string LicenseKey { get; set; } [DefaultValue(emptyStringDefault)] public

我有一个具有以下模型的web API:

public class ParseLicenseRequest
{
    public const string emptyStringDefault = "";

    [Required(AllowEmptyStrings = false)]
    public string LicenseKey { get; set; }

    [DefaultValue(emptyStringDefault)]
    public string Sid { get; set; } = emptyStringDefault;

    public bool ShortFormat { get; set; }
}
编译代码时,它看起来像这样:

我正在尝试将sid的默认值设置为空:

"sid" : ""

但是,它不会将默认值设置为空。

我认为您可以添加自定义ISchemaFilter来修改示例值:

注意:不确定您的招摇过市是什么版本,不同的招摇过市将使
Apply()
中的参数不同

public class CustomSchemaFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        if (context.Type == typeof(ParseLicenseRequest))
        {
            schema.Example = new OpenApiObject
            {
                ["Sid"] = new OpenApiString("")
            };
        }

    }
}
在Startup.cs中注册筛选器:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebapiProject5", Version = "v1" });
    c.SchemaFilter<CustomSchemaFilter>();

});
services.AddSwaggerGen(c=>
{
c、 SwaggerDoc(“v1”,新OpenApiInfo{Title=“WebapiProject5”,Version=“v1”});
c、 SchemaFilter();
});
参考:


这是一个自负的“问题”。代码将按照您的预期工作。这是否回答了您的问题@tymtam不,因为我完全按照它说的做了你用的还是其他版本?您使用的是哪个版本号?您好@DanaGriff,我的回答有助于您解决问题吗?如果有,请接受我的回答。如果没有,请继续告诉我。请参阅:。谢谢。