Code Behind Là Gì

     

Tìm phát âm và tiến hành PageModel, mã C# độc lập với Razor, hình thành mã sản phẩm cho Razor, khám phá các handler vào PageModel truyền dữ liệu từ mã sản phẩm đến Razor


Sử dụng code-behind trang Razor Page

Kỹ thuật code-behind áp dụng cho vận dụng web giao diện Razor Page đó là việc phân tách bóc giữa mã HTML viết vào Razor Page và mã nguồn C#. Để thực hành tìm hiểu, hãy hối hả tạo ra một dự án ASP.NET chip core Razor Page như sau:

Tạo thư mục dự án công trình razor04.codebehide, vào folder này và tiến hành lệnh

dotnet new webapp
Do không đến phần vận dụng cơ sở dữ liệu vào trang, nên tạo nên một quy mô dữ liệu đơn giản như sau. Tạo ra một lớp biểu diễn thành phầm và một list sản phẩm

using System;using System.Collections.Generic;using System.Linq;namespace razor04.codebehide.Models // Lớp product public class sản phẩm public int ID set; get; public String Name set; get; public String Desciption set; get; public Decimal Price set; get; = 0; // Lớp tĩnh đưa định DbContext public static class ProductContext public static list products; static ProductContext() // Khởi tạo nên một danh sách các thành phầm mẫu products = new List() new sản phẩm ID=1, Name = "Iphone", Price = 900, Desciption = "Điện thoại Iphone abc, xyz ..." , new hàng hóa ID = 2, Name = "Samsung", Price = 800, Desciption = "Điện thoại Samsung, samsung điện thoại thông minh ..." , new product ID = 3, Name = "Nokia", Price = 700, Desciption = "Điện thoại Nokia, smartphone Android" ; // Tìm thành phầm theo ID public static product FindProductByID(int ID) var p. = from sản phẩm in products where product.ID == ID select product; return p.FirstOrDefault(); // Lấy list sản phẩm: ProductContext.products// tra cứu một thành phầm theo ID: ProductContext.FindProductByID(id) giờ đồng hồ ta sẽ tạo một Razor Page có có tên Pages/ViewProduct.cshtml nhằm hiện thị về một sản phẩm theo ID, sử dụng mô hình dữ liệu trên, ngôi trường hợp thứ nhất ta sẽ viết code sử dụng dữ liệu ngay vào .cshtml tiếp đến ở trường thích hợp sau đang áp dụng quy mô code-behind

Trường phù hợp viết code ngay trong Razor Page

Pages/ViewProduct.cshtml


page "/sanpham/id:int?"
functions product product; void OnGet() int? ID = null; if (Request.RouteValues<"id"> != null) ID = Int32.Parse(Request.RouteValues<"id">.ToString()); hàng hóa = ProductContext.FindProductByID(ID.Value);
this.OnGet();
if (product != null)


product.Name

tế bào tả:
product.Desciption

Giá:
product.Price

thành phầm khác

else

Các sản phẩm


foreach (var p. In ProductContext.products)

Một số diễn giải đến đoạn code trên:


page "/sanpham/id:int?"Để quan niệm route truy hỏi nhập cho tới Razor Page này, các URL phù hợp đó là /sanpham/,/sanpham/1, /sanpham/2 ...

Bạn đang xem: Code behind là gì

Nếu truy cập /sanpham/1 thì id của route = 1, sẽ hiện thị thông tin sản phẩm có ID = 1,id này gọi được ở phần code:

Request.RouteValues<"id">Khối thông tư
functions nhằm khai báo phương thức, nằm trong tính bỏ thêm vào lớp sinh ra vì Razor.Ở đây thêm trực thuộc tính hàng hóa và phương thức OnGet(có tác dụng lấy sản phẩm theo id route nhờ cất hộ đến).Sau khi khai báo, phương thức này thi hành ở chỗ code


this.OnGet();Phần sau là mã HTML hiện thị thông tin sản phẩm, hoặc danh sách sản phẩm (khi truy cập /sanpham/)

Kết trái chạy:

*
*

Trường hợp vận dụng code-behide Razor Page

Đầu tiên tạo nên một lớp thừa kế từ PageModel, lớp này khai báo vào thư mục cùng file Razor Pagevà viết tên giống Razor Page bao gồm thêm phần .cs, ví dụ như trên các bạn sẽ tạo ra file ViewProduct.cshtml.cs

ViewProduct.cshtml.cs chứa model cho trang ViewProduct.cshtml

Nội dung vào ViewProduct.cshtml.cs khai báo như sau:

using System;using Microsoft.AspNetCore.Mvc.RazorPages;using razor04.codebehide.Models;using static System.Console;namespace razor04.codebehide.Pages // Lớp là mã sản phẩm của Razor, cần phải thừa kế PageModel public class ViewProductModel : PageModel // Khai báo nằm trong tính public hàng hóa product; // Handler chạy khi truy cập trang bởi phương thức get public void OnGet () int? ID = null; if (Request.RouteValues<"id"> != null) ID = Int32.Parse (Request.RouteValues<"id">.ToString ()); hàng hóa = ProductContext.FindProductByID (ID.Value); Để ứng dụng tự động tạo ra đối tượng người sử dụng lớp này khi truy vấn trang Razor, thì trong Razor thêm vào dòng chỉ thị thiết lập Model của trang có kiểu ViewProductModel:


model ViewProductModelLúc này truy cập trang một đối tượng lớp ViewProductModel tạo nên và truy vấn được ngơi nghỉ thuộc tính model của Razor.Nội dụng của Razor Page (ViewProduct.cshtml) giờ hoàn toàn có thể sửa là:


page "/sanpham/id:int?"
using razor04.codebehide.Models;
model ViewProductModel
if (Model.product != null)


Model.product.Name

tế bào tả:
Model.product.Desciption

Giá:
Model.product.Price

thành phầm khác

else

Các sản phẩm


foreach (var phường in ProductContext.products)

Kết trái chạy vẫn như trên. Mặc dù bạn vẫn phân tách bóc các phần code bao gồm xử lý tại một file model và trang Razor chủyếu là hiện thị tin tức của Model. Qua lấy một ví dụ này lưu ý một số vấn nhằm về áp dụng PageModel như sau:

Xử lý yêu ước gửi đến

Khi cấu hình thiết lập một lớp (kế quá từ PageModel) là mã sản phẩm của Razor Page thì lúc truy vấn đến Page, mã sản phẩm này từ bỏ độngtạo ra với Inject vào Razor. Ví như lớp model đó gồm tham số khởi tạo nên là đối tượng người dùng dịch vụ, thì thương mại dịch vụ này bắt buộc đăngký trong ServiceCollection của hệ thống.

Trong lớp model có các phương thức tất cả tiền tố là On như OnGet, OnPost, OnGetAsync ... Thì chúng gọi là những handler. Cách tiến hành này tự động chạy theo phương thức http truy vấn (get, post, put ...).

Các nằm trong tính vào PageModel đều có hiệu lực trong Razor, truy cập qua trực thuộc tính Model.

Các phương thức Handler trong PageModel

Như trên, những handler tất cả tiền tố On mặc định nó sử lý những yêu mong theo những phương thức của http như OnGet, OnPut ... Nếu bất đồng hóa thì OnGetAsync, OnPostAsync ...

Các cách tiến hành này trả về kiểu bất kỳ nhưng hay là void, Task hoặc ActionResult

Các cách thức này cũng hoàn toàn có thể có những tham số, thông số này tự động truyền vào bởi giá trị query trong URL hay cực hiếm trường khớp ứng của Route hoặc do phần trường đoản cú cung bên trên của size Post tới. Như lấy ví dụ trên, nếu khai báo

void OnGet(int id) /...Thì khi truy cập /sanpham/3 thì id sẽ bởi 3.

Xem thêm: Ctrl X Là Gì Trong Word, Windows Xp 7 8 10, Nhiệm Vụ Như Nào??

Các thủ tục Named Handler trong PageModel

Bạn rất có thể khai báo nhiều Handler cùng phục vụ truy vấn đến theo một phương thức, lấy một ví dụ post. Mặc dù Handler rõ ràng sẽ thi hành theo đắm đuối số handler gửi đến trong URL. Ví dụ, khai báo cha phương thức sau những nhận yêu cầu post.

public String Thongbao;// Chạy truy vấn post tới, url = /sanpham/2?handler=xoapublic void OnPostXoa(int i) Thongbao = "Gọi OnPostXoa";// Chạy truy vấn post tới, url = /sanpham/2?handler=soanthaopublic void OnPostSoanthao(int id) Thongbao = "Gọi OnPostSoanthao";// Chạy truy cập post tới, url = /sanpham/2?handler=xemchitietpublic void OnPostXemchitiet(int id) Thongbao = "Gọi OnPostXemchitiet";Thêm mã vào Razor Page chất vấn xem


Model.Thongbao

Hoặc

Xóa biên soạn thảo Xem cụ thể

*

Truyền tài liệu từ PageModel mang lại Razor bởi ViewData

trong PageModel với Razor cùng bao gồm thuộc tính ViewData bao gồm kiểu ViewDataDictionary, nó dùng làm chuyển tài liệu từ PageModel sang trọng Razor, ví dụ giả dụ trong PageModel có gán:

public void OnGet (int id) ViewData<"mydata"> = "My Data"; //...Thì trong Razor đọc giá tốt trị này bằng
ViewData<"mydata">

Hander trả về IActionResult

Khi khai handler trả về hình trạng IActionnResult thì có nhiều phương thức giúp tạo đối tượng người tiêu dùng trả về, tùy ngữ cảnh mà lại sử dụng:

Ví dụ, truy cập thì chuyển hướng làn phân cách sang trang khác:

public IActionResult OnGet (int id) int? ID = null; if (Request.RouteValues<"id"> != null) ID = Int32.Parse (Request.RouteValues<"id">.ToString ()); sản phẩm = ProductContext.FindProductByID (ID.Value); if (product == null) // Khônng thấy chuyển nhắm tới trang /product/ return RedirectToPage("ViewProduct", new id = ""); // Trả về tác dụng trang Razor return Page();Ngoài ra còn một vài phương thực chế tác IActionResult như:

Method Mã HTTP biểu lộ
Challenge 401 Trả về khi bảo đảm không thành công
Content 200 Thiết lập văn bản trả về trực tiếp
File 200 Trả về câu chữ file.
Forbid 403 Cấm truy nã cập.
LocalRedirect LocalRedirectPermanent LocalRedirectPreserveMethod LocalRedirectPreserveMethodPermanent 302 301 307 308 Chuyển hướng
NotFound 404 Không thấy.

Xem thêm: Dòng Điện Chạy Từ Cực Nào Sang Cực Nào Sang Cực Nào, Cơ Bản: Nguồn Một Chiều

Page 200 Trả về ngôn từ trang Razor.
Partial 200 Trả về nội dung xuất phát từ một Partial Page
RedirectToPagePermanent RedirectToPage RedirectToPagePreserveMethod RedirectToPagePreserveMethodPermanent 301 302 307 308 Chuyển hướng

Mã nguồn tham khảo: ASP_NET_CORE/razor04.codebehide


Code-behind trang Razor PageCode vào trang Razor PageÁp dụng Code-behindCác cách thức Handler PageModelCác cách tiến hành Named Handler PageModelTruyền tài liệu PageModel đến Razor với ViewDataHandler trả về IActionResult