2012-07-03 30 views
6

Tôi đang cố gắng để hiểu tại sao khi tôi làm điều này trong quan điểm của tôi, tôi nhận được một lỗiRazor @ {...} vs @ gọi renderPartial

@Html.RenderPartial("MyPartial", Model); 

Compilation Lỗi Mô tả: Một lỗi đã xảy ra trong việc biên soạn tài nguyên cần thiết để phục vụ yêu cầu này. Vui lòng xem lại chi tiết lỗi cụ thể sau đây và sửa đổi mã nguồn của bạn một cách thích hợp.

Compiler Error Message: CS1502: Các quá tải tốt nhất phương pháp phù hợp cho 'System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult) có một số đối số không hợp lệ

Nhưng khi tôi làm điều này, phần hiển thị tốt

@{ 
    Html.RenderPartial("MyPartial", Model); 
} 

Có ai biết tại sao ví dụ đầu tiên không thành công?

+6

Kiểm tra câu trả lời này ..: http://stackoverflow.com/questions/5248183/html-partial-vs-html-renderpartial-html-action-vs-html-renderaction – Chandu

+0

Cuộc gọi một phần lớn là dữ liệu đầu ra (chẳng hạn như @ DateTime.Now) hoặc thuần túy C# logic (chẳng hạn như @ model.ID! = 0? yes: no). Mã khối là để xử lý API, chẳng hạn như gọi một phần xem hoặc các hoạt động phức tạp nhất khác. Lưu ý rằng lỗi nói về việc viết Trình trợ giúp cho trang. –

+0

Trùng lặp. Về cơ bản, điều này giống với câu hỏi được liên kết bởi @Chandu. –

Trả lời

7

Đó là cơ bản thực tế là định dạng này ...

@Html.RenderPartial("MyPartial", Model) 

... được sử dụng cho các chức năng mà không gửi lại void, vì renderPartial không trở void, bạn nhận được lỗi đó.

Thay vào đó, ở khối này, nó chỉ thực thi mã (mà trong nội bộ sẽ thực hiện cuộc gọi ghi):

@{  
Html.RenderPartial("MyPartial", Model); 
} 

Bạn alternativelly có thể gọi

@Html.Partial("MyPartial") 

... mà không trả về chuỗi .

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