Escolar Documentos
Profissional Documentos
Cultura Documentos
br
ASP.NET MVC
Agenda
Viso Geral Principais conceitos
Razor Model Binding Validao Filtros Autenticao
Servidor
HTTP Verbs: POST, GET, PUT Sem estado
ASP.NET MVC
Implementao do modelo MVC Testvel (TDD) Mais controle sobre o cdigo gerado
Open source
ASP.NET MVC
o que isso?
Implementao do padro MVC Alternativa ao Web Forms (ASPX) Desenvolvido usando ASP.NET
Pblico diferente?
Padro MVC
Velho padro de projeto
Acrnimo para: Model View Controller Descrito originalmente em 1979
Controller
Passo 1
Requisio mapeada para o Controller
Controller
Passo 2
O Controller processa a informao e cria o modelo (Model)
Controller
View
Passo 3
O modelo (Model) encaminhado para a View
Controller
View
Passo 4
A View apresenta o (Model) em algo legvel para o usurio
Controller
View
Response
Passo 5
A View envia os modelo formatado para o usurio via Response
O que usaremos?
Ferramentas
IDE Visual Studio 2010
Linguagem C# View engine Razor
Comeando...
File > New > Project Estrutura do projeto Funcionamento dos controllers Onde ficam as views e coisas assim...
Exerccio 1
Criao de um projeto Estrutura de pastas Criao de Controllers Criao de Actions ActionResult Uso de convenes
Exerccio 2
Adicionar parmetros
nome na action Index
id na action Detalhes
URL Routing
Adicionar novas rotas
Razor
No substitui o ASPX (alternativa) View engine mais simples Menos cdigo Mais natural ao se misturar com HTML Vrios Helpers Funciona com Visual Studio e WebMatrix
Razor - Exemplo
ASPX
<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>
PHP
Razor
Razor - Comentrios
@* <div> Hello World </div> *@
Razor - Layout
Similar ao uso de Master Pages Defina um layout e reuse em outras pginas
Page 1 Page 2
Layout.cshtml Page 3
Razor - Layout
RenderBody
RenderSection RenderPage
Helpers
RenderPartial RenderAction
RenderBody
Corpo da pgina
/Shared/_Layout.cshtml
<html> <head> MyPage.cshtml <title>Simple Layout</title> </head> @{ <body> Layout = ~/Shared/_Layout.cshtml"; @RenderBody() } </body> </html> <p> My content goes here </p>
Razor - Layout
Usar RenderSection para definir outras partes Obrigatrio por padro
/Shared/_Layout.cshtml
<html> <head> @{ <title>Simple Layout</title> Layout = ~/Shared/_Layout.cshtml"; </head> } <body> @RenderSection("Menu") @section Menu { @RenderBody() <ul id="pageMenu"> </body> <li>Option 1</li> </html> <li>Option 2</li> </ul> } <p>My content goes here</p>
MyPage.cshtml
Razor - Layout
RenderPage adicionar o contedo de outra
pgina
/Shared/_Layout.cshtml /Shared/_Footer.cshtml
<html> <div class="footer"> <head> 2011 MIC <title>Simple Layout</title> </div> </head> <body> @RenderSection("Menu") @RenderBody() @RenderPage(~/Shared/_Footer.cshtml") </body> </html>
Razor Exerccio 3
Criar uma pgina de Layout Criar uma View que use o Layout Definir uma regio - Section
No session!
ViewBag
Tipo dynamic Novidade no MVC 3
MVVM
Model View ViewModel Dados que sero enviados para a View
http://en.wikipedia.org/wiki/Model_View_ViewModel
Exerccio 4
Passar dados usando ViewBag Criar um ViewModel
Quantidade Categorias
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" />
Exerccio 5
Criar um Controller para Categoria Criar as Actions
Index Detalhes Apagar
Forumulrios
HTTP Methods
[HttpPost] [HttpGet] [HttpDelete]
Aplicaes RESTful
Exerccio 6
Criar Controller de Produto Actions
Index Cadastrar Apagar Editar
Validao
Validao no servidor e no cliente Atravs de DataAnnotations
[Required] [Range] [RegularExpression] [StringLength]
Filtros
IAuthorizationFilter
OnAuthorization
IActionFilter
OnActionExecuted OnActionExecuting
IResultFilter
OnResultExecuted OnResultExecuting (Roda antes de executar o ActionResult)
IExceptionFilter
OnException
Filtros
Implementaes ASP.NET MVC
AuthorizeAttribute HandleErrorAttribute OutputCacheAttribute RequireHttpsAttribute
Filtros
A classe Controller implementa todas as
interfaces de filtro
OnAuthorization
OnException OnActionExecuting
OnActionExecuted
OnResultExecuting OnResultExecuted
Autenticao
[Authorize] Membership provider Classe FormsAuthentication
RedirectFromLoginPage() RedirectToLoginPage() SignOut()
Web.config
Exerccio 7
Criar a tela de Login Configurar o Web.config Adicionar Filtros de validao
Cool Links
http://www.asp.net/mvc http://www.codeplex.com/aspnet http://www.sharpshooters.com.br/blog/ http://haacked.com/ http://weblogs.asp.net/scottgu/ http://www.hanselman.com/ http://trainingkit.webcamps.ms/