não pode converter implicitamente o tipo void em objeto. .NET MVC PartialViewResult


90

Tenho a seguinte ação de controlador:

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

    return PartialView(actions);
}

E o seguinte link de ação (usando t4MVC e a sintaxe do razor)

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

No entanto, isso me dá o erro:

não pode converter implicitamente o tipo void em objeto

Até onde eu posso dizer, a ação do controlador está ok, então o que pode estar me dando esse erro?

Respostas:


126

Como isso:

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

ou se você insiste RenderActionassim:

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

Pessoalmente, prefiro o primeiro, faz menos toques no teclado.


1
Obrigado. Sintaxe funky lá. Presumo que seja a maneira mais fácil de fazer <% html em vez de <% = Html? Qual é a diferença entre Action e Renderaction, afinal. Phil Haack diz que RenderAction é mais eficiente?
MrBliz

2
@ Doozer1979, sim, exatamente, esse é o jeito do Razor.
Darin Dimitrov

Isso também funciona: {Html.RenderAction (MVC.MeetingActions.ListActions (Model.MeetingId));}, portanto, usar @ não é necessário.
FrenkyB


36

Eu tive o mesmo problema. O que funcionou para mim foi encapsular a expressão em colchetes .

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


Isso funcionou para mim, mas não tenho ideia de por que adicionar colchetes de ondulação funcionaria. Você pode elaborar sobre isso?
Brad Thiessen

1
@BradThiessen Funciona porque a ASP.NET MVC é, francamente, uma estrutura de má qualidade, cheia de buracos gritantes e decisões de design ruins. Eu também descobri isso. Quem sabe por quê, mas minha paciência está se esgotando com MVC.
user9993

10
@BradThiessen RenderPartial()é um vazio, usar @você diz a Razor para imprimi-lo, o que não é possível, pois não produz nenhum conteúdo de saída!
S.Serpooshan

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.