在ASP.NET MVC3中创建依赖性感知模型绑定器

时间:2012-02-02 09:47:09

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

下面的代码尝试创建依赖于感知的模型绑定器。 模型绑定器应根据请求中的对象实例化对象。但是,我没有在下面的代码中看到逻辑,它只在对象上实例化。此外,我尝试调试它,不调用CreateModel方法。

Creating a DI-Aware Model Binder


using System;
using System.Web.Mvc;
namespace MvcApp.Infrastructure {
public class DIModelBinder : DefaultModelBinder {
protected override object CreateModel(ControllerContext controllerContext,
ModelBindingContext bindingContext, Type modelType) {
return DependencyResolver.Current.GetService(modelType) ??
base.CreateModel(controllerContext, bindingContext, modelType);
}
}
}

此类使用应用程序范围的依赖项解析程序来创建模型对象并回退到 必要时的基类实现(使用System.Activator类创建模型) 实例使用默认构造函数)。

我们必须在应用程序中注册我们的绑定器作为默认的模型绑定器,我们在这里做 Global.asax的Appliction_Start方法,如下所示。

Registering a Default Model Binder



 protected void Application_Start() {
    AreaRegistration.RegisterAllAreas();
    ModelBinders.Binders.DefaultBinder = new DIModelBinder();
    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);
    }

1 个答案:

答案 0 :(得分:0)

因为我定义了一个基于属性的自定义模型绑定器,它优先于DIModelBinder。