C#でセッション変数がNULLまたは空であることを判断する最良の方法は何ですか?
質問
ASP.NET C#でセッション変数の存在を確認する最も良い方法は何ですか?
私は好きで
String.IsNullOrEmpty()
を使うのが好きなのですが、同じような方法で
Session
. 現在、私が知っている唯一の方法は。
var session;
if (Session["variable"] != null)
{
session = Session["variable"].ToString();
}
else
{
session = "set this";
Session["variable"] = session;
}
どのように解決するのですか?
他の方がおっしゃったことを踏襲すると 私は2層式にすることが多いです。
コア層。これはほとんどすべてのウェブアプリのプロジェクトに追加される DLL の中にあります。 . この中にSessionVarsクラスがあり、Session状態のゲッター/セッターのためにgrunt作業を行います。これは以下のようなコードを含んでいます。
public class SessionVar
{
static HttpSessionState Session
{
get
{
if (HttpContext.Current == null)
throw new ApplicationException("No Http Context, No Session to Get!");
return HttpContext.Current.Session;
}
}
public static T Get<T>(string key)
{
if (Session[key] == null)
return default(T);
else
return (T)Session[key];
}
public static void Set<T>(string key, T value)
{
Session[key] = value;
}
}
任意の型を取得するためのジェネリックに注意してください。
それから、特定の型、特に文字列のためのゲッター/セッターを追加します。なぜなら、私はしばしばユーザーに提示される変数に対してnullではなくstring.Emptyで作業することを好むからです。
例
public static string GetString(string key)
{
string s = Get<string>(key);
return s == null ? string.Empty : s;
}
public static void SetString(string key, string value)
{
Set<string>(key, value);
}
などなど...
そして、それを抽象化してアプリケーションモデルまで持ってくるためのラッパーを作成します。例えば、顧客の詳細があるとします。
public class CustomerInfo
{
public string Name
{
get
{
return SessionVar.GetString("CustomerInfo_Name");
}
set
{
SessionVar.SetString("CustomerInfo_Name", value);
}
}
}
お分かり頂けましたでしょうか?)
注意 ただ、受理された回答にコメントを追加する際に思いついたことがあります。状態サーバーを使用するとき、セッションにそれらを格納するとき、常にオブジェクトがシリアライズ可能であることを確認します。Webファームでジェネリックスを使用してオブジェクトを保存しようとすると、それが爆発するのはあまりにも簡単なことです。私は仕事でWebファームにデプロイしているので、オブジェクトがシリアライズ可能かどうかを確認するためにコア層で私のコードにチェックを加えました。)
関連
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み] .NETで文字列を改行で分割する最も簡単な方法とは?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] jQueryでドロップダウンリストの選択値を変更する
-
[解決済み] 私のインターフェースがTaskを返さなければならない場合、操作不要の実装を持つための最良の方法は何ですか?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
-
[解決済み】文字列の中にある文字列(実際はchar)の出現回数を数えるには?
-
[解決済み] 現在のASP.NETセッションがNULLの場合、どうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。