C# Cơ bản .NET Core §1 Cài đặt, chương trình C# đầu tiên §2 Biến, kiểu dữ liệu và nhập/xuất §3 Toán tử số học và gán §4 So sánh, logic và lệnh if, switch §5 Vòng lặp for, while §6 Phương thức - Method §7 Phương thức - Delegate §8 Lớp - Class §9 Namespace §10 Partial, Nested §11 Kiểu giá trị, tham chiếu §12 Kiểu vô danh và dynamic §13 Biểu thức lambda §14 Event §15 Hàm hủy - Quá tải toán tử - thành viên tĩnh - indexer §16 null và nullable §17 Mảng §18 Chuỗi ký tự §19 Tính kế thừa §20 Phương thức khởi tạo §21 Tính đa hình - abstract - interface §22 Struct và Enum §23 Ngoại lệ Exeption §24 IDisposable - using §25 File cơ bản §26 FileStream §27 Generic §28 Collection - List §29 SortedList §30 Queue / Stack §31 Linkedlist §32 Dictionary - HashSet §33 Phương thức mở rộng §34 ObservableCollection §35 LINQ §36 (Multithreading) async - bất đồng bộ §37 Type §38 Attribute Annotation §39 DI Dependency Injection §40 (Multithreading) Parallel §41 Thư viện lớp §42 (Networking) HttpClient §43 (Networking) HttpMessageHandler §44 (Networking) HttpListener §45 (Networking) Tcp TcpListenerr/TcpClient §46 (ADO.NET) SqlConnection §47 (ADO.NET) SqlCommand §48 (EF Core) Tổng quan §49 (EF Core) Tạo Model §50 (EF Core) Fluent API §51 (EF Core) Query §52 (EF Core) Scaffold §53 (EF Core) Migration §54 (ASP.NET CORE) Hello World! §55 (ASP.NET CORE) Middleware §56 (ASP.NET CORE) Map - Request - Response §57 (ASP.NET CORE) IServiceCollection - MapWhen §58 (ASP.NET CORE) Session - ISession §59 (ASP.NET CORE) Configuration §60 (ASP.NET CORE) Gửi Mail §61 (ASP.NET CORE) SASS/SCSS §62 (ASP.NET CORE) LibMan §63 (ASP.NET RAZOR) Khởi tạo và Route §64 (ASP.NET RAZOR) Cú pháp Razor §65 (ASP.NET RAZOR) Layout trong ASP.NET Core §66 (ASP.NET RAZOR) Partial §67 (ASP.NET RAZOR) ViewComponent §68 (ASP.NET RAZOR) TagHelper §69 (ASP.NET RAZOR) PageModel §70 (ASP.NET RAZOR) Model Binding §71 (ASP.NET RAZOR) HTML Form, Validation §72 (ASP.NET RAZOR) Upload File §73 (ASP.NET RAZOR) HtmlHelper §74 (ASP.NET RAZOR) Entity Framework §75 (ASP.NET RAZOR) Paging §76 (ASP.NET RAZOR) Identity (1) - Register, Login, Logout §77 (ASP.NET RAZOR) Identity (2) Lockout, Reset Password §78 (ASP.NET RAZOR) Identity (3) Google Login §79 (ASP.NET RAZOR) Identity (4) Facebook Login §80 (ASP.NET RAZOR) Identity (5) profile, password, email ... §81 (ASP.NET RAZOR) Identity (6) Role §82 (ASP.NET RAZOR) Identity (7) Role-based Authorization §83 (ASP.NET RAZOR) Identity (8) RoleClaim §84 (ASP.NET RAZOR) Identity (9) Authorization Handler §85 (ASP.NET RAZOR) IAuthorizationService §86 (ASP.NET MVC) Controller - View §87 (ASP.NET MVC) Route §88 (ASP.NET MVC) EF, Identity §89 (ASP.NET MVC) Binding, Validation §90 (ASP.NET MVC) Xây dựng Website(1) §91 (ASP.NET MVC) Xây dựng Website(2) §92 (ASP.NET MVC) Xây dựng Website(3) §93 (ASP.NET MVC) Xây dựng Website(4) §94 (ASP.NET MVC) Giỏ hàng - Cart (5) §95 (ASP.NET MVC) elFinder (5) §96 (ASP.NET MVC) SB Admin (6)

Giới thiệu một số template admin miễn phí

Để nhanh chóng có được giao diện đẹp mắt, khoa học thì thường sẽ sử dụng và tùy biến từ một thiết kế giao diễn mẫu nào đó, đặc biệt là dành cho trang quản trị admin. Có nhiều mẫu template miễn phí để lựa chọn, dưới đây là vài trường hợp

Gentelella Admin

Mẫu template admin này sử dụng Bootstrap 4jQuery .

Start Bootstrap - SB Admin 2

Mẫu template admin này cũng sử dụng Bootstrap 4jQuery, phong cách thiết kế Material

Ngoài ra bạn có thể tham khảo các template khác như

Sử dụng tempate SB Admin 2 trong ASP.NET Core

Trong phần này sẽ sủ dụng SB Admin 2 để tích hợp vào các chức năng quản lý của ứng dụng mẫu đã thực hành từ các phần trước Tích hợp elFinder, hãy tải mã nguồn ex068-elfinder để tiếp tục phát triển.

SB Admin 2 có sử dụng các thành phần là Bootstrap 4, jQuery, chart.js, fontawesome, jquery-easing. Nên cần đảm bảo có các thành phần này trong dự án.

Với Bootstrap và jQuery mặc định tích hợp trong ASP.NET mẫu đã xây dựng, chart.js ở đây không dùng đến nên chưa cần tích hợp. Còn lại Font AwesomejQuery-easinng ta tích hợp vào dự án bằng LibMan

Thực hiện lệnh sau:

libman install jquery-easing
libman install font-awesome

Với Font Awesome tham khảo Awesome Icons để biết các icon dùng như thế nào

Như vậy các thành phần đã có, hãy truy cập sb-admin-2, bấm vào Free Download để tải về SB Admin 2, giải nén để có mã nguồn, từ đây ta sẽ tích hợp dần nó vào trang.

Bước đầu tiên hãy tạo trong dự án ASP.NET thư mục wwwroot/sbadmin, copy hai thư mục cssjs từ nguồn tải về vào thư mục mới tạo ra trên.

Tích hợp SB Admin cho trang Login

Trang Login, Logout, Quyên mật khẩu, Đăng ký mà ta đã xây dựng từ ví dụ trước sử dụng Identity, đối với SB Admin nó cùng cấu trúc - trang không có phần side bar, menu bar ... nên nhưng trang này ta xây dựng cùng một Layout.

Hình thức của chúng đều có dạng như sau: login.html

HTML để tùy biến - xuất phát từ đây xây dựng Layout có nội dung tại: code login.html

Từ tham khảo code index.html, ta xây dựng một file Layout dùng chung cho các trang đăng nhập, đăng ký, quyên mật khẩu, layout tại file Views/Shared/Admin/_LoginLayout.cshtml, có nội dung đầy đủ tại Views/Shared/Admin/_LoginLayout.cshtml

Layout này dựa theo Login.html, có nạp các CSS về Awesome Font, font Nunito từ Google, đồng thời cũng nạp sb-admin-2.min.js từ thư mục thiết lập của dự án.

Cập nhật Areas/Identity/Pages/Account/Login.cshtml

Mở Login.cshtml ra, cập nhật lại cho phù hợp với Layout mới, nội dung cập nhật đầy đủ tại Areas/Identity/Pages/Account/Login.cshtml

Để ý, file này có thiết lập sử dụng layout _LoginLayout.cshtml trên. Kết quả trang Login lúc này sẽ là:

asp.net

Cập nhật Areas/Identity/Pages/Account/Register.cshtml

Mở Register.cshtml ra, cập nhật lại cho phù hợp với Layout mới, nội dung cập nhật đầy đủ tại Areas/Identity/Pages/Account/Register.cshtml

Kết quả trang Login lúc này sẽ là:

asp.net

Cập nhật Areas/Identity/Pages/Account/ForgotPassword.cshtml

Trang này xây dụng có hình thức giống forgot-password.html

Mở mã nguồn ForgotPassword.cshtml, cập nhật thành Areas/Identity/Pages/Account/ForgotPassword.cshtml

Tương tự cập nhật cho các trang sử dụng Layout này:

Tùy biến trang User Manager

Các các phần trước về Identity đã có xây dựng chức năng để một User quản lý và cập nhật tài khoản của mình Quản lý tài khoản cá nhân, chức năng này xây dựng theo Razor Page và đã tích hợp vào ASP.NET MVC ở website mẫu MVCBlog, giờ ta sẽ tùy biến chúng sử dụng template SB Admin

Template những trang này xây dựng có cấu trúc dạng: Blank.html

Mã nguồn để tùy biến tại: code html Blank.html

Phân tích trang này, ta có thể tùy biến nó thành Layout với ba khu vực chính mà ta sẽ chuyển chúng thành các Section gồm phần bên trái SideBar, phần TopBar, còn lại là nội dung.

Tạo ra layout Views/Shared/Admin/_Layout.cshtml với nôi dung đầy đủ: Views/Shared/Admin/_Layout.cshtml

Mở file Areas/Identity/Pages/Account/Manage/_Layout.cshtml thiết lập nó sẽ sử dụng layout vừa tạo trên, toàn bộ sửa đổi thành: Areas/Identity/Pages/Account/Manage/_Layout.cshtml

TopBar

Phần Section TopBar được xây dựng tại file Views/Shared/Admin/_TopBar.cshtml, nội dung đầy đủ tại _TopBar.cshtml. Cở bản phần này hiện thị User đăng nhập và menu thả xuống để đăng xuất.

SideBar

Phần này ta xây dựng để xuất hiện menu chọn đến các chức năng quản lý User, cũng như các tính năng đã xây dựng ở phần trước như quản lý Role, quản lý Category và Post.

Section này nạp file Areas/Identity/Pages/Account/Manage/_ManageNav.cshtml, nên ta sẽ cập nhật file đó theo định dạng của SB Admin, toàn bộ cập nhật xem tại: _ManageNav.cshtml

Bằng cách như vậy, ta có được giao diện khi truy cập quản lý tài khoản cá nhân

asp.net

Tùy biến layout cho trang quản lý Role

Vẫn thiết lập để sử dụng layout Views/Shared/Admin/_Layout.cshtml cho các trang thuộc Areas/Admin/Pages/Role, trước tiên tạo file Areas/Admin/Pages/Role/_Layout.cshtml với nội dung

@{
    Layout = "/Views/Shared/Admin/_Layout.cshtml";
}
 
@RenderBody()
@section TopBar {
    @await Html.PartialAsync("/Views/Shared/Admin/_TopBar.cshtml")
}

@section SideBar {
    <partial name="/Areas/Admin/Pages/Role/_SideBar.cshtml" />
}

@section Scripts {
    @RenderSection("Scripts", required: false)
}

Tiếp theo Areas/Admin/Pages/Role/_ViewStart.cshtml sửa lại

@{
    Layout = "_Layout.cshtml";
}

Như vậy các trang thuộc Areas/Admin/Pages/Role sẽ sử dụng Layout trên. Trong đó /Areas/Admin/Pages/Role/_SideBar.cshtml chưa có, tạo file này và biên tập nội dung đầy đủ như tại _SideBar.cshtml

Làm tương tự cho các trang thuộc Areas/Admin/Pages/RoleClaims

asp.net

Tùy biến layout cho trang quản lý Post, Category

Trước tiên tùy biến Layout cho các View thuộc Controller - PostController. Tạo trong thư mục Areas/Admin/Views/Post file _Layouut.cshtml với nội dung đầy đủ như tại

@{
    Layout = "/Views/Shared/Admin/_Layout.cshtml";
}
 

@RenderBody()

@section TopBar {
    @await Html.PartialAsync("/Views/Shared/Admin/_TopBar.cshtml")
}

@section SideBar {
    <partial name="/Areas/Admin/Views/Post/_SideBar.cshtml" />
}

@section Scripts {
    @RenderSection("Scripts", required: false)
}

Tiếp theo tạo file /Areas/Admin/Views/Post/_SideBar.cshtml với nội dung đầy đủ như _SideBar.cshtml

Làm tương tự với controller CategoryController

asp.net asp.net

Mã nguồn tham khảo ASP_NET_CORE/mvcblog, hoặc tải về bản bài này ex068-sbadmin

Đăng ký theo dõi ủng hộ kênh