4. 4
OnlineTechDay
|2010
Worldwide
Quem sou eu?
Bacharel em Ciência da Computação – UMESP
Pós graduado em Ciência da Computação – UFSCAR
Líder e um dos criadores da comunidade Codificando .Net
(www.codificando.net)
Autor de 3 livros (VB.NET Express – Best Seller, C# Express – Best Seller e
VSTS Rocks)
MVP – Microsoft Most Valuable Professional – Visual Developer – Visual
Basic/Visual Basic .Net
Experiência profissional em multinacionais, consultoria, farmacêutica e
Internet (.com)
MCT (Microsoft Certified Trainer, MCAD (Microsoft Certified Application
Developer e MCP (Microsoft Certified ProfessionalGerente de TI – portal
Minha Vida (www.minhavida.com.br)
• Diretor da Treinando .Net – empresa de treinamentos - plataforma .Net
(www.treinando.net)
5. 5
OnlineTechDay
|2010
Worldwide
ASP.NET MVC é gratuito e permite que os desenvolvedores
facilmente e com simplicidade contrua aplicações web seguindo o
padrão Model-View-Controller. Permite o total controle sobre o
HTML e URLs, permite integração com AJAX e facilita a
implementação de teste driven development.
7. 7
OnlineTechDay
|2010
Worldwide
Origem
1978 por Trygve Reenskaug, durante uma visita científica ao grupo
Smalltalk. Nome inicial Thing Model View Editor.
Diversas tecnologias, como o CakePHP, Ruby On Rails, Django,
Tapestry (java), etc..
O projeto MonoRail (www.castleproject.org) foi o primeiro
framework open source (de código aberto) para ASP.NET.
Scott Guthrie, co-fundador do ASP.NET MVC Framework,
participou da primeira conferência Alt.Net em outubro de
2007, onde falou sobre o framework. A apresentação feita
por ele causou tanta euforia que o framework tornou-se um
produto oficial da Microsoft.
9. 9
OnlineTechDay
|2010
Worldwide
M
V
C
Modelos (Models) – que contém toda a lógica da
aplicação que não faz parte de uma Visão (View). Isso
quer dizer que todas as regras de negócios, validações e
acesso a dados estão contidas no Modelo;
Visões (Views) – é a camada de apresentação, a
interface que será mostrada para o usuário. Uma View
contém todo o HTML e lógica necessários para a correta
exibição das páginas aos usuários;
Controladores (Controllers) – são responsáveis por
interagir entre os modelos e as visões. Contém a lógica
de controle da aplicação que não está presente nas
visões e nos modelos. Controla o fluxo da aplicação.
20. 20
OnlineTechDay
|2010
Worldwide
Actions
Action é o método que o controller executa a
chamada quando a url solicita.
A action do controller deve ser um método
público. O método também nunca devera ser
sobrescrevido e não pode ser um método
estático.
23. 23
OnlineTechDay
|2010
Worldwide
Action Result
ViewResult – HTML e marcações
EmptyResult – Resultado vazio
RedirectResult – Redirect para uma nova url
JsonResult – Representa um resultado JavaScript Object Notation que pode ser usado em uma
aplicação AJAX
JavaScriptResult –JavaScript
ContentResult – Texto
FileContentResult – Arquivo para download
FilePathResult – Caminho de arquivo para download
FileStreamResult – Arquivo para download via file stream
24. 24
OnlineTechDay
|2010
Worldwide
Observe que o método retorna um ViewResult ().
Em vez disso, o método View () da classe base é
chamado. Normalmente, você não retornar um
resultado de ação diretamente, você chama um
dos seguintes métodos da classe base Controller:
28. 28
OnlineTechDay
|2010
Worldwide
Action desconhecida
Se um controle não consegue encontrar uma ação que
está sendo requisitada, ele executa o método
HandleUnknownAction().
Por padrão o erro mostrado é uma página de HTTP
404, mas nós podemos mudar utilizando o código
mostrado abaixo:
30. 30
OnlineTechDay
|2010
Worldwide
Views
Ao contrário do ASP.NET Web Forms, no MVC não
existe uma página ou arquivo que corresponda a
uma página. No ASP.NET MVC o mais parecido com
uma página que temos são as views.
Todas as requisições são feitas para os controllers e
ações, que retornam as views quando solicitado.
31. 31
OnlineTechDay
|2010
Worldwide
Views
Uma view contém um documento (x)HTML e pode
conter scripts para adicionar conteúdos dinâmicos.
Uma característica forte do ASP.NET MVC é que o
ASP.NET não adiciona nenhum código HTML não
solicitado.
32. 32
OnlineTechDay
|2010
Worldwide
<% Response.Write(DateTime.Now);%>
Os delimitadores de script <% e %> marcam o início e
fim de um script, neste caso em C#. Exibe a data e hora
atual e através do Response.Write() renderiza o
conteúdo no navegador. Os scripts podem ser usado
para executar vários escopos e scripts.
Para facilitar, se você chamar <%=, o = já representa um
Response.Write() , simplificando o código.
33. 33
OnlineTechDay
|2010
Worldwide
Views
As Views no ASP.NET MVC ficam na pasta Views. Esta pasta,
por sua vez, possui uma pasta para cada controlador, para
armazenar as views de cada um deles. Se tivermos dois
controladores em nossa aplicação, HomeController e
ClientesController, nós teremos uma pasta em ViewsHome
que irá armazenar as views do respectivo controlador, e uma
pasta Clientes que armazenará as views do controlador
ClientesController.
34. 34
OnlineTechDay
|2010
Worldwide
ViewData
ViewData é um dicionário que possui como chave somente strings.
Você pode passar para a ViewData qualquer tipo de objeto.
Um controller passa informações para as views usando ViewData.
O código abaixo mostra um exemplo de como um controlador pode
passar uma lista de clientes para uma view através deste dicionário:
36. 36
OnlineTechDay
|2010
Worldwide
HTML Helpers
HTML Helpers podem tornar a tarefa de fazer views mais
fácil. Eles simplesmente renderizam algum código HTML
que pode ser usado em todas as suas views
simplesmente chamando Html.NomeDoHelper.
Alguns Helpers já estão incluídos no ASP.NET MVC
Framework, e outros podem ser customizados de acordo
com as nossas necessidades.
37. 37
OnlineTechDay
|2010
Worldwide
HTML Helpers
O ASP.NET MVC framework inclui os seguintes (principais) HTML Helpers:
Html.ActionLink()
Html.BeginForm()
Html.CheckBox()
Html.DropDownList()
Html.EndForm()
Html.Hidden()
Html.ListBox()
Html.Password()
Html.RadioButton()
Html.TextArea()
Html.TextBox()
38. 38
OnlineTechDay
|2010
Worldwide
HTML Enconde
Toda vez que vamos mostrar em alguma view o conteúdo de
algum campo que permitimos que o usuário informe
livremente, devemos usar Html.Encode() para que os
caracteres sejam codificados. Se o usuário informar no nome,
por exemplo, <script>alert(‘HAAA’)</script> e nós usarmos o
Html.Encode(), o que será mostrado será o que o usuário
realmente escreveu ao invés de executar o script.
Separar a aplicação nessas três partes é muito interessante. Você pode, por exemplo, modificar todo o layout de suas páginas sem encostar no restante da aplicação, modificando apenas as Views.
Um projeto ASP.NET MVC contém, basicamente, as seguintes pastas:
App_Data – pasta que armazena os arquivos do banco de dados, como, por exemplo, um arquivo de banco de dados do SQL Server Express;
Content – armazena os arquivos CSS, as imagens, ou algum outro conteúdo estático da aplicação;
Controllers – os controladores criados na aplicação devem ser salvos nesta pasta;
Models – os modelos criados na aplicação deverão ser salvos nesta pasta;
Scripts – nesta pasta devem ser salvos os javascripts. Alguns arquivos/bibliotecas de JavaScript já são criados juntamente com a aplicação, como a biblioteca JQuery, e Microsoft Ajax, e Microsoft MVC Ajax;
Views – as visões criadas (páginas, views) devem ser salvas nesta pasta;
É importante salvar sempre os Controladores na pasta Controllers, os modelos na pasta Models e as visões na pasta Views, os scripts na pasta Scripts.
O ASP.NET MVC sugere o uso dessa convenção sobre a configuração para tornar a aplicação fácil de ser entendida pelos outros e para manter certa organização. Cada coisa tem um lugar padrão onde deve estar, e lá deverá ser encontrado.
Criar um formulário simples
Criar um helper
Criar um helper método extensao