ASP.NET MVC Mini Curso

2,886
-1

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,886
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
100
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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 />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×