MVC3中动作方法参数的Ninject依赖注入

时间:2011-11-17 17:09:03

标签: c# asp.net-mvc-3 ninject ninject.web.mvc

我想使用NInject.MVC3来解析在控制器上调用Action方法时要实例化的具体类。例如:

    [HttpPost]
    public ActionResult Index(IMyModelInterface model)
    {
        // do something

        return View();
    }

显然没有依赖注入,MVC3无法实例化IMyModelInterface,但我可以将该接口绑定到实现此接口的具体类。

我试过这个,只是从MVC框架中获取错误,尝试实例化接口。

所以,首先,尝试做这件事是件坏事吗?

如果这不是一件蠢事,我该怎么做?

如果做坏事,我该怎么做呢。我考虑过使用ViewModel然后复制参数?我稍微不愿意这样做,因为我的模型包含了要使用的视图的所有好的验证属性 - 并且必须在ViewModel中复制它,这似乎增加了维护开销。

我在doing this使用Autofac看到了SO问题。

我正在使用Nuget包中最新版本的NInject和NInject.MVC3。

2 个答案:

答案 0 :(得分:4)

您可以实现自己的模型绑定器来执行此操作。

Subclass DefaultModelBinder,覆盖CreateModel并在此方法中使用Ninject返回相应的类型。

答案 1 :(得分:3)

Ninject不允许您在这样的方法中注入依赖项,因为您可以阅读here
您应该通过控制器的构造函数,属性或setter方法注入依赖项。