Sitecore MVC hỗ trợ 2 loại rendering phổ biến:
View Rendering
Controller Rendering
Cả hai đều dùng để hiển thị component lên trang, nhưng chúng có mục đích sử dụng và workflow khác nhau.
View Rendering = Razor View + Datasource (không có Controller)
Bạn chỉ cần một file .cshtml và Sitecore sẽ render thẳng view đó lên page.
Component đơn giản
Không cần xử lý logic trong C#
Chỉ lấy dữ liệu từ Datasource
Tốc độ load rất nhanh
HTML tĩnh hoặc gần như tĩnh
Không cần controller, tất cả data lấy từ Model.Item.
Controller Rendering = Controller Action → Model → View
Bạn tự định nghĩa:
Controller
Action
View
Model (optional)
Component có logic phức tạp
Cần xử lý nhiều bước trước khi render
Cần lấy dữ liệu từ nhiều source > datasource
Cần call API / service / database
Cần xây dựng model chuẩn (ViewModel)
Controller:
View:
| Tiêu chí | View Rendering | Controller Rendering |
|---|---|---|
| Logic xử lý | Không | Có(controller) |
| Dễ tạo | ✔ Rất dễ | ❗ Phức tạp hơn |
| Hiệu năng | ✔ Nhanh nhất | Chậm hơn chút |
| Datasource | ✔ Dễ dùng | Cần code xử lý |
| Tính linh hoạt | Hạn chế | ✔ Rất linh hoạt |
| Use case | Component đơn giản | Component phức tạp |
| Helix | Dùng ở Feature/Project | Dùng ở Feature/Project |
Render header, footer, text, banner đơn giản
Component ít logic
Lấy data trực tiếp từ datasource
Component load dữ liệu từ API
Component cần xử lý business logic
Component phức tạp: search, filter, listing
Component có nhiều ViewModel
Component multi-datasource
View: Header.cshtml
Template: /Data/Header
Editor chỉnh sửa title/image trong datasource → ok ngay
Gọi Search API
Build paginated model
Trả về view search results
→ View Rendering KHÔNG làm được.
→ Giúp giảm phức tạp & tăng tốc độ render
→ Đảm bảo code sạch và dễ maintain
→ Vi phạm MVC và khó maintain
/sitecore/layout/renderings/...| Loại | Dùng khi |
|---|---|
| View Rendering | Hiển thị nội dung đơn giản, không cần backend logic |
| Controller Rendering | Component phức tạp, cần xử lý logic và ViewModel |