tidak dapat secara implisit mengubah tipe void menjadi objek. .NET MVC PartialViewResult

91

Saya memiliki tindakan pengontrol berikut:

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

    return PartialView(actions);
}

Dan tautan tindakan berikut (menggunakan t4MVC dan sintaks pisau cukur)

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

Namun ini memberi saya kesalahan:

tidak dapat secara implisit mengubah tipe void menjadi objek

Sejauh yang saya tahu tindakan pengontrol baik-baik saja, jadi apa yang bisa memberi saya kesalahan ini?

MrBliz
sumber

Jawaban:

126

Seperti ini:

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

atau jika Anda bersikeras RenderActionseperti ini:

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

Secara pribadi saya lebih suka yang pertama, membuat lebih sedikit penekanan tombol.

Darin Dimitrov
sumber
1
Terima kasih. Sintaks yang funky di sana. Saya berasumsi bahwa itulah cara pisau melakukan <% html daripada <% = Html? Apa perbedaan antara Action dan Renderaction. Phil Haack mengatakan RenderAction lebih efisien?
MrBliz
2
@ Doozer1979, ya, tepatnya, itulah cara Razor.
Darin Dimitrov
Ini juga berfungsi: {Html.RenderAction (MVC.MeetingActions.ListActions (Model.MeetingId));}, jadi menggunakan @ tidak perlu.
FrenkyB
39

Html.Parsial juga harus bekerja :)

@Html.Partial("View", Model);
VladL
sumber
36

Saya memiliki masalah yang sama. Apa yang berhasil bagi saya adalah merangkum ekspresi itu dalam tanda kurung kurawal .

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

Ewald
sumber
Ini berhasil untuk saya, namun saya tidak tahu mengapa menambahkan tanda kurung kurawal akan berhasil. Dapatkah Anda menguraikan itu?
Brad Thiessen
1
@BradThiessen Ini berfungsi karena ASP.NET MVC sejujurnya adalah kerangka kerja jelek yang penuh dengan lubang mencolok dan keputusan desain yang buruk. Saya baru saja menemukan ini juga. Entah kenapa, tapi kesabaran saya semakin menipis dengan MVC.
pengguna9993
10
@BradThiessen RenderPartial()adalah kekosongan, menggunakan @Anda mengatakan Razor untuk mencetaknya yang tidak mungkin karena tidak menghasilkan konten keluaran!
S. Serpooshan