如何在Swagger中显示查询参数的c#验证属性

如何在Swagger中显示查询参数的c#验证属性,swagger,asp.net-core-webapi,Swagger,Asp.net Core Webapi,我在ASP.NETCore2.1WebAPI项目中使用Swagger。下面是一个示例控制器操作方法: [HttpGet] public string GetString([Required, MaxLength(20)] string name) => $"Hi there, {name}."; 这是我在招摇过市文档中得到的。如您所见,Swagger显示的是Required属性,而不是MaxLength属性: 如果我在作为后期操作方法参数的DTO类上使用Required和Max

我在ASP.NETCore2.1WebAPI项目中使用Swagger。下面是一个示例控制器操作方法:

[HttpGet]
public string GetString([Required, MaxLength(20)] string name) =>
    $"Hi there, {name}.";
这是我在招摇过市文档中得到的。如您所见,Swagger显示的是
Required
属性,而不是
MaxLength
属性:

如果我在作为后期操作方法参数的DTO类上使用
Required
MaxLength
属性,则Swagger会同时显示这两个属性:

如何让Swagger显示查询参数的
MaxLength
(和其他)验证属性


注意:我尝试用一个名为
name
的字符串属性的类替换
string name
参数-Swagger生成完全相同的文档。

在.NET Core中,您可以使用
showcomonextensions=true
,并具有给定的序列(顶部是ConfigObject)

公共静态IApplicationBuilder用户6SwiggerDocumentationUI(
此IApplicationBuilder应用程序)
{
app.UseSwagger();
app.UseSwaggerUI(c=>
{
//允许在单据上添加新增属性信息,如[MaxLength(50)]
c、 ConfigObject=新的ConfigObject
{
ShowCommonExtensions=true
};
c、 SwaggerEndpoint(“/swagger/v1/swagger.json”,“Asptricks.net API”);
c、 RoutePrefix=“api_文档/索引”;
c、 InjectStylesheet(“/swagger ui/custom.css”);
c、 注入JavaScript(“/swagger ui/custom.js”);
c、 SupportedSubmitMethods(新[]{SubmitMethod.Patch});
//折叠模型接近示例。
c、 默认模式扩展深度(0);
//删除单独的模型定义。
c、 DefaultModelsExpandDepth(-1);
});
返回应用程序;
}

您使用哪种版本的Swagger UI?(F12->控制台->键入
版本
并输入)。Swagger UI 3.14+可以选择显示参数
maxLength
,但默认情况下它是关闭的,需要在Swagger UI初始化代码中打开。谢谢@Helen。我试过以下方法。在配置ASP.Net中间件的
Startup.Confugre()方法中,我替换了
applicationBuilder.UseSwaggerUI()applicationBuilder.UseSwaggerUI(SwagggerUIOptions=>SwagggerUIOptions.ConfigObject.Add(“showCommonExtensions”,true))。不幸的是,这没有什么区别。但是我不确定这是否是设置
showcomonextensions
的正确方法。我还检查了SwaggerUi版本-它是
3.16.0
Thank@Raj。我正在使用Net Core,
ConfigObject
是一个
JObject
,所以我不能说
new ConfigObject
。但是我再次尝试了我的旧代码
ConfigObject.Add(“showcomonextensions”,true)
,现在就成功了@adiga/Raj
c.ShowCommonExtensions()c=>{
中的code>似乎也起到了同样的作用。因此我认为新的ConfigObject是不必要的。