Html.RenderPartial está me dando um erro de sobrecarga estranho?

103

Fiz uma página parcial de teste chamada _Test.cshtml e a coloquei no mesmo diretório que minha visualização que a chamará, aqui está:

<div>hi</div>

E na visualização de chamada cshtml, simplesmente coloco:

@Html.RenderPartial("_Test")

O que me dá o erro:

CS1502: A melhor correspondência de método sobrecarregado para 'System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult)' tem alguns argumentos inválidos

Também tentei o caminho completo com o mesmo resultado.

Estou muito confuso sobre por que isso está agindo dessa forma, presumo que esteja faltando algo simples?

Naspinski
fonte

Respostas:

190

Você está recebendo este erro porque os Html.RenderXXXajudantes retornam void - eles não têm nada a retornar porque estão escrevendo coisas diretamente * para a resposta. Você deve usá-los assim:

@{ Html.RenderPartial("_Test"); }

Há também Html.Partial helper, que funcionará com sua sintaxe, mas não recomendo usá-lo, a menos que seja necessário, por causa do desempenho (ele primeiro compõe uma determinada visualização parcial em string e, em seguida, a visualização pai a coloca em resposta * )

* isso não é inteiramente verdade, eles estão realmente sendo renderizados em ViewContext.Writer e uma vez que a página inteira é renderizada e composta, tudo vai para a resposta

Lukáš Novotný
fonte