Download - ApresentaçãO Mvc
![Page 1: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/1.jpg)
ASP.NET MVC
Alexandre Tarifa
![Page 2: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/2.jpg)
Alexandre Tarifa
• Bacharel em Ciência da Computação – UMESP
• Pós graduado em Ciência da Computação – UFSCAR
• Líder e um dos criadores da comunidade Codificando .Net (www.codificando.net)
• Autor de 3 livros (VB.NET Express – Best Seller, C# Express – Best Seller e VSTS Rocks)
• MVP – Microsoft Most Valuable Professional – Visual Developer – Visual Basic/Visual Basic .Net
• Experiência profissional em multinacionais, consultoria, farmacêutica e Internet (.com)
• MCT (Microsoft Certified Trainer, MCAD (Microsoft Certified Application Developer e MCP (Microsoft Certified Professional)
• Gerente de TI – portal Minha Vida (www.minhavida.com.br)
• Diretor da Treinando .Net – empresa de treinamentos - plataforma .Net (www.treinando.net)
![Page 3: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/3.jpg)
ASP.NET MVC é gratuito e permite que os desenvolvedores facilmente e com simplicidade contrua aplicações web seguindo o padrão Model-View-Controller. Permite o total controle sobre o HTML e URLs, permite integração com AJAX e facilita a implementação de teste driven development.
![Page 4: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/4.jpg)
![Page 5: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/5.jpg)
Demo: Web Forms
![Page 6: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/6.jpg)
![Page 7: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/7.jpg)
Origem
1978 por Trygve Reenskaug, durante uma visita científica ao grupo Smalltalk. Nome inicial Thing Model View Editor.
Diversas tecnologias, como o CakePHP, Ruby On Rails, Django, Tapestry (java), etc..
O projeto MonoRail (www.castleproject.org) foi o primeiro framework open source (de código aberto) para ASP.NET.Scott Guthrie, co-fundador do ASP.NET MVC Framework, participou da primeira conferência Alt.Net em outubro de 2007, onde falou sobre o framework. A apresentação feita por ele causou tanta euforia que o framework tornou-se um produto oficial da Microsoft.
![Page 8: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/8.jpg)
Arquitetura
![Page 9: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/9.jpg)
MVC
Modelos (Models) – que contém toda a lógica da aplicação que não faz parte de uma Visão (View). Isso quer dizer que todas as regras de negócios, validações e acesso a dados estão contidas no Modelo;
Visões (Views) – é a camada de apresentação, a interface que será mostrada para o usuário. Uma View contém todo o HTML e lógica necessários para a correta exibição das páginas aos usuários;
Controladores (Controllers) – são responsáveis por interagir entre os modelos e as visões. Contém a lógica de controle da aplicação que não está presente nas visões e nos modelos. Controla o fluxo da aplicação.
![Page 10: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/10.jpg)
Demo: criação de projeto no Visual Studio 2010
![Page 11: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/11.jpg)
Rotas
![Page 12: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/12.jpg)
Rotas
Mapeamentos de requisições feitas pelo browser para um controlador e uma ação específica.
Mapeamento é realizado no arquivo global.asax (controla o ciclo da aplicação).
![Page 13: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/13.jpg)
Nome da rotaFormato da url acessada pelo usuárioValores padrão caso não seja informado
![Page 14: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/14.jpg)
Nome do controllerNome da actionParâmetro
![Page 15: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/15.jpg)
Demo: rota padrão, customização de rotas e restrições
![Page 16: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/16.jpg)
Modelos (Models)
![Page 17: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/17.jpg)
Models
Podemos dizer que, basicamente, toda a lógica que não for de views e de controllers será feita nos Modelos. Nos Models podemos fazer validação, regra de acesso a dados e regra de negócios.
![Page 18: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/18.jpg)
Controlador (Controller)
![Page 19: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/19.jpg)
Controller
São responsáveis por responder as requisições realizadas. Cada requisição feita pelo navegador é mapeada para um controller próprio.
![Page 20: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/20.jpg)
Controller
Exemplo:
http://localhost/Produto/Index/3
Controller - ProdutoController
![Page 21: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/21.jpg)
Actions
Action é o método que o controller executa a chamada quando a url solicita.
A action do controller deve ser um método público. O método também nunca devera ser sobrescrevido e não pode ser um método estático.
![Page 22: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/22.jpg)
Actions
Exemplo:
http://localhost/Produto/Index/3
Action – Index()
![Page 23: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/23.jpg)
Action Result
Todas actions de controller retornam um resultado.
O ASP.NET MVC suporta diversos tipos de retornos.
![Page 24: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/24.jpg)
Action Result
ViewResult – HTML e marcações
EmptyResult – Resultado vazio
RedirectResult – Redirect para uma nova url
JsonResult – Representa um resultado JavaScript Object Notation que pode ser usado em uma aplicação AJAX
JavaScriptResult –JavaScript
ContentResult – Texto
FileContentResult – Arquivo para download
FilePathResult – Caminho de arquivo para download
FileStreamResult – Arquivo para download via file stream
![Page 25: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/25.jpg)
Observe que o método retorna um ViewResult (). Em vez disso, o método View () da classe base é chamado. Normalmente, você não retornar um resultado de ação diretamente, você chama um dos seguintes métodos da classe base Controller:
![Page 26: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/26.jpg)
Action Result
View – ViewResult
Redirect – RedirectResult
RedirectToAction – RedirectToRouteResult
RedirectToRoute – RedirectToRouteResult
Json – JsonResult
JavaScriptResult –JavaScriptResult
Content –ContentResult
File –FileContentResult, FilePathResult ou FileStreamResult
![Page 27: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/27.jpg)
![Page 28: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/28.jpg)
Caso o controller action retorne um resultado que não for um action result , então o resultado será um ContentResult automaticamente.
![Page 29: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/29.jpg)
Action desconhecida
Se um controle não consegue encontrar uma ação que está sendo requisitada, ele executa o método HandleUnknownAction().
Por padrão o erro mostrado é uma página de HTTP 404, mas nós podemos mudar utilizando o código mostrado abaixo:
![Page 30: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/30.jpg)
Views
![Page 31: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/31.jpg)
Views
Ao contrário do ASP.NET Web Forms, no MVC não existe uma página ou arquivo que corresponda a uma página. No ASP.NET MVC o mais parecido com uma página que temos são as views.
Todas as requisições são feitas para os controllers e ações, que retornam as views quando solicitado.
![Page 32: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/32.jpg)
Views
Uma view contém um documento (x)HTML e pode conter scripts para adicionar conteúdos dinâmicos.
Uma característica forte do ASP.NET MVC é que o ASP.NET não adiciona nenhum código HTML não solicitado.
![Page 33: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/33.jpg)
<% Response.Write(DateTime.Now);%>
Os delimitadores de script <% e %> marcam o início e fim de um script, neste caso em C#. Exibe a data e hora atual e através do Response.Write() renderiza o conteúdo no navegador. Os scripts podem ser usado para executar vários escopos e scripts.
Para facilitar, se você chamar <%=, o = já representa um Response.Write() , simplificando o código.
![Page 34: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/34.jpg)
Views
As Views no ASP.NET MVC ficam na pasta Views. Esta pasta, por sua vez, possui uma pasta para cada controlador, para armazenar as views de cada um deles. Se tivermos dois controladores em nossa aplicação, HomeController e ClientesController, nós teremos uma pasta em Views\Home que irá armazenar as views do respectivo controlador, e uma pasta Clientes que armazenará as views do controlador ClientesController.
![Page 35: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/35.jpg)
Demo: View fortemente tipada
![Page 36: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/36.jpg)
ViewData
ViewData é um dicionário que possui como chave somente strings. Você pode passar para a ViewData qualquer tipo de objeto.
Um controller passa informações para as views usando ViewData.
O código abaixo mostra um exemplo de como um controlador pode passar uma lista de clientes para uma view através deste dicionário:
![Page 37: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/37.jpg)
![Page 38: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/38.jpg)
HTML Helpers
HTML Helpers podem tornar a tarefa de fazer views mais fácil. Eles simplesmente renderizam algum código HTML que pode ser usado em todas as suas views simplesmente chamando Html.NomeDoHelper.
Alguns Helpers já estão incluídos no ASP.NET MVC Framework, e outros podem ser customizados de acordo com as nossas necessidades.
![Page 39: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/39.jpg)
HTML Helpers
O ASP.NET MVC framework inclui os seguintes (principais) HTML Helpers:
Html.ActionLink()
Html.BeginForm()
Html.CheckBox()
Html.DropDownList()
Html.EndForm()
Html.Hidden()
Html.ListBox()
Html.Password()
Html.RadioButton()
Html.TextArea()
Html.TextBox()
![Page 40: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/40.jpg)
HTML Enconde
Toda vez que vamos mostrar em alguma view o conteúdo de algum campo que permitimos que o usuário informe livremente, devemos usar Html.Encode() para que os caracteres sejam codificados. Se o usuário informar no nome, por exemplo, <script>alert(‘HAAA’)</script> e nós usarmos o Html.Encode(), o que será mostrado será o que o usuário realmente escreveu ao invés de executar o script.
![Page 41: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/41.jpg)
Demo: HTML Helper
![Page 42: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/42.jpg)
Demo: Carros
![Page 43: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/43.jpg)
Tópicos rápidos
Output cache
Master Page
Theme
Segurança
![Page 44: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/44.jpg)
![Page 45: ApresentaçãO Mvc](https://reader033.vdocuments.mx/reader033/viewer/2022051313/549abb27b479592e098b45bd/html5/thumbnails/45.jpg)
Referências
Site: asp.net/mvc
Apostila: Treinando .net – Curso ASP.NET MVC
Site: www.danielfonsecacastro.com.br – demos de AJAX