我已经实现了一个ModelBinder
但它的BindModel()
方法没有被调用,我得到错误代码 500 并显示以下消息:
错误:
无法从“MyModelBinder”创建“IModelBinder”。请确保它派生自“IModelBinder”并具有公共无参数构造函数。
我确实从 IModelBinder 派生并且确实有公共无参数构造函数。
我的模型绑定器代码:
public class MyModelBinder : IModelBinder
{
public MyModelBinder()
{
}
public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
{
// Implementation
}
}
在 Global.asax 中添加:
protected void Application_Start(object sender, EventArgs e)
{
ModelBinders.Binders.DefaultBinder = new MyModelBinder();
// ...
}
WebAPI 动作签名:
[ActionName("register")]
public HttpResponseMessage PostRegister([ModelBinder(BinderType = typeof(MyModelBinder))]User user)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
用户等级:
public class User
{
public List<Communication> Communications { get; set; }
}