Bài 1: Giới thiệu về Trình quản lý quảng cáo
📝 Bài giảng: Thêm layout cho phân vùng Admin trong ASP.NET Core MVC
1. Khái niệm & mục tiêu
Trong một dự án web ASP.NET Core MVC, bạn có thể cần nhiều khu vực (Area) khác nhau, ví dụ:
-
Frontend (User site): giao diện cho người dùng.
-
Admin: giao diện quản trị hệ thống.
👉 Việc tách layout giúp dễ quản lý: Admin sẽ có giao diện riêng biệt, sử dụng template (ở đây là Atlantis-Lite-master).
2. Tạo Area Admin
Trong ASP.NET Core MVC, Area được dùng để phân vùng ứng dụng.
📌 Thực hiện:
-
Chuột phải vào project → Add → New Folder → đặt tên
Areas. -
Trong
Areas, tạo thư mục conAdmin. -
Bên trong
Admin, tạo cấu trúc chuẩn:Areas └── Admin ├── Controllers ├── Views │ └── Shared └── Admin.csproj (không cần nếu là trong project chính) -
Tạo controller mẫu:
using Microsoft.AspNetCore.Mvc; namespace YourProject.Areas.Admin.Controllers { [Area("Admin")] public class HomeController : Controller { public IActionResult Index() { return View(); } } }
3. Cấu hình route cho Area
Mở Program.cs (hoặc Startup.cs tuỳ project):
app.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
→ Bây giờ, đường dẫn /Admin/Home/Index sẽ load trang admin.
4. Thêm Atlantis-Lite-master vào dự án
-
Copy toàn bộ thư mục
Atlantis-Lite-master/assetsvàowwwroot/admin-assets/.
(nên đặt thư mục riêng để không lẫn với frontend).wwwroot └── admin-assets ├── css ├── js ├── img -
Copy file HTML gốc
Atlantis-Lite-master/index.htmlđể làm Layout.
5. Tạo _LayoutAdmin.cshtml
Trong Areas/Admin/Views/Shared/, tạo file _LayoutAdmin.cshtml.
Dán nội dung HTML của Atlantis, ví dụ:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>@ViewData["Title"] - Admin</title>
<link rel="stylesheet" href="~/admin-assets/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/admin-assets/css/atlantis.css" />
</head>
<body>
<div class="wrapper">
<!-- Sidebar -->
@Html.Partial("_Sidebar")
<div class="main-panel">
<!-- Header -->
@Html.Partial("_Header")
<div class="content">
<div class="container-fluid">
@RenderBody()
</div>
</div>
<!-- Footer -->
@Html.Partial("_Footer")
</div>
</div>
<script src="~/admin-assets/js/core/jquery.3.2.1.min.js"></script>
<script src="~/admin-assets/js/core/bootstrap.min.js"></script>
<script src="~/admin-assets/js/atlantis.min.js"></script>
@RenderSection("Scripts", required: false)
</body>
</html>
6. Tạo các Partial View (nếu cần)
Trong Areas/Admin/Views/Shared/:
-
_Sidebar.cshtml -
_Header.cshtml -
_Footer.cshtml
Copy từ file template Atlantis (index.html) phần sidebar, header, footer để tái sử dụng.
7. Sử dụng Layout trong View
Mở Areas/Admin/Views/Home/Index.cshtml:
@{
Layout = "~/Areas/Admin/Views/Shared/_LayoutAdmin.cshtml";
ViewData["Title"] = "Trang quản trị";
}
<h2>Dashboard</h2>
<p>Chào mừng bạn đến trang quản trị</p>
8. Tuỳ chỉnh & mở rộng
-
Truyền dữ liệu vào Layout:
DùngViewBaghoặcViewDatatừ Controller để hiển thị thông tin (VD: tên admin, avatar). -
Section Scripts:
Trong view con, bạn có thể thêm script riêng:@section Scripts { <script> console.log("Trang Index đã load!"); </script> }
9. Kết quả
Khi chạy /Admin/Home/Index, bạn sẽ thấy:
-
Giao diện lấy từ Atlantis-Lite-master.
-
Các view admin sử dụng layout riêng.
-
Tách biệt hoàn toàn với layout của frontend.
Bài tập 20: Áp dụng template layout cho phân vùng admin
Yêu cầu:
1. Sử dụng template được cung cấp, hãy cắt layout chung cho trang admin
2. Áp dụng template phần danh sách Video
3. Áp dụng template phần Tài khoản
Nộp bài:
-
Nén project đã làm và nộp file.