2011-12-13 47 views
10

Tôi có trang web có thanh điều hướng được xác định trong bố cục. Thanh điều hướng được sử dụng trong một số giao diện của trang web và có một số nội dung động được tạo từ một vài truy vấn trong Cơ sở dữ liệu.ASP.NET MVC: Sử dụng Html.Partial hoặc Html.Action?

Tôi tự hỏi thực tiễn tốt nhất để hiển thị menu này (được định nghĩa trong một phần xem).

Theo như tôi biết tôi có thể làm điều đó trong hai cách, với một số ưu điểm và nhược điểm đối với mỗi người:

Sử dụng Html.Action: + Đó là hoàn toàn độc lập với quan điểm cho rằng đang sử dụng cách bố trí - Nó thêm một yêu cầu bổ sung để hiển thị một phần của trang - Tôi đang thêm một phương thức Hành động trả về một khung nhìn Một phần không được gọi từ Ajax.

Sử dụng Html.Partial: + A yêu cầu đơn giản để làm cho toàn bộ cái nhìn - Mỗi mô hình xem phải có các thông tin cần thiết cho việc thanh điều hướng

tôi sẽ thực sự đánh giá cao những hiểu biết của bạn về vấn đề này kể từ khi tôi có một vài tình huống như thế này trên trang web của tôi và tôi không chắc cái nào là tốt nhất.

Cảm ơn!

Trả lời

14

Tôi sẽ sử dụng Html.Action đặc biệt nếu menu này chứa một số dữ liệu động được tìm nạp từ cơ sở dữ liệu. Ưu điểm là bạn hoàn toàn có thể phân tách việc tìm nạp này trong một hành động hoàn toàn riêng biệt từ hành động chính. Ngoài ra, đầu ra của các hành động con có thể được lưu trữ bằng cách trang trí chúng với thuộc tính [OutputCache]. Bằng cách này, bạn có thể giảm tải trên cơ sở dữ liệu của bạn nếu dữ liệu không thay đổi khá thường xuyên.

Nó cho biết thêm một yêu cầu thêm để vẽ lại một phần của trang

Bạn phải có hiểu lầm gì đó về nó. Không có yêu cầu bổ sung nào từ phía khách hàng. Tất cả mọi thứ được phục vụ trong một yêu cầu duy nhất. Có một điều khiển bổ sung instantiation và hành động thực hiện nhưng không phải là một yêu cầu HTTP mới từ khách hàng. Nó giống như 2 hành động điều khiển được thực thi trong cùng một yêu cầu và kết quả của chúng được tổng hợp thành một trang HTML đơn được gửi đến máy khách.

+0

Mặc dù nó thực thi chỉ một yêu cầu HTTP, nhưng cũng đúng là chi phí của việc hoàn thành một hành động vượt quá một phần. –

+4

@NathanTaylor, đó là sự thật. Có một chi phí vượt quá mức hiển thị một phần. Nhưng chi phí này là soooooooooooooooo nhiều không đáng kể so với tất cả những lợi ích mà bạn nhận được từ việc sử dụng hành động con mà chúng ta chỉ nên chấp nhận nó. Tôi có nghĩa là bạn có được tách mối quan tâm, bạn sẽ có được mã sạch, bạn nhận được bộ nhớ đệm mà sẽ exeed trong hiệu suất này của rendering một phần, do đó, yeah, sử dụng Html.Action. –

+0

Tôi chắc chắn không đồng ý, tôi chỉ làm nổi bật sự thật. Html.Action FTW. –

Các vấn đề liên quan