Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RSS iMasters

[Resolvido] ASP .NET MVC 3: apresentando Partial Views

Recommended Posts

Neste artigo, vamos falar um pouco sobre a visualização ou View, que é a camada de apresentação do padrão MVC, e alguns de seus recursos e propriedades. Na arquitetura MVC, a view tem como objetivo gerar o conteúdo através do modelo para apresentação ao usuário. Até aí tudo certo... Quando falamos em camada de apresentação, já supõe-se que devemos ter conhecimentos de HTML, CSS e JavaScript para podermos desenvolvê-la.

Neste artigo, veremos o que é e como usar Partial Views. Os exemplos que serão mostrados foram feitos usando a ferramenta gratuita Visual Web Developer 2010 Express Edition.

Apresentando Partial Views

Se você já conhece o ASP .NET Web Forms, com certeza já usou ou pelo menos já ouviu falar dos User Controls. Para refrescar a memória, segue abaixo um pequeno resumo sobre o assunto:

Os controles de usuário (user controls) são baseados na classe System.Web.UI.UserControl possuindo a seguinte hierarquia de classe:

  • Object
    • Control
      • TemplateControl
      • UserControl

Você pode criar user controls reutilizando controles que já existem e isso torna a tarefa muito mais fácil do que criar Custom Controls. Um user control ASP.NET é parecido com uma página Web completa (*.aspx), contendo a interface do usuário e o código. Você cria um user control da mesma forma que você cria uma página web em ASP.NET.

Um user control difere de uma página ASP.NET nos seguintes itens:

  • A extensão do arquivo de um usre control é .ascx;
  • Ao invés de usar a diretiva @page, um user control contém uma diretiva @Control que define a configuração e outras propriedades;
  • Um user control não pode ser executado diretamente. Você precisa incluí-lo em uma página ASP.NET como um controle comum.

Bem, mas você deve estar pensando: "O que isso tem a ver com Partial Views?". Não foi à toa que eu iniciei o artigo falando sobre Users Control...

Ao utilizar a tecnologia ASP .NET MVC, a medida que você se familiariza com seus recursos, você vai querer criar componentes reutilizáveis, evitando assim código duplicado. No Web Forms, você podia fazer isso usando um controle de usuário ou Users Control. Ao usar o modelo ASP .NET MVC, você pode obter o mesmo resultado usando as Partial Views (é uma opção).

Então, sem entrar em detalhes mais técnicos, podemos dizer que Users Control e Partial Views te levam ao mesmo resultado final: reaproveitamento e encapsulamento de código.

Essa atitude está alinhada com o princípio DRY (Don´t Repeat YourSelf) que, numa tradução livre, pode ser entendido como "Não repita o que você já fez". Poderíamos também elencar o princípio KISS - Keept it Simple Stupid.

É bom lembrar que, embora as Partial Views possam se comportar de forma semelhante aos Users Controls, existem diferenças importantes. Os Users Controls usados nos Web Forms utilizam ViewState, Postbacks e Eventos, enquanto que as Partials Views não usam nenhuma dessas técnicas para gerenciar estado.

Usando Partial Views

Como exemplo introdutório, vamos criar uma partial View bem simples. Será uma pequena aplicação para exibir a classificação dos cinco primeiros colocados no campeonato paulista de futebol.

Abra o Visual Web Developer e crie um novo projeto do tipo ASP .NET MVC 3 Web Application com o nome UsandoPartialViews.

46222.gif

Na janela seguinte, vamos selecionar a opção "Internet Application" e o View Engine Razor. O Engine Razor é uma opção ao engine ASPX.

46224.gif

A estrutura da aplicação será conforme a figura abaixo:

46225.gif

Seguindo a filosofia MVC, vamos definir o Model, o Controller e a nossa Partial View.

 

Definindo o Model

O nosso Model será definido através da classe Times.cs, que irá conter as propriedades: id, nome e pontos. Clique com o botão direito sobre a pasta Models e a seguir selecione o item Class e informe o nome Times.cs e clique em Add.

46227.gif

Agora vamos definir o código da classe Times.cs conforme abaixo:

46229.jpg

No código acima, definimos dois métodos parciais que representam o nosso domínio: a classe Times, onde temos a definição das propriedades id, nome e pontos, e o método listaTimes, que obtém a relação de times para montar a tabela de classificação.

Esse é o nosso Model, bem simples, como eu já havia dito. Geralmente, aqui você define o seu modelo de dados usando o Entity Framework.

Definindo o Controller

Poderíamos criar um novo controller para a nossa aplicação, mas vamos usar o controller HomeController criado por padrão. O código do controller HomeController é dado abaixo:

46231.gif

Vamos alterar o código acima para retornar a nossa view usando os dados do nosso modelo, conforme mostrado na figura abaixo:

using System.Collections.Generic;

using System.Web.Mvc;

using UsandoPartialViews.Models;

 

namespace UsandoPartialViews.Controllers

{

public class HomeController : Controller

{

public ActionResult Index()

{

ViewBag.Message = "Exemplo básico de utilização de Partial Views";

return View(new Times() { listaTimes = GetTimes() });

}

 

public ActionResult About()

{

return View();

}

 

private List<Times> GetTimes()

{

List<Times> model = new List<Times>();

 

model.Add(new Times()

{

Id = 1, Nome = "Corinthians",Pontos = "26"

});

 

model.Add(new Times()

{

Id = 2,Nome = "Guarani",Pontos = "22"

});

model.Add(new Times()

{

Id = 3,Nome = "Palmeiras",Pontos = "21"

});

 

model.Add(new Times()

{

Id = 4,Nome = "Santos",Pontos = "21"

});

 

model.Add(new Times()

{

Id = 5,Nome = "Mogi Mirim",Pontos = "19"

});

return model;

}

}

}

Estamos criando alguns dados para que sejam exibidos pela view via método getTimes(). Vamos agora definir a nossa view, ou melhor, a nossa Partial View.

Definindo a View

Clique com o botão direito do mouse no interior da Action Index e selecione a opção Add View. A seguir, na janela Add View, vamos definir as seguintes opções:

  • View Name = CampeonatoPaulista;
  • View Engine = Razor;
  • Marque a opção: Create as a partial view.

46232.gif

Ao clicar no botão Add, será criada a Partial View tipada na pasta Views com o nome CampeonatoPaulista.cshtml. A seguir, defina o código abaixo na Partial View de forma a exibir uma tabela com os dados do nosso modelo:

46234.gif

O código define que nossa view deverá receber um objeto do tipo Times.

Agora basta definir o código do arquivo Index.cshtml que irá renderizar a nossa Partial View, conforme mostrado a seguir:

@model UsandoPartialViews.Models.Times

 

<h2>@ViewBag.Message</h2>

 

Para aprender mais sobre ASP .NET visite - <a href="http://www.macoratti.net" >Macoratti.net</a>

 

<p>

@Html.Partial("CampeonatoPaulista", Model.listaTimes)

</p>

Observe a código: @Html.Partial("CampeonatoPaulista", Model.listaTimes). O método Html.Partial renderiza a Partial View especificada como uma string HTML-codificada. Executando o projeto, iremos obter:

46236.gif

Dessa forma, vimos como usar uma Partial View em um cenário bem simples. Em outro artigo, irei mostrar como podemos usar uma Partial View fortemente tipada em um cenário mais complexo.

Pegue o projeto completo aqui: UsandoPartialViews.zip

 

http://imasters.com.br/artigo/24124/dotnet/asp-net-mvc-3-apresentando-partial-views

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.