Diferenças entre RenderPartial vs RenderAction vs Partial vs Action no MVC

0

Existem diferentes maneiras para renderizar uma partial view no MVC. Muitos desenvolvedores ficaram confusos se devem usar RenderPartial vs RenderAction vs Action Helpers para renderizar uma partial view. Neste artigo, gostaria de expor a diferença entre Html.RenderPartial, Html.RenderAction, Html.Partial & Html.Action.

Html.RenderPartial

  1. Este resultado de método será escrito diretamente para o fluxo de resposta response stream HTTP utilizado. Significa que o mesmo objeto utilizado como TextWriter  será também utilizado para a página e/ou template.
  2. Este métodoretorna” void.
  3. Simples de usar e não há necessidade de criar uma ação.
  4. O Método RenderPartial é útil quando os dados de exibição da partial view já estão view model. Por Exemplo : Em um blog, para mostrar os comentários de um artigo, gostaríamos de usar o método RenderPartial desde que o artigo com  os comentários já estão preenchidos previamente na view model.
    @{Html.RenderPartial("_Comments");}
    
  5. Este método é mais rápido do que um “método parcial” por exemplo, desde que o seu resultado seja escrito diretamente para o response stream, deixando o fluxo muito mais rápido.

Html.RenderAction

  1. Este resultado de método será escrito diretamente para o fluxo de resposta response stream HTTP utilizado. Significa que o mesmo objeto utilizado como TextWriter  será também utilizado para a página e/ou template.
  2. Para este método, é preciso criar uma child action para renderizarmos a partial view.
  3. O Método RenderAction é útil quando os dados que são utilizados na partial view, são idenpendentes da view model correspondente.Exemplo: Em um blog para mostrar lista de categorias em cada página, gostaríamos de usar o método RenderAction já que a lista de categoria seria populada por uma model diferente. 

    @{Html.RenderAction("Category","Home");} 
    
  4. Este método é a melhor escolha quando se quer cachear a view uma partial view.
  5. Este método é mais rápido do que uma simples chamada de Action por exemplo, ja que a resposta também é utilizado diretamente via response stream HTTP, deixando a resposta mais rápida.

Html.Partial

  1. Processa a partial view como HTML-encoded string.
  2. Este resultado método pode ser armazenado em uma variável, ja que ele retorna um tipo string.
  3. Simples de usar e não há necessidade de criar qualquer action.
  4. Como método RenderPartial, método Partial também é útil quando os dados da partial view são correspondentes à model. Por exemplo: Em um blog para mostrar os comentários de um artigo, você pode usar o método Partial, desde que o objeto do artigo com comentários já estejam preenchidos na model. 

    @Html.Partial("_Comments")
    

Html.Action

  1. Renderiza a partial view como um HtmlString.
  2. Para este método, é preciso criar uma child action para renderizar a partial view.
  3. Este resultado método pode ser armazenado em uma variável, uma vez que retorna valor do tipo string.
  4. O método Action é útil quando os dados exibidos são independentes da view model corresponte. Por Exemplo: Em um blog para mostrar lista de categorias em cada página, gostaríamos de poderíamos utilizar o método Action já que o mesmo é populado em uma model diferente.
  5. Action method is useful when the displaying data in the partial view is independent from corresponding view model.For example : In a blog to show category list on each and every page, we would like to use Action method since the list of category is populated by the different model.
        @{Html.Action("Category","Home");} 
    
  6. Este método também é uma ótima escolha se você quiser cachear a partial view.

Bom, por hoje é só.

Espero que tenham gostado, e gostaria também que você compartilhasse o seu conhecimento conosco também. Existe algo que eu esqueci de falar aqui? Provavelmente sim! 🙂

Abraços.

Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com