SlideShare uma empresa Scribd logo
1 de 42
ASP.NET MVC Vinícius de Melo Rocha MCP | MCTS | MCPD Microsoft Student Partner vinicius.rocha@studentpartners.com.br
Agenda Visão Geral Principais conceitos Razor Model Binding Validação Filtros Autenticação Criar uma aplicação
Desenvolvimento <WEB /> Linguagens HTML Javascript CSS AJAX – Isso é uma linguagem? Servidor HTTP Verbs: POST, GET, PUT Sem estado
Desenvolvimento com ASP.NET Framework para web do .NET Web Forms Desktop para WEB Produtividade Curva de aprendizagem ASP.NET MVC Implementação do modelo MVC Testável (TDD) Mais controle sobre o código gerado
Visão geral WebForms Toolbox e Designer Postbacks Event driven HTML Forms e Viewstate Controles pela WEB Entre outras coisas
Porquê ASP.NET MVC Testável (TDD) Maior controle sobre o <código /> SEO | .com/url/amiga Separar responsabilidades Open source
ASP.NET MVC o que é isso? Implementação do padrão MVC Alternativa ao Web Forms (ASPX) Desenvolvido usando ASP.NET Público diferente?
ASP.NET [ASPX | MVC] O que existe em comum? Routing (System.Web.Routing) Caching Sessions Profiles e Membership Localization
Padrão MVC Velho padrão de projeto Acrônimo para: ModelViewController Descrito originalmente em 1979 Applications Programming in Smalltalk-80: How to use Model–View–Controller
Como funciona... na web Controller Requisição Passo 1 Requisição é mapeada para o Controller
Como funciona... na web Controller Requisição Passo 2 O Controller processa a informação e cria o modelo (Model)
Como funciona... na web Controller Requisição View Passo 3 O modelo (Model) é encaminhado para a View
Como funciona... na web Controller Requisição View Passo 4 A View apresenta o (Model) em algo legível para o usuário
Como funciona... na web Controller Requisição View Response Passo 5 A View envia os modelo formatado para o usuário via Response
O que usaremos? Ferramentas IDE Visual Studio 2010 LinguagemC# View engine Razor Banco de Dados(?)
Começando... File > New > Project Estrutura do projeto Funcionamento dos controllers Onde ficam as views e coisas assim...
Exercício 1 Criação de um projeto Estrutura de pastas Criação de Controllers Criação de Actions ActionResult Uso de convenções
Exercício 2 Adicionar parâmetros “nome” na actionIndex ‘id’ na action Detalhes URL Routing Adicionar novas rotas
Razor Não substitui o ASPX (alternativa) View engine mais simples Menos código Mais natural ao se misturar com HTML Vários Helpers Funciona com Visual Studio e WebMatrix
Razor - Exemplo <ul> <% for (int i = 0; i < 10; i++) { %>     <li><% =i %></li> <% } %> </ul> ASPX PHP Razor <ul> <?php      for ($i = 0; $i < 10; $i++) { echo("<li>$i</li>");      }     ?> </ul> <ul> @for (inti = 0; i < 10; i++) {     <li>@i</li> } </ul>
Razor - Comentários @*  <div>     Hello World   </div> *@ @{  //var name = “Vinicius Rocha”; //@name } @*  @{  var name = “Vinicius Rocha";    @name   } *@
Razor - Layout Similar ao uso de MasterPages Defina um layout e reuse em outras páginas Page 1 Layout.cshtml Page 2 Page 3
Razor - Layout RenderBody RenderSection RenderPage Helpers RenderPartial RenderAction
RenderBody Corpo da página /Shared/_Layout.cshtml <html>     <head>       <title>Simple Layout</title>     </head>     <body>          @RenderBody()     </body> </html> MyPage.cshtml @{      Layout = “~/Shared/_Layout.cshtml"; } <p>    My content goes here </p>
Razor - Layout Usar RenderSectionpara definir outras partes Obrigatório por padrão /Shared/_Layout.cshtml MyPage.cshtml <html>     <head>       <title>Simple Layout</title>     </head>     <body>  @RenderSection("Menu")         @RenderBody()     </body> </html> @{        Layout = “~/Shared/_Layout.cshtml"; } @section Menu {   <ulid="pageMenu"> <li>Option 1</li> <li>Option 2</li>    </ul> } <p>My content goes here</p>
Razor - Layout RenderPage – adicionar o conteúdo de outra página /Shared/_Layout.cshtml /Shared/_Footer.cshtml <html>     <head>       <title>Simple Layout</title>     </head>     <body>          @RenderSection("Menu")         @RenderBody() @RenderPage(“~/Shared/_Footer.cshtml")     </body> </html> <div class="footer">    © 2011 MIC </div>
Razor – Exercício 3 Criar uma página de Layout Criar uma View que use o Layout Definir uma região - Section Não é session! Criar e chamar uma Page
Passando dados para a View ViewData Dictionary ViewBag Tipo dynamic Novidade no MVC 3 Através de modelos View podem ser fortemente tipadas
MVVM Model – View – ViewModel Dados que serão enviados para a View http://en.wikipedia.org/wiki/Model_View_ViewModel
Exercício 4 Passar dados usando ViewBag Criar um ViewModel Quantidade Categorias Definir uma View fortemente tipada @model Cadastro.ViewModel.HomeViewModel Passar os dados usando ViewModel
Helpers ActionLink TextBox Password DropdownList Action
Helpers Duas formas para usar helpers: <%= Html.TextBox("ActivityType") %> <%: Html.TextBoxFor(m => m.ActivityType) %> <input type="text"        name="ActivityType"        value="Restaurant" />
Exercício 5 Criar um Controller para Categoria Criar as Actions Index Detalhes Apagar Exibir os produtos da categoria
Forumulários HTTP Methods [HttpPost] [HttpGet] [HttpDelete] @Html.BeginForm() Model Binding UpdateModel Aplicações RESTful
Exercício 6 Criar Controller de Produto Actions Index Cadastrar Apagar Editar
Validação Validação no servidor e no cliente Através de DataAnnotations [Required] [Range] [RegularExpression] [StringLength] Localização Fácil extensão
Filtros IAuthorizationFilter OnAuthorization IActionFilter OnActionExecuted OnActionExecuting IResultFilter OnResultExecuted OnResultExecuting(Roda antes de executar o ActionResult) IExceptionFilter OnException
Filtros Implementações ASP.NET MVC AuthorizeAttribute HandleErrorAttribute OutputCacheAttribute RequireHttpsAttribute Sobrescrever os métodos do Controller Classe que herdar de ActionFilterAttribute
Filtros A classe Controller implementa todas as interfaces de filtro OnAuthorization OnException OnActionExecuting OnActionExecuted OnResultExecuting OnResultExecuted
Autenticação [Authorize] Membership provider Classe FormsAuthentication RedirectFromLoginPage() RedirectToLoginPage() SignOut() Web.config
Exercício 7 Criar a tela de Login Configurar o Web.config Adicionar Filtros de validação
Cool Links http://www.asp.net/mvc http://www.codeplex.com/aspnet http://www.sharpshooters.com.br/blog/ http://haacked.com/ http://weblogs.asp.net/scottgu/ http://www.hanselman.com/ http://trainingkit.webcamps.ms/

Mais conteúdo relacionado

Mais procurados

Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTDesenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTRodrigo Fortes
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJSRodrigo Branas
 
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAWilson Mendes
 
Angular JS, você precisa conhecer
Angular JS, você precisa conhecerAngular JS, você precisa conhecer
Angular JS, você precisa conhecermeet2Brains
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Bruno Borges
 

Mais procurados (8)

Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTDesenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
 
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
 
Angular JS, você precisa conhecer
Angular JS, você precisa conhecerAngular JS, você precisa conhecer
Angular JS, você precisa conhecer
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6
 

Semelhante a ASP.NET MVC Mini Curso

Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Introdução de web
Introdução de webIntrodução de web
Introdução de webSedu
 
Html5 - O futuro da Web
Html5 - O futuro da WebHtml5 - O futuro da Web
Html5 - O futuro da WebJose Berardo
 
Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Rogerio Cordeiro
 
Curso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLCurso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLWillian Magalhães
 
FIT - Framework for Integration Tests
FIT - Framework for Integration TestsFIT - Framework for Integration Tests
FIT - Framework for Integration TestsWallaceRoque
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Anderson Araújo
 
Java mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebJava mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebBruno Borges
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4Felipe Pimentel
 
Curso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLCurso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLWillian Magalhães
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de ServletsMarcio Marinho
 

Semelhante a ASP.NET MVC Mini Curso (20)

Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Introdução Wicket
Introdução WicketIntrodução Wicket
Introdução Wicket
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
servlet-requisicoes
servlet-requisicoesservlet-requisicoes
servlet-requisicoes
 
Introdução de web
Introdução de webIntrodução de web
Introdução de web
 
Html5 - O futuro da Web
Html5 - O futuro da WebHtml5 - O futuro da Web
Html5 - O futuro da Web
 
RYSYS Overview
RYSYS OverviewRYSYS Overview
RYSYS Overview
 
Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)
 
Curso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLCurso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTML
 
FIT - Framework for Integration Tests
FIT - Framework for Integration TestsFIT - Framework for Integration Tests
FIT - Framework for Integration Tests
 
Apache Wicket
Apache WicketApache Wicket
Apache Wicket
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
ApresentaçãO Mvc
ApresentaçãO MvcApresentaçãO Mvc
ApresentaçãO Mvc
 
Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
 
Java mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebJava mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento Web
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4
 
Curso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLCurso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTML
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de Servlets
 

ASP.NET MVC Mini Curso

  • 1. ASP.NET MVC Vinícius de Melo Rocha MCP | MCTS | MCPD Microsoft Student Partner vinicius.rocha@studentpartners.com.br
  • 2. Agenda Visão Geral Principais conceitos Razor Model Binding Validação Filtros Autenticação Criar uma aplicação
  • 3. Desenvolvimento <WEB /> Linguagens HTML Javascript CSS AJAX – Isso é uma linguagem? Servidor HTTP Verbs: POST, GET, PUT Sem estado
  • 4. Desenvolvimento com ASP.NET Framework para web do .NET Web Forms Desktop para WEB Produtividade Curva de aprendizagem ASP.NET MVC Implementação do modelo MVC Testável (TDD) Mais controle sobre o código gerado
  • 5. Visão geral WebForms Toolbox e Designer Postbacks Event driven HTML Forms e Viewstate Controles pela WEB Entre outras coisas
  • 6. Porquê ASP.NET MVC Testável (TDD) Maior controle sobre o <código /> SEO | .com/url/amiga Separar responsabilidades Open source
  • 7. ASP.NET MVC o que é isso? Implementação do padrão MVC Alternativa ao Web Forms (ASPX) Desenvolvido usando ASP.NET Público diferente?
  • 8. ASP.NET [ASPX | MVC] O que existe em comum? Routing (System.Web.Routing) Caching Sessions Profiles e Membership Localization
  • 9. Padrão MVC Velho padrão de projeto Acrônimo para: ModelViewController Descrito originalmente em 1979 Applications Programming in Smalltalk-80: How to use Model–View–Controller
  • 10. Como funciona... na web Controller Requisição Passo 1 Requisição é mapeada para o Controller
  • 11. Como funciona... na web Controller Requisição Passo 2 O Controller processa a informação e cria o modelo (Model)
  • 12. Como funciona... na web Controller Requisição View Passo 3 O modelo (Model) é encaminhado para a View
  • 13. Como funciona... na web Controller Requisição View Passo 4 A View apresenta o (Model) em algo legível para o usuário
  • 14. Como funciona... na web Controller Requisição View Response Passo 5 A View envia os modelo formatado para o usuário via Response
  • 15. O que usaremos? Ferramentas IDE Visual Studio 2010 LinguagemC# View engine Razor Banco de Dados(?)
  • 16. Começando... File > New > Project Estrutura do projeto Funcionamento dos controllers Onde ficam as views e coisas assim...
  • 17. Exercício 1 Criação de um projeto Estrutura de pastas Criação de Controllers Criação de Actions ActionResult Uso de convenções
  • 18. Exercício 2 Adicionar parâmetros “nome” na actionIndex ‘id’ na action Detalhes URL Routing Adicionar novas rotas
  • 19. Razor Não substitui o ASPX (alternativa) View engine mais simples Menos código Mais natural ao se misturar com HTML Vários Helpers Funciona com Visual Studio e WebMatrix
  • 20. Razor - Exemplo <ul> <% for (int i = 0; i < 10; i++) { %> <li><% =i %></li> <% } %> </ul> ASPX PHP Razor <ul> <?php for ($i = 0; $i < 10; $i++) { echo("<li>$i</li>"); } ?> </ul> <ul> @for (inti = 0; i < 10; i++) { <li>@i</li> } </ul>
  • 21. Razor - Comentários @* <div> Hello World </div> *@ @{ //var name = “Vinicius Rocha”; //@name } @* @{ var name = “Vinicius Rocha"; @name } *@
  • 22. Razor - Layout Similar ao uso de MasterPages Defina um layout e reuse em outras páginas Page 1 Layout.cshtml Page 2 Page 3
  • 23. Razor - Layout RenderBody RenderSection RenderPage Helpers RenderPartial RenderAction
  • 24. RenderBody Corpo da página /Shared/_Layout.cshtml <html>     <head>       <title>Simple Layout</title>     </head>     <body>          @RenderBody() </body> </html> MyPage.cshtml @{ Layout = “~/Shared/_Layout.cshtml"; } <p> My content goes here </p>
  • 25. Razor - Layout Usar RenderSectionpara definir outras partes Obrigatório por padrão /Shared/_Layout.cshtml MyPage.cshtml <html>     <head>       <title>Simple Layout</title>     </head>     <body>  @RenderSection("Menu")         @RenderBody() </body> </html> @{ Layout = “~/Shared/_Layout.cshtml"; } @section Menu { <ulid="pageMenu"> <li>Option 1</li> <li>Option 2</li> </ul> } <p>My content goes here</p>
  • 26. Razor - Layout RenderPage – adicionar o conteúdo de outra página /Shared/_Layout.cshtml /Shared/_Footer.cshtml <html>     <head>       <title>Simple Layout</title>     </head>     <body>  @RenderSection("Menu")         @RenderBody() @RenderPage(“~/Shared/_Footer.cshtml") </body> </html> <div class="footer">    © 2011 MIC </div>
  • 27. Razor – Exercício 3 Criar uma página de Layout Criar uma View que use o Layout Definir uma região - Section Não é session! Criar e chamar uma Page
  • 28. Passando dados para a View ViewData Dictionary ViewBag Tipo dynamic Novidade no MVC 3 Através de modelos View podem ser fortemente tipadas
  • 29. MVVM Model – View – ViewModel Dados que serão enviados para a View http://en.wikipedia.org/wiki/Model_View_ViewModel
  • 30. Exercício 4 Passar dados usando ViewBag Criar um ViewModel Quantidade Categorias Definir uma View fortemente tipada @model Cadastro.ViewModel.HomeViewModel Passar os dados usando ViewModel
  • 31. Helpers ActionLink TextBox Password DropdownList Action
  • 32. Helpers Duas formas para usar helpers: <%= Html.TextBox("ActivityType") %> <%: Html.TextBoxFor(m => m.ActivityType) %> <input type="text" name="ActivityType" value="Restaurant" />
  • 33. Exercício 5 Criar um Controller para Categoria Criar as Actions Index Detalhes Apagar Exibir os produtos da categoria
  • 34. Forumulários HTTP Methods [HttpPost] [HttpGet] [HttpDelete] @Html.BeginForm() Model Binding UpdateModel Aplicações RESTful
  • 35. Exercício 6 Criar Controller de Produto Actions Index Cadastrar Apagar Editar
  • 36. Validação Validação no servidor e no cliente Através de DataAnnotations [Required] [Range] [RegularExpression] [StringLength] Localização Fácil extensão
  • 37. Filtros IAuthorizationFilter OnAuthorization IActionFilter OnActionExecuted OnActionExecuting IResultFilter OnResultExecuted OnResultExecuting(Roda antes de executar o ActionResult) IExceptionFilter OnException
  • 38. Filtros Implementações ASP.NET MVC AuthorizeAttribute HandleErrorAttribute OutputCacheAttribute RequireHttpsAttribute Sobrescrever os métodos do Controller Classe que herdar de ActionFilterAttribute
  • 39. Filtros A classe Controller implementa todas as interfaces de filtro OnAuthorization OnException OnActionExecuting OnActionExecuted OnResultExecuting OnResultExecuted
  • 40. Autenticação [Authorize] Membership provider Classe FormsAuthentication RedirectFromLoginPage() RedirectToLoginPage() SignOut() Web.config
  • 41. Exercício 7 Criar a tela de Login Configurar o Web.config Adicionar Filtros de validação
  • 42. Cool Links http://www.asp.net/mvc http://www.codeplex.com/aspnet http://www.sharpshooters.com.br/blog/ http://haacked.com/ http://weblogs.asp.net/scottgu/ http://www.hanselman.com/ http://trainingkit.webcamps.ms/