no se puede convertir implícitamente el tipo void en objeto. .NET MVC PartialViewResult


91

Tengo la siguiente acción del controlador:

[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 razor)

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

Sin embargo, esto me da el error:

no se puede convertir implícitamente el tipo void en objeto

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

Respuestas:


126

Me gusta esto:

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

o si insistes RenderActionasí:

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

Personalmente prefiero el primero, hace menos pulsaciones de teclas.


1
Gracias. Sintaxis funky ahí. Supongo que esa es la forma más sencilla de hacer <% html en lugar de <% = Html. ¿Cuál es la diferencia entre Action y Renderaction de todos modos? Phil Haack dice que RenderAction es más eficiente?
MrBliz

2
@ Doozer1979, sí, exactamente, así es como Razor.
Darin Dimitrov

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


36

Tuve el mismo problema. Lo que funcionó para mí es encapsular la expresión entre corchetes .

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


Esto funcionó para mí, sin embargo, no tengo idea de por qué funcionaría agregar corchetes. Puedes profundizar sobre eso?
Brad Thiessen

1
@BradThiessen Funciona porque ASP.NET MVC es francamente un marco de mala calidad lleno de agujeros evidentes y malas decisiones de diseño. Yo también me encontré con esto. Quién sabe por qué, pero mi paciencia se está agotando con MVC.
user9993

10
@BradThiessen RenderPartial()es un vacío, al usarlo @dices la Razor para imprimirlo, lo cual no es posible ya que no produce ningún contenido de salida.
S.Serpooshan

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.