繁体   English   中英

将依赖项注入自定义ModelBinder

[英]Injecting a dependency into a custom ModelBinder

我现在正在开发一个ASP.net MVC项目,我想知道以下是否可行:我有一个自定义的ModelBinder类,它引用了一个服务(本质上是一个fetcher)作为依赖项。 我希望使用IoC容器(当前为Ninject)注入依赖项,但在方法链中似乎没有任何地方可以插入一些内容,即从IoC容器中加载模型绑定器。

我的第一个想法是有一个通用的对象绑定器,然后尝试从容器中检索特定的ModelBinder,如果没有找到则返回null,然后将其作为绑定器,例如:ModelBinders.Binders.Add(typeof(object) )的typeof(NinjectModelBinder));

但我不确定

  • a)如果这样可行
  • b)如果它真的是正确的事情

我可以放弃复杂对象的解析直到Action方法,但是能够提供复杂对象(基本上是从数据访问层加载和构建)作为操作的参数会更清晰,更可取。

任何想法/帮助表示赞赏。

我认为你将不得不在模型绑定器中进行服务定位器调用,或者建立模型绑定器,或者两者兼而有之。

    ModelBinders.Binders.Add(typeof(Customer), Resolve<CustomerBinder>());

我个人在我的场景中使用setter注入类似于你的。 在查找之后,NInject调用此属性注入。 它起作用并完成工作。

在你的模型绑定器中,你可以调用类似的东西

IMyFetcher db = DependencyResolver.Current.GetService<IMyFetcher>();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM