không thể chuyển đổi ngầm kiểu void thành đối tượng. .NET MVC PartialViewResult


90

Tôi có hành động điều khiển sau:

[ChildActionOnly]
public virtual PartialViewResult ListActions(int id)
{
    var actions = meetingActionRepository.GetAllMeetingActions(id);

    return PartialView(actions);
}

Và liên kết hành động sau (sử dụng t4MVC và cú pháp dao cạo)

<p>
   @Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId))
</p>

Tuy nhiên, điều này mang lại cho tôi lỗi:

không thể chuyển đổi hoàn toàn kiểu void thành đối tượng

Theo như tôi có thể cho biết hành động của bộ điều khiển là ổn, vậy điều gì có thể gây ra cho tôi lỗi này?

Câu trả lời:


126

Như thế này:

<p>
    @Html.Action(MVC.MeetingActions.ListActions(Model.MeetingId))
</p>

hoặc nếu bạn nhấn mạnh RenderActionnhư thế này:

<p>
    @{Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId));}
</p>

Cá nhân tôi thích cái đầu tiên hơn, thực hiện ít lần nhấn phím hơn.


1
Cảm ơn bạn. Cú pháp thú vị ở đó. Tôi cho rằng đó là cách dao cạo để thực hiện <% html thay vì <% = Html? Sự khác biệt giữa Action và Renderaction là gì. Phil Haack nói RenderAction có hiệu quả hơn không?
MrBliz

2
@ Doozer1979, vâng, chính xác, đó là cách của Razor.
Darin Dimitrov

Điều này cũng hoạt động: {Html.RenderAction (MVC.MeetingActions.ListActions (Model.MeetingId));}, vì vậy việc sử dụng @ là không cần thiết.
FrenkyB


35

Tôi gặp vấn đề tương tự. Điều làm việc cho tôi là đóng gói biểu thức nó trong dấu ngoặc nhọn .

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


Điều này làm việc cho tôi, tuy nhiên tôi không biết tại sao việc thêm dấu ngoặc nhọn sẽ hoạt động. bạn có thể giải thích về điều đó không?
Brad Thiessen

1
@BradThiessen Nó hoạt động vì ASP.NET MVC thực sự là một khung công tác kém chất lượng với đầy những lỗ hổng rõ ràng và các quyết định thiết kế kém. Tôi cũng vừa xem qua điều này. Ai biết tại sao, nhưng sự kiên nhẫn của tôi ngày càng mỏng dần với MVC.
user9993

10
@BradThiessen RenderPartial()là một khoảng trống, @bạn sử dụng Razor để in nó, điều này là không thể vì nó không tạo ra bất kỳ nội dung đầu ra nào!
S.Serpooshan

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.