gpt4 book ai didi

asp.net-mvc - 该类型未实现 IModelBinder 接口(interface)。参数名称 : binderType

转载 作者:行者123 更新时间:2023-12-03 17:59:18 26 4
gpt4 key购买 nike

我已经实现了custom model binder对于我的 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 . enter image description here

我的 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实现。

你知道我该如何解决这个问题吗?

更新:

我发现如果我在我的 Controller 上评论这个方法:
public void Post([FromBody]MyModel model)
{
//my code here
}

比我没有收到上面的错误。
但仍然无法理解为什么我会遇到这样的问题。

这是我的模型详细信息
public class MyModel : ModelBase
{
}

[ModelBinder(typeof(ModelBaseBinder))]
public class ModelBase
{
}

最佳答案

验证模型上的 ModelBinderAttribute 是否来自 System.Web.Http.ModelBindingSystem.Web.Mvc .

( System.Web.Http.ModelBindingSystem.Web.Mvc )中都有 IModelBinder 的实现,并且您的属性将命名空间与您的活页夹匹配

关于asp.net-mvc - 该类型未实现 IModelBinder 接口(interface)。参数名称 : binderType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32278132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com