No ASP.NET MVC, qual é a diferença entre:
Html.Partial
eHtml.RenderPartial
Html.Action
eHtml.RenderAction
.net
asp.net-mvc
partial-views
renderpartial
renderaction
Ghooti Farangi
fonte
fonte
Respostas:
Html.Partial
retorna uma String.Html.RenderPartial
ligaWrite
internamente e retornavoid
.O uso básico é:
No trecho acima, as duas chamadas produzirão o mesmo resultado.
Embora se possa armazenar a saída de
Html.Partial
uma variável ou retorná-la de um método, não se pode fazer isso comHtml.RenderPartial
.O resultado será gravado no
Response
fluxo durante a execução / avaliação.Isso também se aplica a
Html.Action
eHtml.RenderAction
.fonte
Html.Partial()
foi criado para ter uma sintaxe mais fluente com o Razor. Como disse o @Vlad,Html.RenderPartial()
é mais eficiente.Pense em @ Html.Partial como código HTML copiado na página pai. Pense em @ Html.RenderPartial como um controle de usuário .ascx incorporado na página pai. Um controle de usuário .ascx tem muito mais sobrecarga.
'@ Html.Partial' retorna uma string codificada em html que é construída em linha com o pai. Ele acessa o modelo dos pais.
'@ Html.RenderPartial' retorna o equivalente a um controle de usuário .ascx. Ele obtém sua própria cópia do ViewDataDictionary da página e as alterações feitas no ViewData do RenderPartial não afetam o ViewData do pai.
Usando a reflexão, encontramos:
fonte
Partial
renderizado em um buffer não significa que ele é renderizado de forma assíncrona - muito pelo contrário - não consigo ver como você pode reivindicar queRenderPartial
"consome mais recursos".Aqui está o que eu encontrei:
Use RenderAction quando você não possui um modelo para enviar para a visualização e possui muito html para recuperar que não precisa ser armazenado em uma variável.
Use Ação quando você não tiver um modelo para enviar para a visualização e tenha um pouco de texto para trazer de volta, que precisa ser armazenado em uma variável.
Use RenderPartial quando você tiver um modelo para enviar para a visualização e haverá muitos html que não precisam ser armazenados em uma variável.
Use Parcial quando você tiver um modelo para enviar para a visualização e haverá um pouco de texto que precisa ser armazenado em uma variável.
RenderAction e RenderPartial são mais rápidos.
fonte
A diferença é a primeira: um retorna um,
MvcHtmlString
mas o segundo (Render..
) sai direto para a resposta.fonte
Segundo a mim,
@Html.RenderPartial()
tem uma execução mais rápida do que@Html.Partial()
devido ao Html.RenderPartial dá uma resposta rápida ao Output.Porque quando eu uso
@Html.Partial()
, meu site leva mais tempo para carregar em comparação com@Html.RenderPartial()
fonte
@Html.Partial
e@Html.RenderPartial
são usados quando seu modelo de vista parcial é uma correspondência do modelo pai, não precisamos criar nenhum método de ação para chamar isso.@Html.Action
e@Html.RenderAction
são usados quando seu modelo de vista parcial é independente do modelo pai, basicamente é usado quando você deseja exibir qualquer conteúdo do tipo de widget na página. Você deve criar um método de ação que retorne um resultado de exibição parcial enquanto chama o método da exibição.fonte
Mais sobre a questão:
"NerdDinner" do profissional ASP.NET MVC 1.0
fonte
O tipo de retorno de
Html.RenderAction
évoid
que significa que ele renderiza diretamente as respostas no modo de exibição em que o tipo de retornoHtml.Action
é.MvcHtmlString
Você pode capturar sua exibição de renderização no controlador e modificá-la usando o seguinte métodoIsso retornará a seqüência de caracteres HTML da exibição.
Isso também é aplicável
Html.Partial
eHtml.RenderPartial
fonte
Parcial ou RenderPartial: Não há necessidade de criar método de ação. use quando os dados a serem exibidos na vista parcial já estiverem presentes no modelo da página atual.
Ação ou RenderAction: requer método de ação filho. use quando os dados a serem exibidos na exibição tiverem modelo independente.
fonte
Diferenças:
O tipo de retorno de
RenderPartial
évoid
, onde, comoPartial
retornosMvcHtmlString
Sintaxe para chamar
Partial()
eRenderPartial()
métodos nas visualizações RazorSintaxe para Chamada
Partial()
eRenderPartial()
Métodos em Visualizações de Formulário da WebA seguir, estão as 2 perguntas comuns da entrevista relacionadas a
Partial()
eRenderPartial()
quando você utilizariaPartial()
maisRenderPartial()
e vice-versa?A principal diferença é que
RenderPartial()
retorna nulo e a saída será gravada diretamente no fluxo de saída, onde, conforme oPartial()
método retornaMvcHtmlString
, que pode ser atribuído a uma variável e manipulado, se necessário. Portanto, quando houver necessidade de atribuir a saída a uma variável para manipulá-la, use Partial (), caso contrário, use RenderPartial ().Qual é o melhor para o desempenho?
Do ponto de vista do desempenho, é melhor renderizar diretamente no fluxo de saída.
RenderPartial()
faz exatamente a mesma coisa e é melhor para o desempenho terminarPartial()
.fonte
Html.Partial
: retornaMvcHtmlString
e lentoHtml.RenderPartial
: renderiza / grava diretamente no fluxo de saída e retornavoid
e é muito rápido em comparação comHtml.Partial
fonte
Para "parcial", eu sempre o uso da seguinte maneira:
Se houver algo que você precise incluir em uma página que você precisa acessar pelo controlador (como faria com uma chamada Ajax), use "Html.RenderPartial".
Se você tiver uma inclusão 'estática' que não esteja vinculada a um controlador em si e apenas na pasta 'compartilhada', por exemplo, use "HTML.partial"
fonte
@Html.Partial
retorna a exibição na string codificada em HTML e usa o mesmoTextWriter
objeto de exibição .@Html.RenderPartial
esse método retornavoid
.@Html.RenderPartial
é mais rápido que@Html.Partial
A sintaxe para
PartialView
:fonte