8

サービスと作業単位(すべてNinjectがNinjectModuleから依存関係を注入する)で通常のリポジトリパターンを使用するプロジェクトがありますが、からサービスにアクセスしActionFilterAttributeて、レイアウトに(DBから)いくつかの情報を注入しようとしています私が表示するページの一部なので、各コントローラーのすべてのアクションをいじる必要はありません。

問題は、ある画面でDBに保存し、次の画面に移動してから前に戻ると(標準で@Url.Action)発生します。アクションのActionFilterAttributeforIndexはトリガーされますが、サービスと対応するリポジトリ(属性内)への呼び出しはスローされます例外のためDbContext has been disposed

サービスへのアクセスに問題があり、その結果、プロパティインジェクションを介してサービスを注入してDbContextいる間から問題がありますか?ActionFilterAttributeコンストラクターはActionメソッドのシグネチャに応じて任意の2つのパラメーターを受け取るため、属性のサービスにプロパティインジェクションを使用していることに注意してください。したがって、私の唯一のオプションは、プロパティを介してインジェクションすることでした。

コードが必要な場合はお知らせください。質問を更新します。

4

1 に答える 1

3

次の質問で問題の解決策を見つけました 。ASP.NETMVC3アクションフィルターに依存関係を挿入します。このアプローチの何が問題になっていますか?

MarkSeemanの答えとstriplingwarriorのコメントを組み合わせることはそれに対する解決策でした。

基本的に、ActionFilterAttributeを、アクションを装飾し、後で必要なパラメーターを保持するだけの属性に分割し、アクションのカスタム属性をチェックするActionFilterに分割し、属性が存在する場合は、DBから必要なデータをに挿入します。 ViewBag。すべては後でNinjectのBindFilter拡張機能にバインドされるため、必要なメソッドにのみ適用されます。

于 2013-01-13T05:33:41.403 に答える