ASP.NET MVC Mini Curso
-
Upload
vinicius-rocha -
Category
Documents
-
view
2.631 -
download
9
Transcript of ASP.NET MVC Mini Curso
ASP.NET MVC
Vinícius de Melo RochaMCP | MCTS | MCPDMicrosoft Student [email protected]
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/