0

Ninjectを使用してEntityFrameworkコンテキストを注入しているMVC3プロジェクトがあります。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の代わりにWebフォームを派生させる必要があり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)
    {
    }
}

また、非表示にしているクラスにはContextCtxというプロパティが既に存在するため、プロパティ名として使用したことに注意してください(コンパイル時の警告が表示されるはずです)。System.Web.UI.Page

于 2012-04-17T20:44:08.830 に答える