2011-02-07 49 views
66

tengo la siguiente acción del controlador:no puede convertir implícitamente el tipo void a objeto. .NET MVC PartialViewResult

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

    return PartialView(actions); 
} 

Y el siguiente enlace de acción (usando t4MVC y la sintaxis de afeitar)

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

Sin embargo, esto me da el error:

cannot implicitly convert type void to object

Por lo que puedo decir que la acción del controlador está bien, entonces ¿qué podría estar causando este error?

Respuesta

104

De esta manera:

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

o si insiste en RenderAction así:

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

personalmente prefiero la primera, hace menos pulsaciones.

+1

Gracias. Funky sintaxis allí. Supongo que esa es la forma más sencilla de hacer <% html en lugar de <% = Html? Cuál es la diferencia entre Acción y Renderación de todos modos. Phil Haack dice que RenderAction es más eficiente? – MrBliz

+2

@ Doozer1979, sí, exactamente, esa es la forma Razor. –

+0

Esto también funciona: {Html.RenderAction (MVC.MeetingActions.ListActions (Model.MeetingId));}, por lo que usar @ no es necesario. – FrenkyB

9

que tenían el mismo problema. Lo que funcionó para mí es encapsular la expresión en llaves.

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

+1

uno redundante) antes; –

+0

Quito el soporte. ¡Gracias! – Ewald

Cuestiones relacionadas