Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ASP.NET MVC Mini Curso

3,136 views

Published on

  • Be the first to comment

ASP.NET MVC Mini Curso

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

×