Từng bước xây dựng Website mẫu với ASP.NET Core MVC, phần này xây dựng danh mục để chuẩn bị cho một Website là một blog đăng các bài viết
Model Category tương ứng là bảng Category trong CSDL SQL Server, lưu trữ thông tinh các danh mục của Blog, mỗi danh mục có thể là danh mục gốc hoặc là danh mục con của một danh mục khác, ta sẽ xây dựng Model này như sau:
Models/Category.cs
public DbSet< Category > Categories {set; get;}
Thực hiện lệnh sau tạo một Migration đặt tên là init
Add-migration Init
Sau đó thực hiện cập nhật database
Update-database
Nếu sau cập nhật cần sửa đổi thì có thể xóa Migration và thực hiện lại quy trình trên, xóa Migration cuối bằng cách
Remove migrations
Bạn có thể sử dụng công cụ dotnet aspnetcodegenerator, tự động phát sinh ra Controller với các Action/View đáp ứng các chức năng Create, Read, Update, Delete cho Category. Sau khi phát sinh, sẽ chỉnh sửa trên mã nguồn này cho nhanh chóng, hãy thực hiện lệnh sau:
dotnet aspnet-codegenerator controller -name CategoryController -m CategoryBlog.Models.Category -dc CategoryBlog.Data.CategoryBlogContext -outDir Areas/Admin/Controllers -l _Layout
Lệnh trên sẽ phát sinh cho chúng ta Controller với tên là Category, các tham số đó là:
-name Category tạo controller đặt tên là Category
-m CategoryBlog.Models.Category chỉ ra lớp Model sẽ phát sinh CRUD
-dc CategoryBlog.Data.CategoryBlogContext chỉ ra lớp DbContext
-outDir Areas/Admin/Controllers nơi lưu code Controller (đặt trong Area có tên Blog)
-l _Layout view phát sinh sử dụng layout là _Layout
Sau lệnh trên nó tạo ra Controller Category trong Area Admin, các View lưu ở thư mục Areas/Admin/Views/Category, để các View tự động nạp thư viện TagHelper hãy tạo ra file Areas/Admin/Views/Category/_ViewImports.cshtml với nội dung
Như vậy đã tạo ra Controller và các View, bạn có thể truy cập /admin/category/ để hiện thị trang Index, là danh sách các Category - Từ trang này có thể tạo mới, sửa đổi, xóa Category
Giờ sẽ mở Controller và các file View ra để tùy biến
Chức năng này thực hiện qua 2 Action Create (một cho get và một cho post) và file view là Create.cshtml, sửa lại Action Create trong CategoryController như sau:
Trang view Index.cshtml có nội dung:
Để ý khi tạo Category có phát sinh phần tử HTML Select để chọn ID danh mục cha nếu cần, để làm điều đó đã sử dụng đoạn mã tạo ra SelectList rồi chuyển nó tới View thông qua ViewData, thể hiện qua đoạn mã với diễn giải như sau:
ViewData["ParentCategoryId"] = new SelectList(_context.Categories, "Id", "Slug", category.ParentCategoryId);
Tạo View thì nó dựng HTML để chọn phần tử cha bằng select TagHelper
Tạo phần tử HTML select tương ứng cho ParentID của Model, các mục chọn có nguồn từ Controller truyền tới là ViewBag.ParentCategoryId
Các chức năng Delete, Edit, Detail tùy biến một cách tương tự. Kết quả sẽ có đủ chức năng để quản lý danh mục
Xem chi tiết tại video hướng dẫn :