質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

5968閲覧

ASP.NET Core の共通ヘッダーに表示する情報について

退会済みユーザー

退会済みユーザー

総合スコア0

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2016/08/04 00:33

###前提・実現したいこと
現在、ASP.NET Coreを使用してアプリケーションを作成しております。
これまでASP.NET WebFormの開発経験はありますが、MVCは完全に未経験なので質問させてください。

_Layout.cshtmlに共通で使用するヘッダーを定義しております。
そのヘッダーにはログインしているユーザー情報やメニューを表示しており、
HomeControllerでCookieからユーザーIDを取得し、Modelに設定しています。

■_Layout.cshtml

using WebApplication1.Models.Base; @model BaseViewModel (中略) <body> <div class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> @if (Model.IsLogin) { <li>@Model.UserName</li> } else { <li><a asp-controller="Account" asp-action="Login">ログイン</a></li> } </div> </div> </body>

■HomeController.cs

[HttpGet] public IActionResult Index(BaseViewModel model) { // CookieからIDを取得しBaseViewModelに氏名を設定する処理 return View(model); }

HomeのIndexを表示した際はログイン情報が正しく表示されますが、他のControllerに移動した場合は
BaseViewModelの内容が消えてしまいます。※他のControllerのModelは全てBaseViewModelを継承しています。

そこで質問したいのは、_Layout.cshtmlに定義した共通ヘッダーに常にログイン情報を表示するにはどういった
手法を取ればよろしいでしょうか?
(WebFormだとSessionに値を設定しておいてそれを参照するようにしておりましたが・・・)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Visual Studio で ASP.NET Core のプロジェクトを作れば、サンプルコードにそのものずばりの処理が入っています。
参考にしてみてください。

その内容を全てここに書くことはできませんが、かいつまんで言うと

  • ユーザー情報を Model の一部としては持たない
  • コントローラーでユーザー情報が必要な時は、ユーザー情報を管理する UserManager や、サインイン処理を制御する SignInManager を DI(Dependency Injection)してもらって、それを使う
  • View でも同様に、Razor の @inject ディレクティブを使うことで、それらを Injection してもらうことができる

という感じみたいです。

投稿2016/08/04 09:11

aetos

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/04 09:27

ご指摘通りサンプルで使用されているAuthorizationの仕組みを利用することで解決できそうです。 Modelにはユーザー情報を持たない件、大変参考になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問