Vinicius Quaiato

{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}

Html.RenderAction erro no Razor


Fala galera, um amigo me chamou aqui no gtalk para tentar entender por que não estava conseguindo usar o seguinte código:

@Html.RenderAction("MinhaActionQueRetornaPartial")

Este código resulta no seguinte erro:

Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

Compilation Error - Html.RenderAction

Isso acontece por que se observarmos o método RenderAction é void, e no Razor quando utilizamos o @ estamos pedindo para que o conteúdo seja escrito no response. Mas não é possível escrever um conteúdo void. A saída para isso é utilizar:

@Html.Action("MinhaActionQueRetornaPartial")

ou ainda (evite isso, é feio!)

@{Html.RenderAction("MinhaActionQueRetornaPartial");}

Isso tudo acaba gerando uma grande confusão. Até faz sentido o RenderAction ser void e internamente renderizar o conteúdo, mas isso fica feio, principalmente agora trabalhando com Razor. Seria melhor se, assim como o método Action ele também retornasse algo parecido com o MvcHtmlString, e então utilizaríamos o @ para renderizar. Bom, fica aí a dica.

Att,

Vinicius Quaiato.

Voltar

Fork me on GitHub