下面的代码尝试创建依赖于感知的模型绑定器。 模型绑定器应根据请求中的对象实例化对象。但是,我没有在下面的代码中看到逻辑,它只在对象上实例化。此外,我尝试调试它,不调用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);
}
答案 0 :(得分:0)
因为我定义了一个基于属性的自定义模型绑定器,它优先于DIModelBinder。