ASP .NET MVC 4 - Criando sua primeira aplicação MVC
A ASP.NET MVC 4 é um framework para construção de aplicações escaláveis, baseadas em padrões web utilizando padrões de projetos bem estabelecidos com o poder do ASP.NET e do .NET Framework.
Principais Características
Instalação
Leia a lista completa de funcionalidades nas notas de lançamento
Baixe a ASP .NET MVC RC 4 aqui: http://www.asp.net/mvc/mvc4
Antes de iniciar o nosso exemplo de aplicação MVC (Model-View-Controller) usando a ASP .NET MVC 4 vamos rever alguns conceitos básicos:
MVC
Model View Controller: MVC é uma arquitetura de software, que separa a lógica da interface do usuário. Isto é conseguido através da separação da aplicação em três partes Model, View e Controller. O foco da MVC é a separação de responsabilidades. A MVC também é um padrão de projeto.
Abaixo temos a figura onde representamos o comportamento do padrão MVC:
Vantagens do MVC:
Criando o seu primeiro projeto ASP .NET MVC 4
Abra o Visual Studio Express 2012 for Web e no menu File clique em New Project;
Selecione o template Visual C# -> Web -> ASP .NET MVC 4 Web Application;
Informe o nome PrimeiraAPP_MVC4 e clique no botão OK;
Na próxima janela selecione o template Internet Application , o view Engine Razor e clique no botão OK;
Será criado o projeto completo com a estrutura das pastas padrão de um projeto ASP .NET MVC.
Podemos observar no projeto asa seguintes pastas :
Não precisa ser muito esperto para perceber que estes diretórios contém os arquivos que irão implementar o MVC - Model , View e o Controller. (Modelo, Visão e Controlador)
Executando o projeto iremos obter o seguinte resultado onde podemos ver as seções Home, About e Contact bem como as opções para Log in e Register adicionadas e criadas por padrão:
Vamos usar os arquivos e a estrutura que já foram criados por padrão de forma a minimizar o nosso trabalho.
Alterando o projeto e exibindo detalhes de usuários
Vamos incluir no projeto o nosso Controller , Model e View para podermos exibir os detalhes dos usuários.
Clique com o botão direito do Models, clique em Add Class e adicione uma classe chamada UsuarioModel.cs com a seguinte estrutura:
using System; namespace PrimeiraAPP_MVC4.Models { public class UsuarioModel { public string nome { get; set; } public string sobrenome { get; set; } public string endereco { get; set; } public string email { get; set; } public DateTime nascimento { get; set; } } } |
Vamos agora implementar algumas validações nos campos definidos na classe UsuarioModel usando Data Annotations. Para isso vamos alterar o código conforme exibido a seguir:
using System; using System.ComponentModel; using System.ComponentModel.DataAnnotations; namespace PrimeiraAPP_MVC4.Models { public class UsuarioModel { [DisplayName("Primeiro Nome")] [StringLength(50, ErrorMessage = "O campo Nome permite no máximo 50 caracteres!")] public string nome { get; set; } [Required] public string sobrenome { get; set; } public string endereco { get; set; } [StringLength (50)] [Required(ErrorMessage="Informe o Email")] [RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Email inválido.")] public string email { get; set; } [DataType(DataType.Date)] public DateTime nascimento { get; set; } } } |
No exemplo usamos os seguintes atributos:
Vamos agora criar uma nova classe na pasta Models onde iremos definir alguns dados para os nossos usuários.
Clique com o botão direito do Models, clique em Add Class e adicione uma classe chamada Usuario.cs com a seguinte estrutura:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace PrimeiraAPP_MVC4.Models { public class Usuarios { public List<UsuarioModel> listaUsuarios = new List<UsuarioModel>(); public Usuarios() { listaUsuarios.Add(new UsuarioModel { nome = "Jose Carlos", sobrenome = "Macoratti", endereco = "Rua Projetada , 100", email = "macoratti@yahoo.com", nascimento = Convert.ToDateTime("05/09/1975") }); listaUsuarios.Add(new UsuarioModel { nome = "Jefferson Andre", sobrenome = "Ribeiro", endereco = "Rua Mirassol , 50", email = "jeffbol@bol.com.br", nascimento = Convert.ToDateTime("13/08/1992") }); listaUsuarios.Add(new UsuarioModel { nome = "Janice Lima", sobrenome = "Morais", endereco = "Rua Peru , 10", email = "janielima@hotmail.com", nascimento = Convert.ToDateTime("15/07/1990") }); } public void CriaUsuario(UsuarioModel usuarioModelo) { listaUsuarios.Add(usuarioModelo); } public void AtualizaUsuario(UsuarioModel usuarioModelo) { foreach (UsuarioModel usuario in listaUsuarios) { if (usuario.email == usuarioModelo.email) { listaUsuarios.Remove(usuario); listaUsuarios.Add(usuarioModelo); break; } } } public UsuarioModel GetUsuario(string Email) public void DeletarUsuario(String Email) |
Nesta classe definimos um construtor (Usuario) que cria 3 usuários e 3 métodos:
Vamos agora criar um Controller para a nossa aplicação. Clique com o botão direito do mouse sobre a pasta Controllers e selecione Add-> Controller;
A seguir informe o nome UsuarioController e escolha o Template - EMpty MVC controller e clique no botão Add;
Vamos definir o código abaixo em nosso controller:
using System.Web.Mvc; using PrimeiraAPP_MVC4.Models; namespace PrimeiraAPP_MVC4.Controllers { public class UsuarioController : Controller { // // GET: /Usuario/ private static Usuarios _usuarios = new Usuarios(); public ActionResult Index() { return View( _usuarios.listaUsuarios); } public ActionResult AdicionaUsuario() { return View(); } [HttpPost] public ActionResult AdicionaUsuario(UsuarioModel _usuarioModel) { _usuarios.CriaUsuario(_usuarioModel); return View(); } public ViewResult DeletaUsuario(string id) |
Nosso controlador possui três métodos HttpGet:
Além disso temos dois métodos HttPost :
Vamos criar as nossas views a partir dos métodos do controlador. Clique com o botão direito sobre o método Index() e selecione Add View;
A seguir informe selecione a opção Create a strongly-typed view conforme a figura abaixo e clique no botão Add;
Será criada a view Index.chstml na pasta Views/Usuarios com o código abaixo:
@model IEnumerable<PrimeiraAPP_MVC4.Models.UsuarioModel> @{ ViewBag.Title = "Index"; } <h2>Index</h2> <p> @Html.ActionLink("Criar Usuário", "AdicionaUsuario") </p> <table> <tr> <th>@Html.DisplayNameFor(model => model.nome)</th> <th>@Html.DisplayNameFor(model => model.sobrenome)</th> <th>@Html.DisplayNameFor(model => model.endereco)</th> <th>@Html.DisplayNameFor(model => model.email)</th> <th>@Html.DisplayNameFor(model => model.nascimento)</th> <th></th> </tr> @foreach (var item in Model) { <tr> <td>@Html.DisplayFor(modelItem => item.nome)</td> <td>@Html.DisplayFor(modelItem => item.sobrenome)</td> <td>@Html.DisplayFor(modelItem => item.endereco)</td> <td>@Html.DisplayFor(modelItem => item.email)</td> <td>@Html.DisplayFor(modelItem => item.nascimento)</td> <td> @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) | @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) | @Html.ActionLink("Deletar", "DeletaUsuario", new { id=item.email }) </td> </tr> } </table> |
Vamos alterar o codigo do ActionLink do link Criar Usuário para @Html.ActionLink("Criar Usuário", "AdicionaUsuario") de forma a podermos chamar a view AdicionaUsuario que iremos criar a seguir.
Vamos repetir o processo e criar uma view para o método AdicionaUsuario() do controlador UsuarioController (clique com o botão direito do mouse sobre o método AdicionaUsuario e selecione Add-> View);
A seguir informe selecione a opção Create a strongly-typed view conforme a figura abaixo e clique no botão Add;
Será criada a view AdicionaUsuario.chstml na pasta Views/Usuarios com o código abaixo:
@model PrimeiraAPP_MVC4.Models.UsuarioModel @{ ViewBag.Title = "AdicionaUsuario"; } <h2>AdicionaUsuario</h2> @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>UsuarioModel</legend> <div class="editor-label">@Html.LabelFor(model => model.nome)</div> <div class="editor-field">@Html.EditorFor(model => model.nome) @Html.ValidationMessageFor(model => model.nome) </div> <div class="editor-label">@Html.LabelFor(model => model.sobrenome)</div> <div class="editor-field"> @Html.EditorFor(model => model.sobrenome) @Html.ValidationMessageFor(model => model.sobrenome) </div> <div class="editor-label">@Html.LabelFor(model => model.endereco)</div> <div class="editor-field"> @Html.EditorFor(model => model.endereco) @Html.ValidationMessageFor(model => model.endereco) </div> <div class="editor-label">@Html.LabelFor(model => model.email)</div> <div class="editor-field"> @Html.EditorFor(model => model.email) @Html.ValidationMessageFor(model => model.email) </div> <div class="editor-label">@Html.LabelFor(model => model.nascimento)</div> <div class="editor-field"> @Html.EditorFor(model => model.nascimento) @Html.ValidationMessageFor(model => model.nascimento) </div> <p> <input type="submit" value="Create" /> </p> </fieldset> } <div> @Html.ActionLink("Back to List", "Index") </div> @section Scripts { @Scripts.Render("~/bundles/jqueryval") } |
Antes de executar o projeto vamos alterar o arquivo _Layout.chstml da pasta /Shared incluindo a linha destacada em azul abaixo no arquivo:
........... <nav> <ul id="menu"> <li>@Html.ActionLink("Home", "Index", "Home")</li> <li>@Html.ActionLink("About", "About", "Home")</li> <li>@Html.ActionLink("Contact", "Contact", "Home")</li> <li>@Html.ActionLink("Usuario", "Index", "Usuario")</li> </ul> </nav> ........... |
Executando o projeto iremos obter o seguinte resultado:
Observe que no menu temos agora a opção Usuario que nos dará acesso a view Index.cshtml da pasta \Views\Usuario;
Clicando nesta opção teremos a apresentação da view Index.cshtml onde vemos o link Criar Usuário que irá acionar a view AdicionaUsuario.cshtml;
Ao clicar no link Criar Usuário teremos a página para cadastrar um novo usuário;
Vamos verificar primeiro se a nossa validação esta funcionando. Na figura abaixo vemos o resultado obtido se violarmos qualquer uma das regras de validação definidas:
Cadastramento um usuário com todos os dados válidos conforme abaixo:
Ao clicarmos no link - Back to List - vermos o novo usuário sendo exibido na página conforme a seguir:
Criamos assim nossa primeira aplicação usando ASP .NET MVC 4 e vimos que o nosso trabalho é muito facilitado pelos recursos oferecidos no framework.
Se desejar você pode implementar as funcionalidades para Editar, Detalhar e Deletar usuários. Basta definir o método Model, no Controlador e a seguir criar a respectiva View.(Dexei o método para excluir como exemplo)
Pegue o projeto completo aqui: PrimeiraAPP_MVC4.zip
Mar 1:13
E esteve no deserto quarenta dias sentado tentado por Satanás; estava entre as feras, e os anjos o serviam.Mar 1:14
Ora, depois que João foi entregue, veio Jesus para a Galiléia pregando o evangelho de DeusMar 1:15
e dizendo: O tempo está cumprido, e é chegado o reino de Deus. Arrependei-vos, e crede no evangelho.Mar 1:16
E, andando junto do mar da Galiléia, viu a Simão, e a André, irmão de Simão, os quais lançavam a rede ao mar, pois eram pescadores.Mar 1:17
Disse-lhes Jesus: Vinde após mim, e eu farei que vos torneis pescadores de homens.Referências: