{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}
16/11/2010
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
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.