问题描述
我开始将旧的 .NET Framework ASP.NET API(不使用 WebApi 框架)转换为 .NET Core WebApi 项目。由于依赖关系,作为中间步骤,我只是将当前的 API 框架换成 WebApi,使项目以 .NET 框架为目标。
当前版本的 API 支持将查询字符串上的逗号分隔值绑定到模型上的数组属性中;我想继续支持这个。
所以我需要一些自定义模型绑定。有很多类似的问题,但它们似乎都使用 .NET Core、不同版本的 WebApi 框架,并省略了正在使用的命名空间(例如 ASP.NET Core 1 Web API Model Binding Array)。
我正在使用 .NET Framework 4.7 和各种 Microsoft.AspNet.WebApi
包的 5.2.7 版。看起来我需要一个实现 IModelBinder
的类,但是这个接口至少存在于 3 个不同的命名空间中。
我到底需要实现什么 IModelBinder
接口,一旦我实现了它,我该如何告诉 WebApi 框架将我的绑定器用于特定属性?
解决方法
由于您的目标是通过 Microsoft.AspNet.WebApi
包实现的 Web API,因此您需要使用这些包中的类型。具体来说,您需要命名空间 System.Web.Http.ModelBinding
中的 IModelBinder
(它在 System.Web.Http.dll
包提供的 Microsoft.AspNet.WebApi.Core
中定义)。
有关如何在查询字符串上实现和使用绑定逗号分隔值的信息,请参阅THIS。