Trong các View khái niệm Partial Page (hoặc Partial View) được sử dụng khi bạn chia nhỏ các trang Razor Page, hay các View ra thành từng phần nhỏ.
Lợi ích của việc chia nhỏ này đó là:
Partial Page chính là các file .cshtml - chỉ có có điều loại file này không được routing tới (không được gọi trức tiếp), nên tên của nó sẽ bắt đầu bằng ký tự _
Để chèn một Partial Page vào View, Razor Page bạn có thể sử dụng Partial Tag Helper
<partial name="_NamePartial" />
Hoặc bạn có thể sử dụng phương thức Partial
trong thuộc tính HTML
@Html.Partial("_NamePartial") // Hoặc dùng PartialAsync, RenderPartial, RenderPartialAsync
Truyền ViewData sang Partial
Mặc định Partial Page nhận một bản copy thuộc tính ViewData (kiểu ViewDataDictionary ) của Page nạp nó. Bạn Bạn có thể tạo ra một đối tượng ViewDataDictionary và thiết lập ViewData cho Partial thay cho mặc định
@{ var products = new string[] {"Sản phẩm 1", "Sản phẩm 2" }; } @await Html.PartialAsync("_NamePartial", new ViewDataDictionary(ViewData) { {"product", products}})
Lúc này trong Partial có thể đọc được dữ liệu:
@{ String[] products = ViewData["products"] as String[]; } @foreach (var item in products) { <p>@item</p> }
Truyền Model sang Partial
@{ var products = new string[] {"Sản phẩm 1", "Sản phẩm 2" }; } @await Html.PartialAsync("_NamePartial", products)
Lúc này trong Partial có thể đọc được dữ liệu Model:
@model String[] @foreach (var item in Model) { <p>@item</p> }
Razor tìm các Partial Page ở các thư mục theo thứ tự:
Trong MVC thì theo thứ tự các thư mục:
Nguồn tin: Xuanthulab