【发布时间】:2009-02-23 22:10:54
【问题描述】:
我目前正在开发一个 ASP.net MVC 项目,我想知道以下是否可行: 我有一个自定义 ModelBinder 类,它引用了一个服务(本质上是一个 fetcher)作为依赖项。我希望使用 IoC 容器(当前为 Ninject)注入依赖项,但在方法链中似乎没有任何地方可以插入从 IoC 容器加载模型绑定器的内容。
我的第一个想法是拥有一个通用对象绑定器,然后尝试从容器中检索特定的 ModelBinder,如果找不到则返回 null,然后将其设置为绑定器,即类似于: ModelBinders.Binders.Add(typeof(object),typeof(NinjectModelBinder));
但我不确定
- a) 是否可行
- b) 如果这确实是正确的做法
我可以在 Action 方法之前放弃对复杂对象的解析,但是能够将复杂对象(本质上是从数据访问层加载和构建)作为参数提供给行动。
任何想法/帮助表示赞赏。
【问题讨论】:
-
我个人认为通过 ModelBinderAttribute 创建的 ModelBinders 也应该是可注入的。我认为这是当前 MVC 版本的设计缺陷。
标签: asp.net-mvc binding inversion-of-control