自定义模型绑定器是否仍在ASP.NET MVC 5中使用?我甚至无法编译。我有以下绑定代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.ModelBinding;
namespace Playground.CustomModelBinders
{
public class CalendarModelBinder : IModelBinder
{
public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
{
throw new NotImplementedException();
}
}
}
当我尝试注册时出现问题:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
ModelBinders.Binders.Add(typeof(CalendarModelBinder),new CalendarModelBinder());
}
我收到以下错误:
Error CS1503 Argument 2: cannot convert from 'Playground.CustomModelBinders.CalendarModelBinder' to 'System.Web.Mvc.IModelBinder'
答案 0 :(得分:2)
您似乎正在使用错误的命名空间。 IModelBinder
应位于System.Web.Mvc
命名空间中。
方法应该是:
public object BindModel(
ControllerContext controllerContext,
ModelBindingContext bindingContext
)
您可以查看MSDN。
在我的第二次检查中,我发现你在这一行中犯了错误:
ModelBinders.Binders.Add(typeof(CalendarModelBinder),new CalendarModelBinder());
Add
方法的第一个参数应该是绑定模型的类型,而不是ModelBinder。它应该是这样的:
ModelBinders.Binders.Add(typeof(MyCalendar),new CalendarModelBinder());