ASP.NET MVC 5中的自定义模型绑定器

时间:2016-03-01 04:09:35

标签: asp.net asp.net-mvc asp.net-mvc-4

自定义模型绑定器是否仍在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'    

1 个答案:

答案 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());