(部分ビュー)_Sidebar.cshtml
Views/Shared/_Sidebar.cshtml
@* 左側メニュー部分ビュー *@
@{
// メニュー項目は ViewBag やモデルから動的生成も可能
var menuItems = new[]
{
new { Text = "Reference 1", Url = Url.Action("Reference1", "Home") },
new { Text = "Reference 2", Url = Url.Action("Reference2", "Home") },
new { Text = "Reference 3", Url = Url.Action("Reference3", "Home") },
new { Text = "Reference 4", Url = Url.Action("Reference4", "Home") }
};
}
<nav class="bg-light border-end vh-100 p-3">
<h5 class="mb-3">Reference Menu</h5>
<ul class="nav flex-column">
@foreach (var item in menuItems)
{
<li class="nav-item">
<a class="nav-link text-dark" href="@item.Url">@item.Text</a>
</li>
}
</ul>
</nav>
2. (レイアウトファイル)_Layout.cshtml
Views/Shared/_Layout.cshtml
@{
Layout = null; // レイアウト自身なので null
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>@ViewBag.Title - My MVC App</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="container-fluid">
<div class="row">
<!-- 左カラム -->
<div class="col-md-3 col-lg-2 p-0">
@Html.Partial("_Sidebar") @* 部分ビュー呼び出し *@
</div>
<!-- メインコンテンツ -->
<div class="col-md-9 col-lg-10 p-4">
@RenderBody()
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
3. コントローラー例
Controllers/HomeController.cs
using System.Web.Mvc;
namespace YourApp.Controllers
{
public class HomeController : Controller
{
public ActionResult Index() => View();
public ActionResult Reference1() => View();
public ActionResult Reference2() => View();
public ActionResult Reference3() => View();
public ActionResult Reference4() => View();
}
}
4. ビュー例
Views/Home/Index.cshtml
@{
ViewBag.Title = "Home";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Welcome to the Home Page</h2>
<p>ここにメインコンテンツを表示します。</p>
ポイント
- Bootstrap のグリッドシステムで左カラム () と右カラム () を分割。
col-md-3col-md-9 _Sidebar.cshtml を部分ビュー化して で呼び出し。@Html.Partial("_Sidebar")- メニュー項目は 固定配列でも、データベースや設定ファイルから動的生成も可能。
vh-100で縦いっぱいの高さを確保し、 で右境界線を追加。border-end
✅ この構成なら、複数ページで同じ左メニューを再利用でき、Bootstrap の見た目も統一されます。
もし希望があれば、メニューを動的に生成するバージョンも作れますが、作りますか?
そうすればリンクや表示名をコントローラーやDBから変更可能になります。
Powered by Froala Editor