我已经为我的自定义模型粘合剂项目实现了WebApi
using WebApi.Controllers;
using System.Web.Http.ModelBinding;
using System.Web.Http.Controllers;
namespace WebApi.Models
{
public class ModelBaseBinder : IModelBinder
{
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
if ((bindingContext.Model is MyModel))
{
//my code here
controller.InitModel(model);
return true;
}
return false;
}
}
}但是,由于某种原因,在Global.asax.cs中的GlobalConfiguration.Configure(WebApiConfig.Register);行中,我得到了一个错误:The type does not implement the IModelBinder interface. Parameter name: binderType。

我的Global.asax.cs看起来是这样的:
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AutoMapperConfiguration.Configure();
GlobalConfiguration.Configuration.BindParameter(typeof(ModelBase), new ModelBaseBinder());
FluentValidationModelValidatorProvider.Configure(GlobalConfiguration.Configuration);我猜想,由于某种原因,MVC正在寻找System.Web.ModelBinding.IModelBinder,但在WebApi的情况下,我有System.Web.Http.ModelBinding.IModelBinder实现实例。
你知道我怎么解决这个问题吗?
更新:
我发现,如果我在我的控制器上评论这个方法:
public void Post([FromBody]MyModel model)
{
//my code here
}比我没有得到上面的错误。但我还是不明白为什么我会遇到这样的问题。
这是我的模特的细节
public class MyModel : ModelBase
{
}
[ModelBinder(typeof(ModelBaseBinder))]
public class ModelBase
{
}发布于 2015-08-30 00:49:35
验证模型上的ModelBinderAttribute是来自System.Web.Http.ModelBinding还是System.Web.Mvc。
在这两种情况下都有IModelBinder的实现(System.Web.Http.ModelBinding和System.Web.Mvc,您的属性将命名空间与绑定器匹配)。
https://stackoverflow.com/questions/32278132
复制相似问题