Cú pháp Html.RenderPartial () với Razor


95

Điều này hoạt động, vì nó trả về kết quả của một phần hiển thị trong một chuỗi:

@Html.Partial("Path/to/my/partial/view")

Nhưng tôi thích sử dụng hơn RenderPartialvà có vẻ như tôi cần viết:

@{Html.RenderPartial("Path/to/my/partial/view");}

thay vì:

@Html.RenderPartial("Path/to/my/partial/view");

Để nó hoạt động. Thông báo lỗi:

 Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

Nếu có cách nào tốt hơn thay vì mở khối mã @{...}chỉ cho một cuộc gọi phương thức?


Lỗi mà bạn gặp phải khi cố gắng sử dụng là gì@Html.RenderPartial()
Neil Knight

Tôi đã thêm tin nhắn vào bài đăng của mình. Tôi hiểu tại sao nó hiển thị lỗi @ Html.RenderPartial () được phân tích cú pháp gần bằng <% ?: @ Html.RenderPartial ()?> Là sai chứ không phải <? Html.RenderPartial (); ?>, nhưng tôi đang tìm cách giải quyết.
artvolk

Liên quan: Html.Partial so với Html.RenderPartial & Html.Action so với Html.RenderAction . BTW tại sao bạn thích sử dụng RenderPartial?
Paolo Moretti

Câu trả lời:


142
  • RenderPartial()là một phương thức void ghi vào luồng phản hồi. Một phương thức void, trong C #, cần một ;và do đó phải được bao bởi { }.

  • Partial()là một phương thức trả về một MvcHtmlString . Trong Razor, Bạn có thể gọi một thuộc tính hoặc một phương thức trả về một chuỗi như vậy chỉ với một @tiền tố để phân biệt nó với HTML thuần túy mà bạn có trên trang.


1
Tại sao bạn thích sử dụng Html.RenderPartial thay vì Html.Partial? Nếu bạn, vì một lý do nào đó, muốn / cần phải sử dụng Html.RenderPartial, thì không có giải pháp thay thế - đó là cú pháp.
Ofer Zelig

5
Tôi sử dụng nó vì nó sẽ hiệu quả hơn (vì nó không trả về chuỗi lớn).
artvolk

45

Html.RenderPartial () là một phương thức void - bạn có thể kiểm tra xem một phương thức có phải là một phương thức void hay không bằng cách đặt chuột lên lệnh gọi đến RenderPartial trong mã của bạn và bạn sẽ thấy văn bản (phần mở rộng) void HtmlHelper.RenderPartial ...

Phương thức trống yêu cầu dấu chấm phẩy ở cuối mã gọi.

Trong công cụ xem Biểu mẫu web, bạn sẽ mã hóa lệnh gọi Html.RenderPartial () của mình trong vết ong đốt <%%>

như vậy

<% Html.RenderPartial("Path/to/my/partial/view"); %>

khi bạn đang sử dụng công cụ xem Razor thì tương đương với

@{Html.RenderPartial("Path/to/my/partial/view");}

5
"ong đốt" - đó là lần đầu tiên (đối với tôi?)
JoeBrockhaus

9
@Html.Partial("NameOfPartialView")

Tôi muốn sử dụng Html.RenderPartial(), đó là lý do tại sao tôi hỏi câu hỏi này. Chi tiết: "Về mặt hiệu suất, người ta đã khẳng định rằng hiển thị trực tiếp đến luồng đầu ra sẽ tốt hơn (đó là lý do tại sao họ bắt đầu sử dụng void RenderPartial)." từ đây stackoverflow.com/a/2729851/118810
artvolk

0

Nếu bạn được cung cấp định dạng này, nó sẽ giống như một liên kết đến một trang khác hoặc một liên kết khác. Dạng xem phần này chủ yếu được sử dụng để kết xuất các tệp html từ nơi này sang nơi khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.