void türü dolaylı olarak nesneye dönüştürülemez. .NET MVC PartialViewResult


92

Aşağıdaki denetleyici eylemine sahibim:

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

    return PartialView(actions);
}

Ve aşağıdaki eylem bağlantısı (t4MVC ve jilet sözdizimini kullanarak)

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

Ancak bu bana şu hatayı veriyor:

void türü dolaylı olarak nesneye dönüştürülemez

Denetleyicinin işleminin tamam olduğunu söyleyebildiğim kadarıyla, bana bu hatayı ne veriyor olabilir?

Yanıtlar:


127

Bunun gibi:

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

ya da böyle ısrar ediyorsanız RenderAction:

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

Şahsen ben ilkini tercih ederim, daha az tuş vuruşu yapar.


1
Teşekkür ederim. Funky sözdizimi var. Bunun <% = Html? Yerine <% html yapmanın ustaca yolu olduğunu varsayıyorum? Yine de Eylem ve Oluşturma arasındaki fark nedir? Phil Haack, RenderAction'ın daha verimli olduğunu söylüyor.
MrBliz

2
@ Doozer1979, evet, kesinlikle, Razor yolu bu.
Darin Dimitrov

Bu da işe yarar: {Html.RenderAction (MVC.MeetingActions.ListActions (Model.MeetingId));}, dolayısıyla @ kullanmak gerekli değildir.
FrenkyB


36

Ben de aynı sorunu yaşadım. Benim için işe yarayan şey, ifadeyi küme parantezleri içine almaktır .

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


Bu benim için çalıştı, ancak kıvrık parantez eklemenin neden işe yarayacağına dair hiçbir fikrim yok. Bunu detaylandırır mısın?
Brad Thiessen

1
@BradThiessen Bu işe yarıyor çünkü ASP.NET MVC açıkçası göze batan delikler ve kötü tasarım kararlarıyla dolu kalitesiz bir çerçeve. Ben de bununla karşılaştım. Nedenini kim bilir, ama MVC ile sabrım zayıflıyor.
user9993

10
@BradThiessen RenderPartial()bir boşluktur, @bunu yazdırmak için Razor kullanmak bir boşluktur, bu da herhangi bir çıktı içeriği üretmediği için mümkün değildir!
S.Serpooshan

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.