可以使用自定义模型绑定器来实现 [SwaggerIgnore],而不需要使用 [FromServices]。以下是一个示例:
首先,创建一个自定义模型绑定器,用来跳过在 Swagger 文档中显示的属性:
public class SwaggerIgnoreBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
bindingContext.Result = ModelBindingResult.Success(null);
return Task.CompletedTask;
}
}
然后,在需要隐藏的属性上使用自定义模型绑定器:
public class PersonModel
{
public int Id { get; set; }
public string Name { get; set; }
[ModelBinder(BinderType = typeof(SwaggerIgnoreBinder))]
public bool IsHidden { get; set; }
}
最后,在 Startup.cs 中注册自定义模型绑定器:
services.AddMvc(options =>
{
options.ModelBinderProviders.Insert(0, new BinderTypeModelBinderProvider(typeof(SwaggerIgnoreBinder)));
});
这样,IsHidden 属性将在 Swagger 文档中被忽略。
上一篇:ASP.NETCoreWebAPI-提供了无效的请求URI。请求URI必须为绝对URI,或必须设置BaseAddress。
下一篇:ASP.NETCoreWebAPI-无法为服务类型实例化实现类型'System.Net.Http.IHttpClientFactory'