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?

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.


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


36

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

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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.