ASP.NET MVC Mini Curso

Post on 24-May-2015

2.631 views 9 download

Transcript of ASP.NET MVC Mini Curso

ASP.NET MVC

Vinícius de Melo RochaMCP | MCTS | MCPDMicrosoft Student Partnervinicius.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

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

o que é isso?

ASP.NET [ASPX | MVC]

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

O que existe em comum?

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 1Requisição é mapeada para o Controller

Como funciona... na web

Controller

Requisição

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

Como funciona... na web

Controller

Requisição

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

View

Como funciona... na web

Controller

Requisição

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

View

Como funciona... na web

Controller

Requisição

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

View Response

O que usaremos?

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

Ferramentas

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 action Index ‘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

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>

Razor - Comentários

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

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

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

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

Razor - Layout

RenderBody RenderSection RenderPage Helpers

RenderPartial RenderAction

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

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

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

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_View

Model

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/blo

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