ASP .NET - Apresentando a ASP .NET MVC 3
Não vou dizer : "finalmente chegou", pois faz pouco tempo que havia sido lançada a versão ASP .NET MVC 2 e, na verdade, não faz nem um ano e já temos uma nova versão para a ASP .NET MVC : a ASP .NET MVC 3.
Aviso aos marinheiros de primeira viagem: "Se você esta chegando agora e não sabe o que quer dizer ASP .NET MVC sugiro que leia os meus artigos nas referências sobre o assunto e consulte também o site principal: http://www.asp.net/mvc (visite também o blog do ScottGu : http://weblogs.asp.net/scottgu/default.aspx.)"
Bem, mas o que há de novo no ASP .NET MVC 3 ?
A primeira coisa a dizer é que para poder ter os novos recursos aqui citados você terá que instalar o pacote da nova versão em: http://www.asp.net/mvc/mvc3 (Recomenda-se atualizar via Microsoft Web Plataform Installer -> Install ASP.NET MVC 3 using the Web Platform Installer (recommended)
Antes de iniciar a falar das principais novidades quero mencionar que segundo os responsáveis pela nova versão ela é totalmente compatível com a versão ASP .NET MVC 2 e que portanto se você esta desenvolvendo um projeto usando a versão 2 poderá migrar para a versão 3 sem grandes traumas. (promessa é dívida...)
Dentre as novidades da nova versão quero destacar as seguintes:
Após você fazer as atualizações citadas poderá usar o ASP .NET MVC 3 tanto no Visual Studio 2010 como a versão Express - Visual Web Developer 2010 Express Edition - e é esta versão que eu vou usar neste artigo, assim qualquer um poderá acompanhar; se você não tem a ferramenta basta fazer o download no site: http://www.microsoft.com/express/Web/
Abra então o seu Visual Web Developer 2010 Express (VWD 2010) e selecione o menu File -> New Project;
Nota: O exemplo usado neste artigo baseia-se no artigo do blog do ScottGu : http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx
Você deverá ver a janela New Project apresentando a opção com template ASP .NET MVC 3 Web Application, tanto na linguagem VB .NET com em C#. (Lembre-se que no VWD 2010 podemos escolher uma dessas duas linguagens.)
Eu escolhi o projeto Web na Linguagem VB .NET usando o Visual Web Developer 2010 Express.
Observe que temos além do template ASP .NET MVC 2 o template ASP .NET MVC 3 o que indica que temos os dois a nossa disposição. (Se você não visualizar o template ASP .NET MVC 3 é porque ainda não atualizou o seu Visual Studio.)
Vamos dar o nome Mvc3_Demo ao projeto e clicar no botão OK;
A janela New Projet para o projeto deverá ser apresentada conforme a figura abaixo:
Visual Web Developer 2010 Express Edition |
Podemos selecionar dois templates para o projeto:
Existe uma opção para criar um projeto de teste unitário que se usarmos o Visual Web Developer 2010 Express não vai estar ativa, mas se você usar o Visual Studio 2010 poderá selecionar esta opção conforme mostra a figura a seguir:
Visual Studio 2010 |
Aqui começam as novidades pois temos a indicação para a criação de um projeto de testes unitários já no início da criação da aplicação. ( Lembrando apenas que um dos fatores positivos ao se utilizar o ASP .NET MVC é a facilidade em testarmos as aplicações devido a separação entre os papéis da aplicação.)
Continuando temos a opção em selecionar a View Engine que usaremos em nossa aplicação e por padrão temos instalados a View Engine ASPX e o Razor. (Veremos em outro artigo que podemos usar outras View Engines)
Mas o que vem a ser esse tal de Razor ???
Razor é nome da nova View Engine das aplicações ASP .NET MVC e WebMatrix. (Veja as referências...)
Nota: Existem outros engines que podemos usar como: Spark, NHaml, NDjango
E o Razor foi criado para simplificar a codificação nas aplicações ASP .NET , pois usando a sintaxe do Razor o código fica mais fácil de digitar, mais simples e legível. (Finalmente poderemos abolir o uso das tags <%= %> no código)
O Razor é bastante 'esperto' e possui um parse que conhece as marcações HTML , a sintaxe da linguagem VB .NET (VBHTML) e C# (CSHTML).
Fique atento que o Razor não é uma nova linguagem; você vai usar os seus conhecimentos d VB .NET ou C# para usar o Razor e não o contrário.
Assim podemos enumeras o seguintes benefícios em usar o Razor:
• A sintaxe Razor é limpa e concisa, o que requer um número mínimo de
digitação;
• O Razor é fácil de aprender, em parte porque ele é baseado em
linguagens existentes, como C # e Visual Basic;
• O Visual Studio inclui o IntelliSense e colorização de código para a
sintaxe Razor;
• As views Razor podem ser testadas de forma unitária sem exigir que você
execute o aplicativo ou abra um servidor web;
Além disso o Razor possui ainda os seguintes recursos:
• sintaxe do modelo de @ para especificar o tipo que está sendo passado para
a exibição;
• @ * * @ sintaxe de comentário;
• A capacidade de especificar os padrões (como layoutpage) uma vez para
um site inteiro;
• O método Html.Raw para exibição de texto sem codificação HTML;
• Apoio ao compartilhamento de código entre múltiplas visualizações (arquivos
_viewstart.cshtml ou _viewstart.vbhtml);
E para mostrar que o danado chegou cheio de recursos o Razor também possui os seguintes Helpers:
• Chart - Processa um gráfico, oferecendo os mesmos recursos como o
controle de gráfico no ASP.NET 4;
• WebGrid - Processa uma grade de dados, com funcionalidade de paginação
e ordenação;
• Crypto - Utiliza algoritmos de hash para criar senhas devidamente
criptografadas;
• WebImage - Processa uma imagem;
• WebMail - Envia uma mensagem de e-mail;
Obs: Para saber mais detalhes sobre a sintaxe Razor
veja o meu artigo :
ASP .NET -
Apresentando a
Sintaxe Razor para C# e VB .NET
Após selecionar a view Engine Razor e clicar no botão OK temos o
projeto criado conforme a estrutura mostrada na figura abaixo:
Notou a extensão .vbhtml na pasta Views ?
Essa é a extensão do Razor para a linguagem VB .NET se usarmos a linguagem C# a extensão será: .cshtml.
Como esse é nosso primeiro contato com o ASP .NET MVC 3 vamos criar algo simples apenas para que você vislumbre os recursos do Razor em operação.
Vamos criar um projeto web para listar as categorias dos produtos e permitir aos visitantes clicar em uma categoria para ver a respectiva relação de produtos.
Vamos definir um modelo de entidades usando o Entity Framework 4 a partir do banco de dados Northwind.mdf, usando as tabelas Categories e Products.
Para criar o modelo de entidades que mapeia para as tabelas do banco de dados faça o seguinte:
1- Selecione a pasta Model e no menu Project clique em
Add New Item;
2- Em Installed Templates selecione Data e escolha ADO .NET Entity Framework
e
informe o nome Northwind.edmx e clique em Add;
3- Escolha a opção : Generate from database e clique em Next;
4- Selecione a conexão com o banco de dados Northwind.mdf e clique em Next;
5- Selecione as tabelas Categories e Products (como mostra a figura
abaixo) e clique em Finish;
Ao final será criado o modelo de entidades conforme a figura abaixo:
Se você espiar o arquivo web.config irá perceber que a string de conexão foi criada com o nome NorthwindEntities:
<? xml version="1.0" encoding="utf-8"?><!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=152368 --> <configuration> <connectionStrings> <add name="NorthwindEntities" connectionString="metadata=res://*/Models.Northwind.csdl|res://*/Models.Northwind.ssdl|res://*/Models.Northwind.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" /> </connectionStrings> |
O próximo passo é definir o controller e para isso clique com o botão direito do mouse na pasta Controller e selecione Add->Controller;
Na janela Add Controller informe o nome StoreController conforme a figura abaixo e clique no botão Add;
Será criado o arquivo StoreController.vb onde teremos que definir dois métodos :
O código completo desta classe esta exibido a seguir:
Imports System.Linq Imports System.Web
Imports System.Web.Mvc
Inherits System.Web.Mvc.Controller ' Function Index() As ActionResult Dim categories = northwind.Categories.ToList() Return View(categories)
End Function ' Public Function Browse(ByVal category As String) As ActionResult Dim products = From p In northwind.Products Where p.Category.CategoryName = category Select p Return View(products.ToList())
End Function End Class End Namespace |
O método Index() utiliza uma consulta LINQ para obter a relação de categorias e o método Browse recebe uma categoria como parâmetro e seleciona os produtos para esta categoria.
Temos que criar as Views para estes métodos. Então mãos a obra...
Com o cursor no método Index() clique com o botão direito do mouse e selecione a opção Add View do menu suspenso:
Na janela Add View, temos o nome da View que será criada (Index) e o nome do layout que será usado para a View. (Note que a View Engine usada é Razor(VBHTML);
Repita o processo para criar a View para o método Browse() do Controller.
Na janela Add View veremos as mesmas opções selecionadas conforme a figura abaixo.
Ao final do processo já teremos as Views Index.vbhtml e Browse.vbhtml criadas na pasta Store conforme exibe a janela Solution Explorer;
Para realizar a exibição dos dados vamos usar o Razor na sintaxe VB .NET.
Iniciando com a View Index.vbhtml onde temos o seguinte código:
|
Observe a sintaxe Razor para o VB .NET onde os blocos de código são colocados entre @Code/End Code.
O caractere @ inicia expressões inline, blocos de instrução única, e blocos com múltiplas instruções.
No código estamos exibindo os nomes das categorias do modelo de entidades usando um laço @for/next;
A seguir temos o código da View Browse.vbhtml exibe os produtos de uma categoria selecionada.
Novamente usamos um laço @for/next para exibir os produtos:
Observe que declaramos a variável categoria no interior do bloco de código @Code/End Code para obter o nome da categoria que veio no Request.
E para exibir o nome da categoria usamos a sintaxe Razor : @categoria.
Finalmente para podermos exibir a opção no menu que permite ao usuário exibir as categorias vamos procurar na pasta Views a pasta Shared e nela abrir o arquivo _Layout.vbhtml e incluir neste arquivo linha de código : <li>@Html.ActionLink("Estoque", "Index", "Store")</li>
Executando o projeto iremos obter:
A página inicial exibindo o conteúdo da View Index da pasta Home:
Quando o visitante clicar no menu Estoque a relação de categorias será exibida pela View Index.vbhtml da pasta Store:
Quando o visitante clicar em uma categoria a relação de produtos relacionados será exibida pela View Browse.vbhtml da pasta Store;
E assim , concluímos com sucesso nossa primeira aplicação ASP .NET MVC 3 usando o Razor para VB .NET em nossas Views.
Aguarde em breve mais artigos sobre ASP .NET MVC 3 pois existem outros recursos interessantes que irei tratar.
Pegue o projeto completo aqui: Mvc3_Demo.zip
Eu sei é apenas ASP .NET MVC , mas eu gosto...
Referências:
Compreendendo Models, Views e Controllers - MVC - Macoratti.net