記事詳細


投稿日
2026年10月28日19時44分
タイトル

ASP.NET Core MVC: Viewに特定のLayoutを設定する方法を教えてください。

内容

SP.NET Core MVC で 特定のビューにだけ別の Layout を設定する方法はいくつかあります。
基本的には Razor ビュー (.cshtml) 内で Layout プロパティを指定することで実現できます。

1. ビュー内で直接 Layout を指定する方法

ビューの先頭に以下のように書きます。

Cshtml
@{ Layout = "~/Views/Shared/_CustomLayout.cshtml"; // 任意のレイアウトファイルパス } <h1>このビューはカスタムレイアウトを使用します</h1> <p>コンテンツ部分...</p>
  • パス指定はルートからの相対パス(~)または Views/Shared などのフォルダ構造に合わせて記述します。
  • このビューだけが _CustomLayout.cshtml を使い、他のビューは _Layout.cshtml を使います。

2. コントローラーから ViewData["Layout"] を渡す方法

コントローラーでレイアウトを切り替える値を渡し、ビューでそれを使います。

Controller

Csharp
public IActionResult SpecialPage() { ViewData["Layout"] = "~/Views/Shared/_SpecialLayout.cshtml"; return View(); }

View

Cshtml
@{ Layout = ViewData["Layout"]?.ToString(); } <h1>特別ページ</h1>
  • コントローラー側で条件に応じてレイアウトを切り替えられます。

3. _ViewStart.cshtml を使って条件分岐

_ViewStart.cshtml は全ビューの読み込み前に実行されるため、条件付きでレイアウトを変えられます。

_ViewStart.cshtml

Cshtml
@{ if (Context.Request.Path.StartsWithSegments("/Special")) { Layout = "~/Views/Shared/_SpecialLayout.cshtml"; } else { Layout = "~/Views/Shared/_Layout.cshtml"; } }
  • URL やユーザーの状態によって自動的にレイアウトを切り替えられます。

注意点

  • Layout を null にするとレイアウトなしでビューがレンダリングされます。
  • レイアウトファイルは通常 Views/Shared に置きますが、ビュー専用フォルダに置くことも可能です。
  • レイアウトファイル内の @RenderBody() は必須(ビューのコンテンツが挿入される場所)。

💡 おすすめ
単発のビューだけレイアウトを変えるなら ビュー内で直接 Layout を指定するのが最も簡単です。
複数ビューや条件付き切り替えなら _ViewStart.cshtml またはコントローラーから ViewData を使う方法が便利です。

もし希望があれば、私が 複数レイアウトを切り替える実用的なサンプルプロジェクトを作って差し上げますが、作りますか?

Powered by Froala Editor

添付画像

画像はありません
Genreのカテゴリ-名
Views
編集 | 記事一覧