Qual é a maneira apropriada de renderizar um modelo filho?
E qual é a diferença? Ambos parecem funcionar para mim.
E por que @Html.RenderPartial()
não funciona mais?
fonte
Qual é a maneira apropriada de renderizar um modelo filho?
E qual é a diferença? Ambos parecem funcionar para mim.
E por que @Html.RenderPartial()
não funciona mais?
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
Sobre
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.
fonte
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).
fonte
Também podemos passar o modelo usando vistas parciais. @ Html.Partial ("MyView", "MyModel");
fonte
O acima não funciona na ASP.NET MVC. Ele só funciona em páginas da web.
Você precisará usar o acima na ASP.NET MVC.
fonte