如何在 .NET Framework Web 应用程序中为 Web Api 执行自定义模型绑定?

How to do custom model binding for Web Api in a .NET Framework web application?

我开始将旧版 .NET Framework ASP.NET API(不使用 WebApi 框架)转换为 .NET Core WebApi 项目。由于依赖关系,作为一个中间步骤,我只是将当前的 API 框架换成 WebApi,并保持项目以 .NET Framework 为目标。

API 的当前版本支持将查询字符串中的逗号分隔值绑定到模型的数组属性中;我想继续支持这个。

所以我需要一些自定义模型绑定。关于这个有很多类似的问题,但它们似乎都使用 .NET Core,WebApi 框架的不同版本,并且省略了正在使用的命名空间(例如 ASP.NET Core 1 Web API Model Binding Array)。

我正在使用 .NET Framework 4.7 和各种 Microsoft.AspNet.WebApi 包的 5.2.7 版。似乎我需要一个实现 IModelBinder 的 class,但这个接口至少存在于 3 个不同的命名空间中。

确切地说,我需要实现什么 IModelBinder 接口,一旦我实现了它,我该如何告诉 WebApi 框架使用我的绑定器来实现特定属性?

由于您的目标是通过 Microsoft.AspNet.WebApi 包实现的 Web API,因此您需要使用这些包中的类型。具体来说,您需要来自命名空间 System.Web.Http.ModelBindingIModelBinder(它在 Microsoft.AspNet.WebApi.Core 包提供的 System.Web.Http.dll 中定义)。

请参阅THIS了解如何在查询字符串上实现和使用绑定逗号分隔值。