non può convertire implicitamente il tipo void in object. .NET MVC PartialViewResult


90

Ho la seguente azione del controller:

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

    return PartialView(actions);
}

E il seguente collegamento all'azione (utilizzando t4MVC e la sintassi del rasoio)

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

Tuttavia questo mi dà l'errore:

non può convertire implicitamente il tipo void in object

Per quanto posso dire che l'azione del controller è ok, quindi cosa potrebbe darmi questo errore?

Risposte:


126

Come questo:

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

o se insisti in RenderActionquesto modo:

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

Personalmente preferisco il primo, fa meno battute.


1
Grazie. Sintassi funky lì. Presumo che sia il modo più semplice di fare <% html invece di <% = Html? Qual è la differenza tra Action e Renderaction comunque. Phil Haack dice che RenderAction è più efficiente?
MrBliz

2
@ Doozer1979, sì, esattamente, questo è il modo Razor.
Darin Dimitrov

Funziona anche: {Html.RenderAction (MVC.MeetingActions.ListActions (Model.MeetingId));}, quindi non è necessario utilizzare @.
FrenkyB


36

Ho avuto lo stesso problema. Quello che ha funzionato per me è incapsulare l'espressione tra parentesi graffe .

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


Questo ha funzionato per me, tuttavia non ho idea del motivo per cui l'aggiunta di parentesi graffe funzionerebbe. Puoi approfondire questo?
Brad Thiessen

1
@BradThiessen Funziona perché ASP.NET MVC è francamente un framework scadente pieno di buchi evidenti e decisioni di progettazione sbagliate. Mi sono appena imbattuto anche in questo. Chissà perché, ma la mia pazienza si sta esaurendo con MVC.
user9993

10
@BradThiessen RenderPartial()è un vuoto, usando @dici il rasoio per stamparlo, cosa che non è possibile in quanto non produce alcun contenuto di output!
S.Serpooshan

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.