![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつも大変にお世話になります。
今作っているASP.NET MVC3 Webアプリケーションで、複数のコントローラから呼び出される、共通のクラスとメソッドを作っています。
その中から、コントローラ(具体的にはセッション情報)に値をセットしたいです。
すごく単純化しますと、コントローラがHomeControllerとMemberControllerとして、
public WorkerService
{
public SetSessionValue(???){
// 呼び出し元がHomeControllerなら、Session["HomeDt"]に日付をセット
// 呼び出し元がMemberControllerなら、Session["MemberDt"]に日付をセット
}
}
ていうメソッドを呼び出しています。
英文の記事を見て、ControllerContextという静的クラスを使えばいいのは感覚的にわかったのですが、具体的なコーディングとなるとさっぱりです。
これができると、何かMVCでも光が見えそうな気がします。現在はお先真っ暗ですが。
どなたか教えてやっていただけないでしょうか。お願いします。
No.1ベストアンサー
- 回答日時:
呼び出し元の判別は呼び出し方でなんとかするとして。
現在のSession変数への値のセットは HttpContext.Current.Session["変数名"] に値をセットすることで可能です。
まぁ、MVCらしい書き方ではないので他に方法はありそうな気はしますが。
あと、メソッドをstaticにしてしまうと(内部で値を保持しないように気をつける必要はありますが)呼び出しが楽かも。
HttpContext.Current.Session["変数名"]で完全に制御できました!
ControllerContextではなく、HttpContextだったんですね。。
他にも、ControllerContext.Currentは必要な情報の宝庫ですね。
もっと早く質問すれば良かったです。
本当にありがとうございました!
No.2
- 回答日時:
どこで聞いた話か知らないけど、ControllerContextは、コントーローラの挙動をテストする際、クラスの初期化時にコントロールの状態をセットする、DependencyInjection(依存性注入)手法で使われるクラスでは。
また、ControllerContextは静的クラスではないよ。
サービスクラス中に、var context = new ControllerContext();とやっても、値はnullのままで、そのcontextにRequestやHttpContextをセットして、それでControllerを初期化し、テストを進めます。
(すいません。自分もまだ一部しか使ってない)
セッションの値を読み書きしたいなら、#1でonosさんのおっしゃる通り、HttpContext.currentで現在の状態を取得するのが正解です。
聞きかじりで一方的に理解していました。申し訳ありません(赤面
shockatzさんのおっしゃった、"dependency injection"というのを調べていて、ううう。。何か凄く深いです。
とりあえず今回はonos様にBA差し上げますが、shockatz様にも同じくらい感謝しております。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba Sleep関数について教えてください 1 2023/01/18 10:18
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- 据え置き型ゲーム機 PS4コントローラのリセット確認方法 1 2022/10/01 10:57
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- 結婚式・披露宴 私は35歳の男で今年10月に挙式を行う予定です。 今は招待状の作成中で誰を招待するか大体決まっていま 7 2023/06/14 17:56
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- 学校 同じクラスの子が英語の小テストで単語帳をチラチラ見ており、先生にカンニングするなと注意されていたので 2 2023/07/16 20:06
- 物理学 私達は、過去を、今、現在と呼んで居るので有る。理解出来ますか? 8 2023/02/16 21:46
- ゲーム apexでマクロ付きコントローラって 1 2023/07/26 18:23
- 父親・母親 介護疲れ 2 2022/04/08 20:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
readLine()ではじめから読み直...
-
Javaのメモリの管理
-
Fileの読み取り専用の解除
-
abstract と static を一緒に付...
-
JAVAで放物線を描く
-
StringBufferからStringへキャ...
-
新規契約でUQモバイル申し込も...
-
エクセルVBAで、条件に一致する...
-
onClickで関数呼出し後に、結果...
-
private static という変数の修飾
-
JavaでのDirectXの使用
-
java gui のイベント処理が重い
-
DataGridViewの行追加について。
-
Javaのクラスのstaticメソッド...
-
変数名の付け方
-
どうしてListオブジェクトをIte...
-
ATLとMFCの違いは何でしょうか?
-
インスタンスを同じ名前で作成...
-
iterator とiterableの関係がわ...
-
EXCEL VBAにて動的にCheckBOXを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコード件数の表示
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
abstract と static を一緒に付...
-
下記のリストならno002が含まれ...
-
Google Apps Script で getRang...
-
メソッド宣言の戻り値の型にク...
-
Strutsでチェックボックスの値...
-
StringBufferからStringへキャ...
-
readLine()ではじめから読み直...
-
javaに"search"という関数 or ...
-
なぜprotected overrideなのか
-
C# 点の描き方をおしえてくだ...
-
public static void main (Stri...
-
メソッドの引数に指定されてい...
-
別クラスのmainメソッドの実行
-
YYYYMMDD書式の日付に対する適...
-
C# の ByVal と ByRef について
-
Javaの関数名が長い?
-
Java初心者です、エラーの意味...
おすすめ情報