我有一个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实例化的类的任何想法?
答案 0 :(得分:1)
为此,您需要安装Ninject.Web
NuGet(撰写本文时的最新版本为3.0.0.5),然后让您的webform派生自Ninject.Web.PageBase
而不是{{1 }}:
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的属性(您应该收到编译时警告)。