Ninject与ASP.Net webforms和MVC

我想在一个结合ASP.Net webforms和ASP.Net MVC的项目中使用Ninject。 我使用的是Ninject 2,但是当我使用Ninject.Web.Mvc中的NinjectHttpApplication时,它会抱怨当我使用诸如PageBase之类的内容时,内核不会被创建。

Global.asax中有以下内容,我不确定要添加什么。

public class MvcApplication : Ninject.Web.Mvc.NinjectHttpApplication
{
    protected override void OnApplicationStarted()
    {
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);
        RegisterAllControllersIn(Assembly.GetExecutingAssembly());
    }

    protected override Ninject.IKernel CreateKernel()
    {
        return new StandardKernel(new ServiceModule());
    }
}

有人在某个地方可以分享一些想法或代码吗?


正如Ruben所说,我已经在Ninject邮件列表中发布了一条消息:

http://groups.google.com/group/ninject/browse_thread/thread/317fc48387399aa6

简言之,不幸的是,这不可能。 然而,使用自定义的PageBase类,您可以使属性和方法注入成为可能(来自Nate Kohari在Ninject邮件列表中的答案):

public abstract class PageBase : Page
{
  public IKernel Kernel { get; private set; }
  public PageBase() { Kernel = ...; }
  public void Page_Init() { Kernel.Inject(this); }
} 

1)看看Mvc和非Mvc Ninject扩展的源代码 - 代码非常简短,整洁

2)转到ninject邮件列表并提出这个问题,以及你从源头上学到的东西。 会有一个答案或补丁快速闪电


这里有一些非常好的资源,介绍如何在我之前收藏的webforms中使用DI:

http://aspnetresources.com/articles/ioc_and_di_with_web_forms http://aspnetresources.com/articles/real_world_ioc_and_di_with_webforms

希望这可以帮助。

链接地址: http://www.djcxy.com/p/46621.html

上一篇: Ninject with ASP.Net webforms and MVC

下一篇: How to access RouteData from within an ASHX?