_Layout.cshtml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. @inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
  2. @{
  3. var viewModel = HttpContextAccessor.HttpContext.Items["layoutViewModel"] as bitforum.Models.LayoutViewModel;
  4. }
  5. <!DOCTYPE html>
  6. <html lang="ko">
  7. <head>
  8. <meta charset="utf-8" />
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  10. <title>@ViewData["Title"] - @viewModel.AppConfig.AppName</title>
  11. <meta name="description" content="bitforum.io 관리자 영역입니다. 외부인은 이용이 불가합니다." />
  12. <meta name="author" content="www.playr.co.kr" />
  13. <meta name="copyright" content="playr, 2025" />
  14. <meta name="referrer" content="no-referrer">
  15. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  16. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  17. <meta http-equiv="Content-Language" content="ko" />
  18. <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
  19. <meta http-equiv="Pragma" content="no-cache" />
  20. <meta http-equiv="Expires" content="0" />
  21. <meta name="robots" content="noindex, nofollow" />
  22. <link rel="stylesheet" href="~/node_modules/bootstrap/dist/css/bootstrap.min.css" />
  23. <link rel="stylesheet" href="~/node_modules/bootstrap-icons/font/bootstrap-icons.min.css" />
  24. <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
  25. @await RenderSectionAsync("Styles", required: false)
  26. </head>
  27. <body>
  28. <!-- 좌측 -->
  29. <aside id="aside">
  30. <!-- 메뉴 -->
  31. <ul class="nav flex-column">
  32. @foreach (var menu in viewModel.Menus)
  33. {
  34. @Html.Partial("_MenuItem", menu)
  35. }
  36. </ul>
  37. <footer>ⓒ PLAYR. All Rights Reserved</footer>
  38. </aside>
  39. <!-- 우측 -->
  40. <main id="main">
  41. <!-- 상단 -->
  42. <header id="header">
  43. <div class="row justify-content-between align-items-center g-0">
  44. <div class="col">
  45. <button type="button" id="btnAsideToggle" class="btn btn-light">
  46. <i class="bi bi-arrow-left"></i>
  47. </button>
  48. </div>
  49. <div class="col text-center">
  50. <strong class="logo">
  51. <img src="/images/favicon.ico" /> @viewModel.AppConfig.AppName
  52. </strong>
  53. </div>
  54. <div class="col text-end">
  55. <div class="dropdown profile">
  56. <button class="btn btn-light dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
  57. @User.Identity.Name
  58. </button>
  59. <ul class="dropdown-menu">
  60. <li><a href="/Identity/Account/Manage" class="dropdown-item">내 정보</a></li>
  61. <li>
  62. <form asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="~/" method="post">
  63. <button type="submit" class="dropdown-item">로그아웃</button>
  64. </form>
  65. </li>
  66. </ul>
  67. </div>
  68. </div>
  69. </div>
  70. </header>
  71. <div class="pt-4">
  72. <!-- 내용 -->
  73. @RenderBody()
  74. </div>
  75. </main>
  76. <script src="~/node_modules/jquery/dist/jquery.min.js"></script>
  77. <script src="~/node_modules/jquery-validation/dist/jquery.validate.min.js"></script>
  78. <script src="~/node_modules/jquery-validation/dist/additional-methods.min.js"></script>
  79. <script src="~/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
  80. <script src="~/js/func.js" asp-append-version="true"></script>
  81. <script src="~/js/site.js" asp-append-version="true"></script>
  82. @await RenderSectionAsync("Scripts", required: false)
  83. </body>
  84. </html>