nie można niejawnie przekonwertować typu void na obiekt. .NET MVC PartialViewResult

91

Mam następującą akcję kontrolera:

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

    return PartialView(actions);
}

I następujący link do akcji (używając t4MVC i składni maszynki do golenia)

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

Jednak to daje mi błąd:

nie może niejawnie przekonwertować typu void na obiekt

O ile wiem, działanie kontrolera jest w porządku, więc co może powodować ten błąd?

MrBliz
źródło

Odpowiedzi:

126

Lubię to:

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

lub jeśli nalegasz w RenderActionten sposób:

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

Osobiście wolę pierwszy, robi mniej naciśnięć klawiszy.

Darin Dimitrov
źródło
1
Dziękuję Ci. Funky tam składnia. Zakładam, że to brzytwa sposób na zrobienie <% html zamiast <% = Html? Jaka jest różnica między Action a Renderaction. Phil Haack mówi, że RenderAction jest bardziej wydajne?
MrBliz,
2
@ Doozer1979, tak, dokładnie, to jest sposób Razor.
Darin Dimitrov
Działa to również: {Html.RenderAction (MVC.MeetingActions.ListActions (Model.MeetingId));}, więc używanie @ nie jest konieczne.
FrenkyB
39

Html.Partial też powinno działać :)

@Html.Partial("View", Model);
VladL
źródło
36

Miałem ten sam problem. W moim przypadku zadziałało umieszczenie wyrażenia w nawiasach klamrowych .

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

Ewald
źródło
To zadziałało w moim przypadku, ale nie mam pojęcia, dlaczego dodanie zamków do loków miałoby działać. Czy możesz to rozwinąć?
Brad Thiessen,
1
@BradThiessen To działa, ponieważ ASP.NET MVC jest, szczerze mówiąc, tandetną platformą pełną rażących dziur i kiepskich decyzji projektowych. Właśnie na to natknąłem się. Kto wie dlaczego, ale moja cierpliwość słabnie w przypadku MVC.
user9993
10
@BradThiessen RenderPartial()jest pustką, używając @, jak mówisz, Razor do wydrukowania, co nie jest możliwe, ponieważ nie generuje żadnej treści wyjściowej!
S.Serpooshan