带有 ModelBinder 的 Swashbuckle 和 Web Api 方法

Swashbuckle and Web Api method with ModelBinder

我有一个 C# WebAPI 项目,其方法使用自定义 ModelBinder 作为其输入参数。当我查看 Swashbuckle 生成的 Swagger UI 时,方法参数的所有属性都单独列出,而不是只有一个 "body" 参数。如果我去掉 [ModelBinder] 属性并切换到使用 [FromBody] 属性,Swagger UI 会显示正确的内容。我必须使用 [ModelBinder] 属性,因此无法将其关闭。

有没有办法让 Swashbuckle 生成“[FromBody] 属性样式”单个参数而不是它正在执行的多个参数?

Ondrej 是对的。只需链接它们:

IHttpActionResult Foo([FromBody][ModelBinder]SomeModel model)

要补充一点,对于 Swashbuckle,属性的顺序很重要:

IActionResult Foo([FromBody, ModelBinder(typeof(SomeModelBinder))]SomeModel model)

将在 requestBody 中使用 SomeModel ref 生成正确的 OpenApi 模式。

但是

IActionResult Foo([ModelBinder(typeof(SomeModelBinder)), FromBody]SomeModel model)

将生成一个将 SomeModel 定义为查询参数的 OpenApi 架构