• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【ASP.NET MVC3】コントローラの状態)

【ASP.NET MVC3】コントローラの状態

このQ&Aのポイント
  • ASP.NET MVC3 Webアプリケーションで複数のコントローラから呼び出される共通のクラスとメソッドを作成したい
  • コントローラに値をセットするためにControllerContextクラスを使用する方法を知りたい
  • この方法を使用すると、MVCの開発がより進んだ状態になる可能性がある

質問者が選んだベストアンサー

  • ベストアンサー
  • onos
  • ベストアンサー率81% (127/155)
回答No.1

呼び出し元の判別は呼び出し方でなんとかするとして。 現在のSession変数への値のセットは HttpContext.Current.Session["変数名"] に値をセットすることで可能です。 まぁ、MVCらしい書き方ではないので他に方法はありそうな気はしますが。 あと、メソッドをstaticにしてしまうと(内部で値を保持しないように気をつける必要はありますが)呼び出しが楽かも。

nayutax
質問者

お礼

HttpContext.Current.Session["変数名"]で完全に制御できました! ControllerContextではなく、HttpContextだったんですね。。 他にも、ControllerContext.Currentは必要な情報の宝庫ですね。 もっと早く質問すれば良かったです。 本当にありがとうございました!

その他の回答 (1)

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.2

どこで聞いた話か知らないけど、ControllerContextは、コントーローラの挙動をテストする際、クラスの初期化時にコントロールの状態をセットする、DependencyInjection(依存性注入)手法で使われるクラスでは。 また、ControllerContextは静的クラスではないよ。 サービスクラス中に、var context = new ControllerContext();とやっても、値はnullのままで、そのcontextにRequestやHttpContextをセットして、それでControllerを初期化し、テストを進めます。 (すいません。自分もまだ一部しか使ってない) セッションの値を読み書きしたいなら、#1でonosさんのおっしゃる通り、HttpContext.currentで現在の状態を取得するのが正解です。

nayutax
質問者

お礼

聞きかじりで一方的に理解していました。申し訳ありません(赤面 shockatzさんのおっしゃった、"dependency injection"というのを調べていて、ううう。。何か凄く深いです。 とりあえず今回はonos様にBA差し上げますが、shockatz様にも同じくらい感謝しております。 ありがとうございました!

関連するQ&A