2009-03-24 16 views
2

LINQが実行するクエリを書き込むロガーを作成しようとしています。これは、素晴らしいjavascriptライブラリSyntaxHighlighterでフォーマットされたページに実行されます。ViewDataをコントローラの外に設定する

このため、DataContextのLogプロパティをカスタムロガーに設定しました。これはうまくいきます。

これで、出力する必要のあるViewDataを設定できるように、コントローラの実行コンテキストの外にある現在のControllerオブジェクトを取得するだけで済みます。

提案がありますか?

答えて

3

コントローラの外で操作を実行する場合は、アクションフィルタ(など)を使用するとよいでしょう。 ActionFilterAttributeから継承し、OnActionExecuting(など)をオーバーライドしてビューにデータを挿入し、コントローラに[YourCustomFilter]とマークします。

Like this


(元;私は誤解を有していてもよい)

理想的に経由して(コンストラクタ引数としてリポジトリにログ・ライターを渡すことで、ここで依存性注入を使用する方が良いだろうStructureMapのようなものです。これは、StructureMapControllerFactoryを介してMVCとよく似ています)。

+0

それは私の問題を解決しません。私はLINQが生成するSQLクエリを得ることができます、私はちょうどページにそれらを取得する方法を見つける必要があります。 – changelog

+0

私はそれをシングルトンにしない限り、私はそれをTextWriterとActionFilterAttributeから同時に拡張することができないので、私はそうしたロガーインスタンスを取得することはできません。 – changelog

+0

そして、ベースコントローラーのアプローチがより適切かもしれません。ベースコントローラーがDALに渡すことができる(保護された)TextWriterを持っていたら? –

関連する問題