ASP.NET MVC Mini Curso

42
ASP.NET MVC Vinícius de Melo Rocha MCP | MCTS | MCPD Microsoft Student Partner [email protected]

Transcript of ASP.NET MVC Mini Curso

Page 1: ASP.NET MVC Mini Curso

ASP.NET MVC

Vinícius de Melo RochaMCP | MCTS | MCPDMicrosoft Student [email protected]

Page 2: ASP.NET MVC Mini Curso

Agenda

Visão Geral Principais conceitos

Razor Model Binding Validação Filtros Autenticação

Criar uma aplicação

Page 3: ASP.NET MVC Mini Curso

Desenvolvimento <WEB />

Linguagens HTML Javascript CSS AJAX – Isso é uma linguagem?

Servidor HTTP Verbs: POST, GET, PUT Sem estado

Page 4: ASP.NET MVC Mini Curso

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

Page 5: ASP.NET MVC Mini Curso

Visão geral WebForms

Toolbox e Designer Postbacks Event driven HTML Forms e Viewstate Controles pela WEB Entre outras coisas

Page 6: ASP.NET MVC Mini Curso

Porquê ASP.NET MVC

Testável (TDD) Maior controle sobre o <código /> SEO | .com/url/amiga Separar responsabilidades Open source

Page 7: ASP.NET MVC Mini Curso

ASP.NET MVC

Implementação do padrão MVC Alternativa ao Web Forms (ASPX) Desenvolvido usando ASP.NET Público diferente?

o que é isso?

Page 8: ASP.NET MVC Mini Curso

ASP.NET [ASPX | MVC]

Routing (System.Web.Routing) Caching Sessions Profiles e Membership Localization

O que existe em comum?

Page 9: ASP.NET MVC Mini Curso

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

Page 10: ASP.NET MVC Mini Curso

Como funciona... na web

Controller

Requisição

Passo 1Requisição é mapeada para o Controller

Page 11: ASP.NET MVC Mini Curso

Como funciona... na web

Controller

Requisição

Passo 2O Controller processa a informação e cria o modelo (Model)

Page 12: ASP.NET MVC Mini Curso

Como funciona... na web

Controller

Requisição

Passo 3O modelo (Model) é encaminhado para a View

View

Page 13: ASP.NET MVC Mini Curso

Como funciona... na web

Controller

Requisição

Passo 4A View apresenta o (Model) em algo legível para o usuário

View

Page 14: ASP.NET MVC Mini Curso

Como funciona... na web

Controller

Requisição

Passo 5A View envia os modelo formatado para o usuário via Response

View Response

Page 15: ASP.NET MVC Mini Curso

O que usaremos?

IDE Visual Studio 2010 Linguagem C# View engine Razor Banco de Dados (?)

Ferramentas

Page 16: ASP.NET MVC Mini Curso

Começando...

File > New > Project Estrutura do projeto Funcionamento dos controllers Onde ficam as views e coisas assim...

Page 17: ASP.NET MVC Mini Curso

Exercício 1

Criação de um projeto Estrutura de pastas Criação de Controllers Criação de Actions ActionResult Uso de convenções

Page 18: ASP.NET MVC Mini Curso

Exercício 2

Adicionar parâmetros “nome” na action Index ‘id’ na action Detalhes

URL Routing Adicionar novas rotas

Page 19: ASP.NET MVC Mini Curso

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

Page 20: ASP.NET MVC Mini Curso

Razor - Exemplo

ASPX

PHP

Razor

<ul> <% for (int i = 0; i < 10; i++) { %> <li><% =i %></li> <% } %></ul>

<ul> <?php for ($i = 0; $i < 10; $i++) { echo("<li>$i</li>"); } ?></ul>

<ul> @for (int i = 0; i < 10; i++) { <li>@i</li> }</ul>

Page 21: ASP.NET MVC Mini Curso

Razor - Comentários

@* <div> Hello World </div>*@

@* @{ var name = “Vinicius Rocha"; @name }*@

@{ //var name = “Vinicius Rocha”; //@name}

Page 22: ASP.NET MVC Mini Curso

Razor - Layout

Similar ao uso de Master Pages Defina um layout e reuse em outras

páginas

Layout.cshtml

Page 1

Page 2

Page 3

Page 23: ASP.NET MVC Mini Curso

Razor - Layout

RenderBody RenderSection RenderPage Helpers

RenderPartial RenderAction

Page 24: ASP.NET MVC Mini Curso

RenderBody

Corpo da página

<html>    <head>      <title>Simple Layout</title>    </head>    <body>         @RenderBody() </body></html>

/Shared/_Layout.cshtml

@{ Layout = “~/Shared/_Layout.cshtml";}

<p> My content goes here</p>

MyPage.cshtml

Page 25: ASP.NET MVC Mini Curso

Razor - Layout

Usar RenderSection para definir outras partes

Obrigatório por padrão

<html>    <head>      <title>Simple Layout</title>    </head>    <body>  @RenderSection("Menu")        @RenderBody() </body></html>

/Shared/_Layout.cshtml

@{ Layout = “~/Shared/_Layout.cshtml";}

@section Menu { <ul id="pageMenu">

<li>Option 1</li><li>Option 2</li>

</ul>}<p>My content goes here</p>

MyPage.cshtml

Page 26: ASP.NET MVC Mini Curso

Razor - Layout

RenderPage – adicionar o conteúdo de outra página

<html>    <head>      <title>Simple Layout</title>    </head>    <body>  @RenderSection("Menu")        @RenderBody() @RenderPage(“~/Shared/_Footer.cshtml") </body></html>

/Shared/_Layout.cshtml

<div class="footer">   © 2011 MIC</div>

/Shared/_Footer.cshtml

Page 27: ASP.NET MVC Mini Curso

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

Page 28: ASP.NET MVC Mini Curso

Passando dados para a View ViewData

Dictionary ViewBag

Tipo dynamic Novidade no MVC 3

Através de modelos View podem ser fortemente tipadas

Page 29: ASP.NET MVC Mini Curso

MVVM

Model – View – ViewModel Dados que serão enviados para a

View http://en.wikipedia.org/wiki/Model_View_View

Model

Page 30: ASP.NET MVC Mini Curso

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

Page 31: ASP.NET MVC Mini Curso

Helpers

ActionLink TextBox Password DropdownList Action

Page 32: ASP.NET MVC Mini Curso

Helpers

Duas formas para usar helpers:

<%= Html.TextBox("ActivityType") %>

<%: Html.TextBoxFor(m => m.ActivityType) %>

<input type="text" name="ActivityType" value="Restaurant" />

Page 33: ASP.NET MVC Mini Curso

Exercício 5

Criar um Controller para Categoria Criar as Actions

Index Detalhes Apagar

Exibir os produtos da categoria

Page 34: ASP.NET MVC Mini Curso

Forumulários

HTTP Methods [HttpPost] [HttpGet] [HttpDelete]

@Html.BeginForm() Model Binding

UpdateModel Aplicações RESTful

Page 35: ASP.NET MVC Mini Curso

Exercício 6

Criar Controller de Produto Actions

Index Cadastrar Apagar Editar

Page 36: ASP.NET MVC Mini Curso

Validação

Validação no servidor e no cliente Através de DataAnnotations

[Required] [Range] [RegularExpression] [StringLength]

Localização Fácil extensão

Page 37: ASP.NET MVC Mini Curso

Filtros

IAuthorizationFilter OnAuthorization

IActionFilter OnActionExecuted OnActionExecuting

IResultFilter OnResultExecuted OnResultExecuting (Roda antes de executar o

ActionResult)

IExceptionFilter OnException

Page 38: ASP.NET MVC Mini Curso

Filtros

Implementações ASP.NET MVC AuthorizeAttribute HandleErrorAttribute OutputCacheAttribute RequireHttpsAttribute

Sobrescrever os métodos do Controller

Classe que herdar de ActionFilterAttribute

Page 39: ASP.NET MVC Mini Curso

Filtros

A classe Controller implementa todas as interfaces de filtro OnAuthorization OnException OnActionExecuting OnActionExecuted OnResultExecuting OnResultExecuted

Page 40: ASP.NET MVC Mini Curso

Autenticação

[Authorize] Membership provider Classe FormsAuthentication

RedirectFromLoginPage() RedirectToLoginPage() SignOut()

Web.config

Page 41: ASP.NET MVC Mini Curso

Exercício 7

Criar a tela de Login Configurar o Web.config Adicionar Filtros de validação

Page 42: ASP.NET MVC Mini Curso

Cool Links

http://www.asp.net/mvc http://www.codeplex.com/aspnet http://www.sharpshooters.com.br/blo

g/ http://haacked.com/ http://weblogs.asp.net/scottgu/ http://www.hanselman.com/ http://trainingkit.webcamps.ms/