2012-08-01 26 views
53

Tôi mới tham gia MVC asp.net vì vậy hãy chịu với tôi. Tôi cần tạo một menu lặp lại qua nhiều chế độ xem. Điều gì sẽ phục vụ tốt hơn mục đích Html.Action HOẶC Html.Partial.MVC Html.Partial hoặc Html.Action

+3

Không có thêm thông tin Html.Partial. Đặt nội dung menu của bạn ở chế độ xem từng phần và gọi nó bằng '@ Html.Partial (" partialViewName ")' – MisterIsaak

+0

Cảm ơn bạn Jissak. – developer747

Trả lời

107

Dưới đây là những gì tôi xem xét hướng dẫn của tôi về việc sử dụng Html.Action hoặc Html.Partial

Html.Partial

  1. Sử dụng Html.Partial khi bạn đang render nội dung tĩnh hoặc,
  2. Nếu bạn sẽ chuyển dữ liệu từ ViewModel đang được gửi đến chế độ xem chính

Html.Action

  1. Sử dụng Html.Action khi bạn thực sự cần để lấy dữ liệu bổ sung từ máy chủ để cư xem phần

Về cơ bản, nếu là tĩnh, sử dụng Html.Partial(). Nếu dữ liệu độc lập động, mô hình, hãy sử dụng Html.Action(). Có thể có nhiều tình huống hơn, nhưng điều này sẽ cho bạn ý tưởng tốt về nơi/cách đi. Html.RenderPartial()Html.RenderAction() có thể hoán đổi cho các chức năng tương tự được đặt tên ở trên.

+0

Cảm ơn HTML.Action đã làm các trick cho tôi. –

+0

Giải thích tốt +1 cho bạn. – Pamma

+0

Cẩn thận rằng nếu ứng dụng có nhiều chu kỳ thông qua bộ điều khiển, nó có thể làm cho nó hơi khó khăn hơn để lý do những gì xảy ra cho một hành động nhất định, như Html.Action() trả về bộ điều khiển - có khả năng khác. Tùy thuộc vào việc triển khai/phụ thuộc của bạn, điều này cũng có thể tốn kém và [bộ lọc] (http://msdn.microsoft.com/en-us/library/gg416513 (vs.98) .aspx) có thể là giải pháp thay thế trong một số các trường hợp. – Cornelius

61

Html.Partial: Hiển thị Xem một phần mà không cần nhấn hành động điều khiển trước. Xem: Partial Views

Html.Action Gọi một hành động khiển, mà có thể trở lại một cái nhìn/phần xem (hoặc có thể không, nó có thể ném một HttpNotFound hoặc trả lại Json, hoặc những thứ khác).

Trình đơn của bạn có yêu cầu chế độ xem hay không?

Nếu đó là menu tĩnh, Html.Partial sẽ phù hợp với nhu cầu của bạn. Đặt nội dung menu tĩnh bên trong chế độ xem từng phần và gọi Html.Partial nơi bạn muốn hiển thị nội dung đó.

Nếu menu đang được tạo ra một mô hình xem, bạn có thể sử dụng một trong hai Html.Partial hoặc Html.Action:

Chaining mô hình điểm sử dụng Html.Partial:

public class MenuViewModel { 
    // menu data goes here 
} 

public class GeneralViewModel : MenuViewModel { 
    // general view info goes here 
} 

public ActionResult Index() { 
    return View(new GeneralViewModel()); 
} 

// View Code 
@model GeneralViewModel 
<div>@Html.Partial("_partialName", model)</div> 

Ở đây chúng ta vượt qua một mô hình xem hoàn chỉnh cho chế độ xem và chế độ xem gọi một phần và đưa mô hình của nó ra chế độ xem một phần.

** Tách các mô hình sử dụng Html.Action: **

public ActionResult Index() { 
    return View(new GeneralViewModel()); 
} 

public ActionResult MenuView() { 
    return PartialView(new MenuViewModel()); 
} 

// View Code 
@model GeneralViewModel 
<div>@Html.Action("MenuView")</div> 

đây quan điểm gọi là hành động điều khiển MenuView mà tạo ra một mô hình quan điểm mới và vượt qua nó để một phần.

0

Trường hợp 1: Sử dụng phương pháp @Html.Partial() nếu bạn có Chế độ xem một phần khác nhau với các Mô hình khác nhau.

Trường hợp 2: Sử dụng phương pháp @Html.Action() nếu bạn có một chế độ xem một phần với một Mô hình, nhưng dữ liệu khác nhau.

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