2010-12-10 31 views
7

Tôi đã di chuyển một dự án khá mới từ ViewPages đến Razor hôm nay và tất cả dường như đang diễn ra tốt đẹp. Ngoại trừ tôi đang cố gắng sử dụng Html.Action để hiển thị một điều khiển người dùng và nó sẽ không hiển thị bất cứ điều gì.Asp.Net MVC 3 - @ Html.Action sẽ không hiển thị/trả lại bất kỳ HTML

Vì vậy, tôi có một tập tin được chia sẻ/_Layout.cshtml được tham chiếu trong Trang chủ/Index.cshtml

Index.cshtml đã điều sau đây: bẫy

<article> 

@Html.Action("LatestBlogsMainPanelWidget", "Blogs") 

... 

</article> 

Tôi đã đặt trong BlogsController, vì vậy tôi biết điều đó đang được yêu cầu. Tôi cũng biết rằng một mô hình đang được trả về, rằng các LatestBlogsMainPanelWidget đang được tìm thấy bởi công cụ xem, và thậm chí một số mã cú pháp Razor giả đang được chạy: @ { var s = "hello"; }

nhưng html thuần túy trong tệp này không hiển thị trên trình duyệt. Tôi đã thử partials khác (trước đó làm việc) quá và họ sẽ không xuất hiện hoặc là (xem mã nguồn trên trang xác nhận nó không có).

Tôi cũng đã thử thay thế cho @ {Html.RenderAction (...); } không thành công. HTML ở hai bên của @ Html.Action đang xuất hiện, vì vậy tôi biết Index.cshtml đang hiển thị chính xác.

Thậm chí kỳ lạ hơn tệp _Layout cũng có các lệnh Html.Action và chúng do xuất hiện tốt.

Tôi thực sự không chắc chắn nên kiểm tra những gì khác hoặc cách xác nhận rằng đường dẫn đang nhận HTML. Bất cứ ai có thể giúp đỡ ở tất cả?

Cảm ơn!

+0

Chế độ xem cho hành động đó có ở đúng nơi không? Nevermind, tôi chỉ thấy một dòng tôi đang tìm kiếm. – Buildstarted

Trả lời

1

Não là một điều buồn cười, và mặc dù dành vài giờ vào ngày hôm qua, nó đã khiến con chó của tôi đánh thức tôi dậy vào giữa đêm vì một cơn wee cho tiềm thức của tôi vấp ngã khi câu trả lời.

Nếu điều này có ai khác bối rối, tôi không ngạc nhiên. Tôi đã không đề cập đến vì nó đã không nhận ra rằng tôi đang sử dụng một hệ thống bộ nhớ đệm một phần tương tự như một hệ thống được thiết kế bởi Steve Sanderson. Nó đột nhiên đánh tôi rằng điều này có thể là nguyên nhân, vì theo sự hiểu biết tốt nhất của tôi, các trang Razor đi qua quá trình xử lý đường ống ít hơn các trang WebForm. Bộ nhớ đệm có thể không làm những gì cần làm hoặc vào đúng thời điểm.

Tôi đã xác nhận rằng việc nhận xét bộ lọc OutputCache trên Hành động được đề cập đã khắc phục được sự cố.

Tôi không biết vấn đề này có đúng với bộ nhớ đệm cấp trang vì nó không phải là thứ tôi thấy hữu ích hay không.

+0

Tò mò và tò mò. Tôi vừa cài đặt RC2 của MVC 3 và bộ nhớ đệm một phần cấp đang hoạt động trở lại và tất cả các html.actions sẽ hiển thị lại. Vâng, xin lỗi vì phiền! –

6

Hãy thử điều này:

@ {Html.RenderAction ("LatestBlogsMainPanelWidget", "Blog");}

+0

Bạn có thể thấy trong câu hỏi ban đầu mà tôi đã thử điều đó. Dù sao cũng cảm ơn bạn. –

8

Đặt một Layout = null trên quan điểm từng phần và nó sẽ hoạt động tốt.

+0

chính xác những gì tôi cần. Điều này hữu ích cho hành động của tôi được trang trí với thuộc tính [ChildActionOnly]. – David

+8

thực sự, tôi chỉ học được rằng thay vì thêm vào đó, (trong trường hợp của tôi) tôi chỉ cần chuyển đổi View để trả về PartialView. – David

1

Trong khi tìm kiếm giải pháp cho vấn đề này, tôi đã tìm ra ba vấn đề về đo lường để không hiển thị đúng Html.Action và Html.RenderAction. Vui lòng xác minh bạn đã thực hiện những điều dưới đây đúng cách hay không.

  1. Trong chế độ xem một phần hoặc Xem bạn đã xác định @ {Layout = null;}.
  2. Sử dụng trả lại Xem một phần thay vì Xem.
  3. Trang trí hành động của bạn với các thuộc tính [ChildActionOnly].

Tôi hy vọng bằng cách áp dụng trên tất cả các bước bạn có thể giải quyết vấn đề của mình.

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