web-dev-qa-db-ja.com

Razor _Layout.cshtmlからSessionオブジェクトにアクセスする

Razorを使用してMVC 3アプリを構築すると、_Layoutファイルで使用されるSessionスコープにいくつかの情報が保持されます。

これを実装する最良の方法は何なのか、私には何の手掛かりもありません。この情報の一部は、ヘッダーに表示されるものを決定するために使用されます。

SessionスコープにCurrentUserオブジェクトが保存されています

24
JBeckton

レイアウトファイルのHttpContextにアクセスするだけです

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

または、ユーザーオブジェクトにアクセスする場合は、ページ内にオブジェクトを作成して割り当てることができます。

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

その後、コードで...

@user.Name
55
Buildstarted

より簡単な方法は、ビューから直接Sessionプロパティを使用することです(HttpContext.Current.プレフィックスはまったく必要ありません):

@(CurrentUser)Session["CurrentUser"]