Hướng dẫn tạo Scaffolded Razor Pages trên ASP.NET Core

0

Tiếp tục chuỗi bài hướng dẫn tạo Web App trên cơ bản trên ASP.NET Core trên oktot. Hôm nay oktot sẽ Hướng dẫn tạo Scaffolded Razor Pages trên ASP.NET Core.

Bạn có thể xem lại bài Hướng dẫn tạo Model với ngôn ngữ Razor trong ASP.NET Core trên Visual Studio để có thể hiểu rõ hơn.

Trong bài này chúng ta sẽ sử dụng source code của bài trước bạn có để tải link bên dưới.

Link download Source mẫu:

Còn bây giờ chúng ta bắt đầu chiến đấu nào!

Hướng dẫn tạo View Create, Edit, Delete và Detail

Tạo Pages/Movies/Index.cshtml.cs

Razor page bắt đầu từ PageModel. Theo quy ước PageModel được gọi bởi <PageName>Model. Lập trình viên sử dụng dependency injection  để thêm RazorPagesMovieContext vào page.

tất cả các “scaffolded” phải tuân thủ cấu trúc cửa DI pattern. Khi yêu cầu khởi tạo một page được thực hiện, phương thức OnGetAsync sẽ trả về danh sách của model “movies” đến View razor page. OnGetAsync hoặc OnGet gọi trên razor page để chuẩn bị thực hiện quá trình đó.

Trong trường hợp này OnGetAsync nhận danh sách dữ liệu của movies model và hiển thị chúng.

When OnGet returns void or OnGetAsync returnsTask, no return method is used. When the return type is IActionResult or Task<IActionResult>, a return statement must be provided. For example, the Pages/Movies/Create.cshtml.cs OnPostAsync method:

khi OnGet trả về giá trình void hoặc OnGetAsyns thì phương thức “no return” đã được sử dụng. Khi chung trả về giá trị kiểu IActionResult hoặcTask<IActionResult>.

Ví dụ: the Pages/Movies/Create.cshtml.cs với phương thức OnPostAsync:

Tiếp tục tạo  Pages/Movies/Index.cshtml Razor Page:

Sửa code trong file Pages/Movies/Index.cshtml

Sửa code Pages/Shared/_Layout.cshtm

Tạo Pages/Movies/Create.cshtml.cs tương ứng với model Movies

Tạo phương thức OnPostAsync:

Tạo  Pages/Movies/Create.cshtml

Giao diện code trên visual studio:

Vậy là chúng ta đã có ví dụ cho việc tạo Scaffolded Razor Pages trên ASP.NET Core, bài tiếp theo oktot sẽ hướng dẫn các bạn kết nối với Database.

LEAVE A REPLY