Back To Home

Name: Ngày 16: View Rendering vs Controller Rendering

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.


🧩 1. View Rendering là gì?

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.

✔ Khi nào nên dùng View Rendering?

  • 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

Ví dụ một View Rendering đơn giản:

 
@model RenderingModel <h2>@Model.Item["Title"]</h2> <p>@Model.Item["Description"]</p>

Không cần controller, tất cả data lấy từ Model.Item.


🧩 2. Controller Rendering là gì?

Controller Rendering = Controller Action → Model → View

Bạn tự định nghĩa:

  • Controller

  • Action

  • View

  • Model (optional)

✔ Khi nào nên dùng Controller Rendering?

  • 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)

Ví dụ Controller Rendering:

Controller:

 
public ActionResult Banner() { var model = new BannerModel { Title = "Welcome", Image = "/images/banner.jpg" }; return View("/Views/Feature/Banner/Banner.cshtml", model); }

View:

 
@model Feature.Banner.Models.BannerModel <h1>@Model.Title</h1> <img src="@Model.Image" />

🧩 3. So sánh View Rendering vs Controller Rendering

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

🧩 4. Khi nào dùng loại nào?

Dùng View Rendering khi:

  • Render header, footer, text, banner đơn giản

  • Component ít logic

  • Lấy data trực tiếp từ datasource

Dùng Controller Rendering khi:

  • 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


🧪 5. Ví dụ thực tế chuẩn Helix

🟦 View Rendering (Feature/Navigation/Header)

  • View: Header.cshtml

  • Template: /Data/Header

  • Editor chỉnh sửa title/image trong datasource → ok ngay

🟥 Controller Rendering (Feature/Search/SearchResults)

  • Gọi Search API

  • Build paginated model

  • Trả về view search results

→ View Rendering KHÔNG làm được.


🛠 6. Best Practices

✔ Ưu tiên View Rendering nếu component đơn giản

→ Giúp giảm phức tạp & tăng tốc độ render

✔ Dùng Controller Rendering khi cần ViewModel

→ Đảm bảo code sạch và dễ maintain

✔ Không viết logic trong View Rendering

→ Vi phạm MVC và khó maintain

✔ Dùng absolute path cho view trong Controller Rendering

 
return View("/Views/Feature/.../view.cshtml", model);

✔ Gắn đúng Rendering trong /sitecore/layout/renderings/...


📌 Kết luận

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

Donald Trump

Để trở thành người chiến thắng, bạn cần biết khi nào là đủ. Đôi khi trong cuộc sống, bạn phải từ bỏ cuộc chiến và chuyển sang mục tiêu mới mang lại hiệu quả hơn

Related Post