1

ASP.NET でセッションごとにグローバルな変数を作成することはできますか? 通常、私はセッションでこれを行います:

Session("my_variable") = 10

しかし、これは次のように使用するたびにキャストする必要があります。

Dim my_variable as String = CInt(Session("my_variable"))

モジュールを作成すると、セッションごとにプロジェクト全体に公開される変数を作成できることがわかります...また、Global.asax がモジュールによって提供されるのと同じ機能の多くを許可することもわかります。モジュールの作成は避けたいと思います... Global.asax またはその他のベスト プラクティス メソッドでこれを行う方法はありますか? または、セッション変数が最善の方法ですか?

4

2 に答える 2

2

このような変数のラッパー クラスを作成します。

public class SessionVariables
{

  public static int MyVariable
  {
     get{ return if( Session["my_variable"] != null ) (int)Session["my_variable"]; else 0;}
     set {Session["my_variable"] = value;}
   }


}

そして、のように使用します

SessionVarible.MyVariable = 7;

int p =  SessionVarible.MyVariable + 3;
于 2012-05-12T21:03:15.913 に答える
1

セッションスコープでデータを保存/取得するだけの場合は、Sessionオブジェクトが最適です。HttpModuleは、ASP.NET要求パイプラインの特定のポイントに関連付けられているいくつかの機能を実装するのに役立ちます(たとえば、認証要求にログを追加したい場合など)。Global.asaxを使用すると、同様のことが可能になり、おそらく目的には十分です(global.asaxでターゲットにするイベントを実装するだけです)。

オブジェクトからのボクシング/アンボクシングが心配な場合は、キャストを非表示にするラッパークラスを使用するというhkutluayのアイデアが好きです。

于 2012-05-12T21:09:51.677 に答える