質問編集履歴

1 タグの編集

退会済みユーザー

退会済みユーザー

2016/08/04 19:34  投稿

ASP.NET Core の共通ヘッダーに表示する可変メニューの実現方法
ASP.NET Coreでアプリケーションを作成しております。
_Layout.cshtmlに共通のヘッダーとフッターを定義して、@RenderBody()でコンテンツを切り替えていくことを想定します。
今回、共通ヘッダーにメニューを設け、その内容をDB取得値で可変にしたいと考えております。
_Layout.cshtml
```
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
/* @Model.MenuItems(List<Item>)の内容でメニューを作成 */
@foreach (var item in @Model.MenuItems)
{
<a asp-controller=@Model.Controller asp-action=@Mode.Action>@Mode.Name</a>
}
</ul>
</div>
</div>
</div>
```
初回表示ではHomeControllerのIndexが実行され、関数内でメニュー内容を作成し、Modelに渡しているため可変メニューが正常に表示されますが、他のControllerに移動するとModelがnullとなってしまい、共通ヘッダーの可変メニューが表示できません。
WEBであったサンプルでメニュー内容をBaseModelに記載し、各画面のModelはBaseModelを継承する形のものも試してみましたが、入力検証を含んでいる画面では画面表示時に「必須入力です」などの検証が働いてしまいうまく動作しませんでした。
AccountController.cshtml
```C#
[HttpGet]
public IActionResult Login(LoginViewModel model)
{
// メニューをmodelに設定する処理
return View(model);
}
```
表題のような実装を実現する方法について、お知恵を拝借できれば幸いです。
  • ASP.NET MVC Framework

    189 questions

    ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

  • ASP.NET

    965 questions

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

  • ASP.NET MVC 4

    81 questions

    ASP.NET MVC4は、MVCパターンを利用して、高度なテスト機能と保守機能を備えた Web アプリケーションを開発するためのフレームワークです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る