0

我有一个 MVC3 项目,我正在使用 Ninject 将实体框架上下文注入其中。我正在使用 Ninject 包 (3.0.0.15)、Ninject.MVC3 (3.0.0.6) 和 Ninject.Web.Common (3.0.0.7)。一切都很好,除非我尝试在文件后面注入 WebForms 代码。我假设这是因为我没有正确连接某些东西,但不确定如何连接它。Ninject 也无法在 Razor 实例化的文件中工作。

这是我的代码背后的代码:

[Inject]
public IDbContext DataContext { get; set; }

Context 属性每次都显示为 null。在我更新到 Ninject 3.0 之前它工作得很好。

我的启动方法如下:

public static void Start()
{
    DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
    DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
    Bootstrapper.Initialize(CreateKernel);
}

关于如何让 Ninject 将 DataContext 注入 WebForm 和 Razor 实例化的类的任何想法?

4

1 回答 1

1

为此,您需要安装Ninject.WebNuGet(撰写本文时的最新版本是 3.0.0.5),然后让您的网络表单从以下位置派生Ninject.Web.PageBase而不是System.Web.UI.Page

public partial class WebForm1 : Ninject.Web.PageBase
{
    [Inject]
    public IDbContext Ctx { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
    }
}

另请注意,我用作Ctx属性名称是因为在您隐藏的类上已经有一个名为Context的属性(您应该收到编译时警告)。System.Web.UI.Page

于 2012-04-17T20:44:08.830 回答