【发布时间】:2016-07-20 02:00:38
【问题描述】:
在我的 MVC 项目中,我有一个自定义默认模型绑定器,它在模型绑定器创建模型时使用依赖解析器将服务注入模型。因此,我可以在模型中使用会员服务或可查询会话来进行验证,而将其排除在控制器之外。
protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
{
if (modelType.IsGenericType)
return base.CreateModel(controllerContext, bindingContext, modelType);
return _dependencyResolver.GetService(modelType);
}`
我想知道是否有办法在 Microsoft Web API 中执行此操作? IModelBinder 不提供要覆盖的 CreateModel 方法,并且经过搜索,我看不到任何方法可以做到这一点。
【问题讨论】:
-
所以你想正确地将服务注入你的 ModelBinder 实例(也许我没看错)?您是否尝试过在 ModelBinder 的构造函数中使用注入?它还可能取决于您使用的注入框架,有些比其他的更受限制。
-
当模型绑定器创建模型时,我想注入任何需要的服务。假设我有 UpdateUserModel(ISession session)。我希望模型绑定器注入它,以便我可以在 UpdateUserModel.Validate() 中查询会话。使用ninject作为框架
-
我只是做了一些搜索,但在创建模型时我也找不到方法。
标签: c# asp.net-web-api dependency-injection asp.net-web-api2 model-binding