2010-12-07 30 views
22

RazorでMVC 3アプリケーションを構築していて、_Layoutファイルで使用されるセッションスコープ内にいくつかの情報が残っています。Razor _Layout.cshmlからセッションオブジェクトにアクセス

これを実装する最良の方法は何かについてはわかりません。この情報の一部は、ヘッダーに表示される内容を決定するために使用されます。

は、私はあなたが単にオブジェクトを作成することができ、ユーザオブジェクトにアクセスしたい場合は

答えて

52

あなただけの、レイアウトファイル

@HttpContext.Current.Session["Whatever"].ToString() 

でのHttpContextにアクセスしたりできSessionスコープに保存されているCurrentUserにオブジェクトを持っていますそのページに...あなたのコード内で後で次に

@{ CurrentUser user = (CurrentUser)HttpContext.Current.Session["CurrentUser"]; } 

を割り当てる

@user.Name 
+0

ちょっとおかげで..動作しますが、今、私は私が持っていた汚れの原因を感じます@usingディレクティブを追加します。あなたの_LayoutにViewModelを使用する方法はありませんか? – JBeckton

+4

あなたがきれいになるようにするには、Views \ Web.configファイルのRazor usingのデフォルトリストに名前空間を追加します。 – marcind

+1

ビューモデルの共通基底クラスでこれを囲むこともできます。私は_Layoutページからその基本クラスを使用できると信じています。 –

3

それはビュー(HttpContext.Current.プレフィックスはまったく必要ありません)から直接Sessionプロパティを使用している実行する簡単な方法:

@(CurrentUser)Session["CurrentUser"] 
関連する問題