Respostas:
Html.Partial("MyView")
Renderiza a visualização "MyView" para um MvcHtmlString
. Ele segue as regras padrão para visualização de visualização (ou seja, verifique o diretório atual e, em seguida, verifique o Shared
diretório).
Html.RenderPartial("MyView")
Faz o mesmo que Html.Partial()
, exceto que grava sua saída diretamente no fluxo de resposta. Isso é mais eficiente, porque o conteúdo da visualização não é armazenado em buffer na memória. No entanto, como o método não retorna nenhuma saída, @Html.RenderPartial("MyView")
não funcionará. Você tem que quebrar a chamada em um bloco de código em vez disso: @{Html.RenderPartial("MyView");}
.
RenderPage("MyView.cshtml")
Processa a visualização especificada (identificada pelo caminho e nome do arquivo em vez do nome da visualização) diretamente para o fluxo de resposta, como Html.RenderPartial()
. Você pode fornecer qualquer modelo que desejar para a visualização, incluindo-o como um segundo parâmetro
RenderPage("MyView.cshtml", MyModel)
@Html.Partial("MyView")
vs.@{Html.RenderPartial("MyView");}
RenderPage
? Desejo aninhar uma página diferente especificando um parâmetro de consulta específico, que por sua vez filtraria os dados nessa página e, além disso, removeria seu próprio layout.
eu prefiro
@RenderPage("_LayoutHeader.cshtml")
Sobre
@{ Html.RenderPartial("_LayoutHeader"); }
Só porque a sintaxe é mais fácil e mais legível. Fora isso, não parece haver nenhuma diferença em termos de funcionalidade.
EDIT: Uma vantagem do RenderPartial é que você não precisa especificar o caminho inteiro ou a extensão do arquivo, ele pesquisará os lugares comuns automaticamente.
RenderPage
causa da sintaxe.
O método RenderPartial não retorna marcação HTML como a maioria dos outros métodos auxiliares. Em vez disso, ele grava conteúdo diretamente no fluxo de resposta, por isso devemos chamá-lo como uma linha completa de C #, usando um ponto-e-vírgula.
Isso é um pouco mais eficiente do que armazenar em buffer o HTML renderizado da visualização parcial, já que ele será gravado no fluxo de resposta de qualquer maneira. Se você preferir uma sintaxe mais consistente, pode usar o método Html.Partial , que faz exatamente o mesmo que o método RenderPartial , mas retorna um fragmento HTML e pode ser usado como @Html.Partial ("Product", p).
@RenderPages()
O acima não funciona na ASP.NET MVC. Ele só funciona em páginas da web.
@Html.Partial("_Footer")
Você precisará usar o acima na ASP.NET MVC.