31
Programando com ASP.NET MVC Aprenda a desenvolver aplicações web utilizando a arquitetura MVC Alfredo Lotar Novatec

AspnetMVC Libre

Embed Size (px)

DESCRIPTION

Asp Net MVC

Citation preview

  • Programando com

    ASP.NET MVCAprenda a desenvolver aplicaes web

    utilizando a arquitetura MVC

    Alfredo Lotar

    Novatec

  • Copyright 2011 da Novatec Editora Ltda.

    Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. proibida a reproduo desta obra, mesmo parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor e da Editora.

    Editor: Rubens PratesEditorao eletrnica: Camila Kuwabata e Carolina KuwabataReviso gramatical: Dbora FacinCapa: Victor Bittow

    ISBN: 978-85-7522-283-6

    Histrico de impresses:

    Outubro/2011 Primeira edio

    Novatec Editora Ltda.Rua Lus Antnio dos Santos 11002460-000 So Paulo, SP BrasilTel.: +55 11 2959-6529Fax: +55 11 2950-8869Email: [email protected]: www.novatec.com.brTwitter: twitter.com/novateceditoraFacebook: facebook.com/novatecLinkedIn: linkedin.com/in/novatec

    VC20111003

  • 15

    CAPTULO 1

    Introduo ASP.NET MVC

    O ASP.NET MVC fornece, por meio de design patterns, uma maneira poderosa e alternativa para criar websites ASP.NET dinmicos.

    O ASP.NET MVC implementa o pattern MVC e separa a aplicao em trs compo-nentes: model, controller e view.

    O model contm o cdigo da camada de dados.

    O controller recebe as requisies do usurio.

    O view implementa o design da aplicao.

    Observe a igura 1.1:

    Usurio

    ControllerController

    View

    Model B

    D

    Figura 1.1 Relao entre o usurio, o controller, o model e o view.

    Na igura 1.1 vemos a relao entre o controller, o model e o view. O controller aceita a requisio do usurio, acessa o view e/ou o model. O model acessa o banco de dados. Ao inal, o contedo do view retornado ao usurio.

    Obs.: no decorrer deste livro usamos a palavra controlador em vez de controller. As palavras model e view no foram traduzidas.

  • 16 Programando com ASP.NET MVC

    1.1 Para quem este livro?

    Bem, este no um livro para iniciantes em programao, ou seja, necessrio co-nhecimento prvio de C# e/ou ASP.NET Web Forms.

    Neste livro no abordamos a sintaxe C#, o ASP.NET Web Forms e as classes do .NET Framework, pois o foco do livro especiicamente o ASP.NET MVC.

    Para testar os exemplos abordados no livro, baixe os arquivos de exemplo no website da Novatec: http://www.novatec.com.br/downloads.php

    Obs.: ASP.NET Web Forms a denominao usada para o ASP.NET tradicional, com base em formulrios e controles. Este nome visa apenas a diferenci-lo do ASP.NET MVC.

    1.2 Por que outro ASP.NET?

    Porque o ASP.NET Web Forms apresenta uma srie de limitaes e problemas, por exemplo:

    Gera pginas muito grandes, afetando o carregamento das pginas e o trfego da rede.

    Temos pouco controle sobre o HTML gerado.

    Os Web Server Controls so processados no servidor e podem afetar o desem-penho da aplicao.

    Diiculdade em realizar testes na aplicao.

    No tem real separao entre o cdigo e o design.

    1.3 ASP.NET MVC difcil?

    Alguns programadores com quem mantenho contato pela Internet airmam: o ASP.NET MVC muito difcil comparado ao ASP.NET Web Forms. Na minha opinio o ASP.NET MVC no difcil, mas diferente. Por exemplo, o ASP.NET Web Forms semelhante ao modelo de programao usado pelo Visual Basic ou Delphi, ao qual a maioria dos programadores atuais est acostumado.

    No ASP.NET MVC voc programa mtodos e no eventos. H tambm separao entre o cdigo que interage com o usurio, o design e a camada de dados. Tudo isso parece estranho para programadores acostumados a programar eventos em formulrios.

    Outros programadores airmam que tm diiculdades em aprender ASP.NET MVC. Acredito que a diiculdade no aprendizado se deve ao fato de a maioria do contedo estar em ingls ou em pequenos tutoriais em portugus. No momento em que escrevo este texto incio de junho de 2011 , h poucos livros em portugus sobre ASP.NET MVC.

  • 17Captulo 1 Introduo ASP.NET MVC

    1.4 Quando usar o ASP.NET Web Forms

    A seguir listamos alguns motivos para voc continuar usando o ASP.NET Web Forms:

    Quando voc precisa rapidamente de um recurso visualmente soisticado, como os obtidos com o controle GridView, DataList, ListView ou Repeater.

    Quando h necessidade de manter o estado da pgina entre requisies.

    Quando for necessrio ligar um controle SqlDataSource a uma origem de dados. Quando sentir saudade do recurso de arrastar e soltar do Visual Studio.

    1.5 Quando usar o ASP.NET MVC

    Alguns motivos para voc adotar o ASP.NET MVC:

    Quando voc precisa de controle total sobre o HTML.

    Quando h necessidade de unidades de teste no projeto.

    Quando a aplicao necessita de separao entre o design, o cdigo e a camada de dados.

    Quando h obrigao de reduzir o tamanho das pginas geradas.

    Quando preciso eliminar ou reduzir os Postbacks.

    Quando uma equipe grande desenvolve uma aplicao. Cada um pode-se dedicar a uma parte (controlador, model e view) da aplicao.

    Quando necessrio estender a aplicao constantemente.

    Quando a aplicao requer mltiplas interfaces. Por exemplo, voc pode criar um view que exibe uma pgina HTML e outro que exibe uma pgina no estilo Silverlight ou em um formato para dispositivos mveis.

    Quando voc no se sentir confortvel desenvolvendo com formulrios. Ge-ralmente, programadores no gostam de fazer o design da aplicao.

    Quando os designes da empresa estiverem com pouco trabalho e voc quer que eles criem todas as pginas manualmente, sem os caractersticos recursos de arrastar e soltar. Maldade, n?

    1.6 Os dois ASP.NET funcionam juntos?

    Sim, aproveite o melhor de cada um. Por exemplo, uma aplicao ASP.NET MVC pode exibir informaes em um controle DataList do ASP.NET Web Forms.

  • 18 Programando com ASP.NET MVC

    1.7 Recursos do ASP.NET MVC

    O ASP.NET MVC permite, entre outras coisas:

    Controle total sobre o HTML.

    Criao de URLs amigveis.

    Clara separao entre o design, o cdigo e a camada de dados.

    Validao no cliente e servidor.

    Deinio de iltros de ao.

    Facilidade em implementar aplicaes Ajax.

    Uso da sintaxe Razor.

    Uso intensivo de atributos.

    Implementao e criao de HTML helpers.

    A implementao de unidades de teste.

    Implementa o pattern MVC.

    1.8 Prepare seu computador

    Os exemplos deste livro podem ser desenvolvidos com o Visual Studio 2010 ou Visual Web Developer 2010 Express.

    http://www.microsoft.com/netframework

    http://www.microsoft.com/visualstudio

    http://www.microsoft.com/express/downloads

    Baixe e instale tambm o ASP.NET MVC. Acesse o website http://www.asp.net/mvc

    Obs.: nos arquivos de exemplo, voc encontra uma lista com todos os links indica-dos no livro. Assim, no h necessidade de digit-los.

    1.8.1 Preparando o IIS

    Aps a instalao dos softwares anteriores, instale o Internet Information Services (IIS).

    Se voc planeja usar seu computador somente para testar os exemplos deste livro, no necessrio instal-lo. Nesse caso, use o ASP.NET Development Server, o qual instalado com o Visual Studio 2010 ou Visual Web Developer 2010 Express.

    Uma aplicao ASP.NET MVC roda no contexto da mquina local sob a conta AUTORIDADE NT\SERVIO DE REDE.

  • 19Captulo 1 Introduo ASP.NET MVC

    1.8.2 Acessando uma aplicao ASP.NET MVC

    Os arquivos da aplicao web acessados pelo navegador so disponibilizados pelo servidor web o servidor IIS. Todos os arquivos da aplicao ASP.NET MVC acessados pelo navegador devem fazer parte de um diretrio virtual.

    Para testar a aplicao web no seu computador, recomenda-se empregar a seguinte sintaxe:

    http://[nomedoservidor]/[DiretrioVirtual]/[mtodo]Exemplo:

    http://alfredo/livro/ou

    http://localhost/livro/http://localhost/livro/capitulo1de modo que livro o diretrio virtual, e capitulo1, o subdiretrio. Somente o diretrio-raiz, no caso livro, precisa ser virtual.

    Obs.: navegador o termo usado neste livro para nomear softwares de exibio de p-ginas de websites como o Internet Explorer, o Firefox, o Opera, o Google Chrome etc.

    1.8.3 Criando um diretrio virtual

    Abra o Windows Explorer, uma vez que um diretrio virtual pode ser criado facil-mente nele.

    Navegue at o diretrio-raiz da aplicao web.

    Clique com o boto direito no diretrio escolhido e, em seguida, clique em propriedades.

    Selecione a aba Compartilhamento da web e, em seguida, selecione compartilhar essa pasta.

    Deina um alias para a pasta. O alias o nome do diretrio virtual que ser usado na URL do navegador. Observe a igura 1.2.

  • 20 Programando com ASP.NET MVC

    Figura 1.2 Criando um diretrio virtual.

    1.9 Desenvolvendo uma nova aplicao

    Inicie o Visual Studio 2010 ou o Visual Web Developer 2010 Express. Acesse o menu File e clique em New Project ....

    Na caixa de dilogo New Project selecione Visual C# e ASP.NET MVC 3 Web Application. Nomeie o projeto como AppCapitulo1. Clique em OK. Conforme igura 1.3.

    Figura 1.3 Criando uma nova aplicao ASP.NET MVC.

  • 21Captulo 1 Introduo ASP.NET MVC

    Em seguida, escolha um dos dois templates para iniciar seu projeto:

    Empty contm a estrutura bsica de arquivos e diretrios usados por uma apli-cao ASP.NET MVC.

    Internet Application contm alm dos recursos do template Empty arquivos e dire-trios usados na autenticao de usurios e formatao.

    Na caixa de combinao View Engine:. Selecione o mecanismo de exibio ASPX.Observe a igura 1.4.

    Figura 1.4 Deinindo o template e o mecanismo de exibio da aplicao.

    Obs.: o Visual Studio 2010 Proissional ou superior permite a criao de uma uni-dade de teste.

    Quando criamos uma nova aplicao com o template Empty, automaticamente adi-cionada a seguinte estrutura de arquivos e diretrios. Observe a igura 1.5.

  • 22 Programando com ASP.NET MVC

    Figura 1.5 Estrutura de arquivos e diretrios do website ASP.NET MVC.

    Os diretrios-padro da aplicao ASP.NET MVC so:

    Diretrio Descrio

    App_Data Contm os arquivos do banco de dados (.MDF, .MDB), documentos xml.Content Contm os arquivos estticos como imagens e arquivos CSS.Controllers Contm as classes do controlador. Recebe as requisies do usurio. Ex.: o

    usurio digita o endereo da Internet de uma pgina ou clique num link.

    Models Contm as classes da camada de dados. Manipula informaes do banco de dados.

    Scripts Contm os arquivos JavaScript, jQuery, arquivos .js em geral.Views Contm em geral arquivos .aspx, .ascx, .master, .cshtml responsveis pela

    exibio do contedo ao usurio.

    A igura 1.6 lista os arquivos de cada diretrio da aplicao:

    Figura 1.6 Arquivos e diretrios da aplicao ASP.NET MVC.

  • 23Captulo 1 Introduo ASP.NET MVC

    A igura 1.6 exibe somente alguns arquivos do diretrio Scripts.Alm dos diretrios-padro, listados anteriormente, h diretrios com signiicados especiais:

    Diretrio Descrio

    Areas O ASP.NET MVC cria uma nova estrutura de diretrios e arquivos. Ideal para dividir uma aplicao grande ou criar uma rea restrita no website.

    App_GlobalResources Contm os arquivos de recursos globais (.resx e .resources). Esses arquivos contm imagens, textos, arquivos etc.

    App_LocalResources Contm os arquivos de recursos locais (.resx e .resources). Esses arquivos contm imagens, textos, outros arquivos etc.

    App_Browsers Contm os arquivos com a extenso .browser. Os arquivos .browser gerenciam as informaes sobre os recursos implementados pelo na-vegador.

    App_Themes Contm os arquivos .skin e .css responsveis pela aparncia da aplicao.

    1.10 Executando a aplicao

    Para executar a aplicao, pressione F5 ou acesse Start Debugging (F5) na barra de ferramen-tas do Visual Studio 2010 ou Visual Web Developer 2010 Express. Observe a igura 1.7:

    Figura 1.7 Executando a aplicao.

    Em seguida, gerada a sada exibida na igura 1.8.

    Figura 1.8 Sada exibe uma pgina invlida.

  • 24 Programando com ASP.NET MVC

    Bem, esse erro acontece porque no temos nenhuma informao ou pgina para exibir no navegador. Para resolver esse problema adicionamos um controlador ao projeto.

    1.11 Controladores

    Os controladores MVC manipulam e respondem s entradas e interaes do usurio e tambm interagem com as outras partes da aplicao, como views e models.

    Para adicionar um novo controlador aplicao web, acesse a janela Solution Explorer. Clique com o boto direito do mouse no diretrio Controllers. Em seguida, aponte para Add e clique em Controller.... Na caixa de dilogo Add Controller digite o nome do con-trolador HomeController. Observe a igura 1.9.

    Figura 1.9 Adicionando um novo controlador.

    O ASP.NET MVC requer controladores com o suixo Controller. Exemplo: HomeController, DetailsController, EditController etc. O preixo usado nas entradas e interaes do usurio.

    Exemplo:

    http://localhost:1573/Homehttp://localhost:1573/Home/Details/5http://localhost:1573/Home/Edit/5

    Obs.: os action method so denominados tambm mtodos de controlador.

  • 25Captulo 1 Introduo ASP.NET MVC

    Quando clicamos no boto Add da caixa de dilogo Add Controller, o Visual Studio 2010 ou Visual Web Developer 2010 Express acrescentam o arquivo HomeController.cs ao diretrio Controllers e o seguinte cdigo:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;

    namespace AppCapitulo1.Controllers { public class HomeController : Controller { // GET: /Home/ public ActionResult Index() { return View(); } }}Pressione F5. A aplicao retorna novamente uma pgina de erro, pois ainda no as-sociamos nenhum view responsvel pela exibio do contedo ao usurio.

    Para resolver o problema, substitua o trecho de cdigo:

    public ActionResult Index() { return View();}Por:

    public ActionResult Index() { return Content("Ol mundo!");}Se preferir use:

    public string Index() { return "Ol mundo!";}Ou:

    public void Index() { Response.Write("Ol mundo!");}Pressione F5 novamente. O resultado vemos na igura 1.10.

  • 26 Programando com ASP.NET MVC

    O mesmo resultado obtido quando digitamos:

    http://localhost:1029/http://localhost:1029/Homehttp://localhost:1029/Home/index

    Figura 1.10 Nosso primeiro exemplo em ao.

    O ASP.NET MVC usa roteamento de URLs e as regras so registradas no mtodo RegisterRoutes dentro do arquivo Global.asax:public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } );}controller o nome da classe do controlador. action o nome do mtodo invocado. E id o parmetro opcional embutido na URL e usado para passar argumentos para o mtodo.

    O formato de URL {controller}/{action}/{id} registrado no Global.asax permite as seguintes variaes de URLs:

    http://localhost:1029/http://localhost:1029/Homehttp://localhost:1029/Home/indexhttp://localhost:1029/Home/Createhttp://localhost:1029/Home/Details/5http://localhost:1029/Home/Edit/25

    Obs.: baixe os arquivos de exemplo no site da Novatec Editora, assim voc no pre-cisa digitar grandes quantidades de cdigo.

  • 27Captulo 1 Introduo ASP.NET MVC

    1.11.1 Mtodo com parmetros

    Acrescente o mtodo Details classe HomeController:public ActionResult Details(int id) { return Content("Ol mundo com id = " + id + "");}Exemplo:

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace AppCapitulo1.Controllers { public class HomeController : Controller { public ActionResult Index() { return Content("Ol mundo!"); } public ActionResult Details(int id) { return Content("Ol mundo com id = " + id + ""); } }}Quando pressionamos F5 ou digitamos no navegar a URL:

    http://localhost:NmeroDaPorta/Home/Details/5 retornada a pgina exibida na igura 1.11:

    Figura 1.11 URL com parmetros.

    Obs.: 1029 o nmero da porta usada pelo ASP.NET Development Server. Esse valor no ixo. Ao pressionar F5 no seu computador o nmero da porta ser outro. Altere o nmero da porta ou coloque a aplicao num diretrio virtual e digite: http://localhost/nomediretriovirtual/Home/Details/5

  • 28 Programando com ASP.NET MVC

    1.12 Master pages

    Para exibir elementos comum a todas as pginas, use master pages. Uma master page pode facilmente exibir menus, logos, banners, e seu layout pode conter textos estticos, elementos HTML, imagens e web server controls.

    Para acrescentar uma master page a um projeto ASP.NET MVC, siga os passos des-critos a seguir:

    Clique com o boto direito do mouse no diretrio /Views/Shared. Selecione Add e, em seguida, aponte para New Item. Observe a igura 1.12:

    Figura 1.12 Acrescentando uma nova master page.

    Na caixa de dilogo Add New Item selecione MVC 3 View Master Page (ASPX). Nomeie como Site.Master. Clique em Add. Observe a igura 1.13.O arquivo Site.Master contm o seguinte cdigo:

  • 29Captulo 1 Introduo ASP.NET MVC

    Um controle ContentPlaceHolder deine regies da pgina que no tm contedo comum a todas as pginas. Por exemplo, os produtos mais vendidos.

    Figura 1.13 Caixa de dilogo Add New Item.

    Para formatar o website usamos folhas de estilo CSS. Acrescente tag head da master page uma referncia para a tag link:

    O arquivo Site.css adicionado ao diretrio Content quando criamos um novo projeto ASP.NET MVC e possui os seguintes seletores CSS:

    body { font-size: 75%; font-family: Verdana, Tahoma, Arial, "Helvetica Neue", Helvetica, Sans-Serif; color: #232323; background-color: #fff;}/* Estilos para formulrios-----------------------------------------------------------*/fieldset { border:1px solid #ddd;

  • 30 Programando com ASP.NET MVC

    padding:0 1.4em 1.4em 1.4em; margin:0 0 1.5em 0;}legend { font-size:1.2em; font-weight: bold;}textarea { min-height: 75px;}.editor-label { margin: 1em 0 0 0;}.editor-field { margin:0.5em 0 0 0;}/* Estilos para validao-----------------------------------------------------------*/.field-validation-error { color: #ff0000;}.field-validation-valid { display: none;}.input-validation-error { border: 1px solid #ff0000; background-color: #ffeeee;}.validation-summary-errors { font-weight: bold; color: #ff0000;}.validation-summary-valid { display: none;}

    1.12.1 Conigurando a master page

    Inicialmente, usamos a master page para formatar o topo das pginas da nossa apli-cao ASP.NET MVC.

    Adicione ao arquivo Site.css o trecho de cdigo a seguir:

  • 31Captulo 1 Introduo ASP.NET MVC

    body { font-size: 75%; font-family: Verdana, Tahoma, Arial, "Helvetica Neue", Helvetica, Sans-Serif; color: #232323; background-color: #fff; margin-left: 0; margin-right: 0; margin-top: 0; margin-bottom: 0;}table { border-collapse: collapse; border: 0;}td { padding: 0;}Acrescente as tabelas a seguir ao arquivo Site.Master:

    LOGO Website

  • 32 Programando com ASP.NET MVC

    Exemplo:

    LOGO Website

  • 33Captulo 1 Introduo ASP.NET MVC

    Para aplicar a master page em um view, basta adicionar o atributo MasterPageFile diretiva @ page:

    A igura 1.14 mostra a master page Site.Master em ao:

    Figura 1.14 Cabealho da pgina formatada pela master page.

    Obs.: baixe os arquivos de exemplo no site da Editora Novatec e, em seguida, copie o cdigo anteriormente mencionado.

    1.13 Views

    View ou exibio responsvel pela apresentao do contedo HTML da pgina. Geralmente, deinida por intermdio de arquivos .aspx, .ascx, .master, .cshtml.Criar uma exibio a partir de um mtodo de controlador MVC. o modo mais fcil, rpido e simples.

    Clique com o boto direito do mouse no nome do mtodo e, em seguida, clique em Add View.... Observe a igura 1.15.

    Na caixa de dilogo Add View deina o nome do view e tambm o mecanismo de exibi-o ASPX no nosso caso. Marque a caixa de seleo com a legenda "Use a layout or master page: e determine o nome da master page. Observe a igura 1.16.

  • 34 Programando com ASP.NET MVC

    Figura 1.15 Adicionando um novo View.

    Figura 1.16 Caixa de dilogo Add View.

  • 35Captulo 1 Introduo ASP.NET MVC

    O novo view acrescentado ao subdiretrio Home do diretrio Views. Observe a igura 1.17:

    Figura 1.17 View Index.aspx.

    Quando abrimos o arquivo Index.aspx vemos o seguinte contedo:

    Index

    Index

    1.13.1 Exibindo informaes num view

    Normalmente, passamos informaes de um mtodo de controlador para um view por intermdio da propriedade ViewBag. Cuja sintaxe :ViewBag.QualquerNome = Contedo;Exemplo:

    ViewBag.Nome = "Alfredo Lotar";ViewBag.Editora = "Novatec";ViewBag.Idade = 37;ViewBag.Data = DateTime.Now;

  • 36 Programando com ASP.NET MVC

    Para exibir a mensagem "ASP.NET MVC! na tela, acrescentamos ao mtodo Index da classe HomeController a seguinte linha:ViewBag.Mensagem = "ASP.NET MVC!";Exemplo:

    using System.Web.Mvc;namespace AppCapitulo1.Controllers { public class HomeController : Controller { public ActionResult Index() { ViewBag.Mensagem = "ASP.NET MVC!"; return View(); }

    public ActionResult Details(int id) { return View(); } }}Em seguida, adicionamos a linha a seguir:

    Ao arquivo Index.aspx. Exemplo:

    Index

    A sada no ASP.NET MVC gerada pela expresso inline:

    Obs.: as verses 1 e 2 do ASP.NET MVC usam a expresso em vez de .

    1.13.2 Acrescentando um link ao view

    O modo mais usado para linkar pginas no ASP.NET MVC por intermdio do mtodo ActionLink. Exemplo:

  • 37Captulo 1 Introduo ASP.NET MVC

    O primeiro parmetro do mtodo ActionLink deine o texto do link; o segundo, o nome do mtodo que deve ser executado; o terceiro parmetro opcional embutido na URL usado para passar argumentos para o mtodo.

    Para exempliicar, altere o mtodo Details da classe HomeController para:public ActionResult Details(int id) { ViewBag.Mensagem = "Detalhes id = " + id; return View();}Em seguida, associe um novo view para o mtodo Details. Observe a igura 1.18.Na pgina Details.aspx acrescente as linhas a seguir:

    Figura 1.18 Criando um novo View.

  • 38 Programando com ASP.NET MVC

    Exemplo:

    Detalhes

    E no arquivo Index.aspx acrescente a linha:

    Navegue entre as pginas e veja os links funcionando. Observe a igura 1.19:

    Figura 1.19 Testando links desenvolvidos com o mtodo ActionLink.

    1.14 Models

    O model contm as classes da camada de dados, ou seja, contm as rotinas de acesso e manipulao de dados provenientes de diferentes origens de dados, por exemplo, banco de dados SQL Server, Oracle, MySQL, documentos XML etc.

    Os arquivos da camada de dados so armazenados no diretrio Models.Para facilitar a manuteno, os testes e evitar a duplicao de cdigos, divida, por exemplo, a camada de dados em: um ou mais objetos Entity Framework e os ma-nipule por intermdio de uma classe e uma interface. No captulo 4 abordaremos o assunto novamente.

  • 39Captulo 1 Introduo ASP.NET MVC

    1.14.1 Acrescentando uma nova classe

    Para ilustrar o que foi abordado at o momento, criamos uma nova classe no diretrio Models, conforme a igura 1.20:

    Figura 1.20 Acrescentando uma nova classe.

    Em seguida, na caixa de dilogo Add New Item deinimos o nome da classe. Observe a igura 1.21:

    Figura 1.21 Caixa de dilogo Add New Item.

  • 40 Programando com ASP.NET MVC

    Ao clicar no boto Add da caixa de dilogo Add New Item acrescentado ao diretrio Models o arquivo Cidades.cs com o seguinte cdigo:using System;using System.Collections.Generic;using System.Linq;using System.Web;

    namespace AppCapitulo1.Models { public class Cidades { }}O passo seguinte alterar o cdigo gerado. Alteramos o nome da namespace de:

    namespace AppCapitulo1.Models {Para:

    namespace AlfredoLotar.Livro.AspnetMvc {E acrescentamos trs propriedades:

    public int CidadeID { get; set; }public string Nome { get; set; }public string Estado { get; set; }A seguir temos o cdigo da classe Cidades com as alteraes:using System;using System.Collections.Generic;using System.Linq;using System.Web;

    namespace AlfredoLotar.Livro.AspnetMvc { public class Cidades { public int CidadeID { get; set; } public string Nome { get; set; } public string Estado { get; set; } }}Antes de acessar os membros da classe Cidades preciso compil-la. Observe a igura 1.22:

  • 41Captulo 1 Introduo ASP.NET MVC

    Figura 1.22 Compilando a aplicao a partir do menu Debug.

    1.14.2 Criando uma instncia da classe Cidades

    O prximo passo do nosso exemplo a criao de uma instncia da classe Cidades em um mtodo de controlador qualquer. Nomeamos o mtodo como Index. Se preferir, use qualquer outro nome.

    Exemplo:

    using System.Web.Mvc;using AlfredoLotar.Livro.AspnetMvc;

    namespace AppCapitulo1.Controllers { public class HomeController : Controller { public ActionResult Index() { var model = new Cidades() { CidadeID=1, Nome="So Paulo", Estado="SP" }; return View(model); } }}

  • 42 Programando com ASP.NET MVC

    1.14.3 Acrescentando um view

    Clique com o boto direito do mouse no mtodo Index e, em seguida, clique em Add View.... Na caixa de dilogo Add View marque a caixa de seleo Create a strongly-typed view e selecione na caixa de combinao Model Class: Cidades (AlfredoLotar.Livro.AspnetMvc), con-forme a igura 1.23:

    Figura 1.23 Caixa de dilogo Add View.

    Aps clicar em Add adicionado o arquivo Index.aspx ao diretrio Views\Home com o seguinte cdigo:

    Index

    Index

    A classe usada pelo view declarada na diretiva @ Page:

  • 43Captulo 1 Introduo ASP.NET MVC

    No view, as propriedades da classe Cidades so acessadas por intermdio do objeto Model:

    Exemplo:

    Cidades

    Cidades

    A sada no navegador voc v na igura 1.24:

    Figura 1.24 Exemplo em ao.