Para entender de forma assertiva o ASP.NET e com todos os seus aspectos, é preciso recorrer a manuais e livros que possam ajudar. É aí que livros como este entram em cena.
Como a ampla adoção do ASP.NET MVC em todo o mundo, os livros, como o
que você está segurando, são muito mais importantes. O Fabrício e o Márcio montaram um excelente guia técnico, que lhe dará toda a informação necessária para expandir sua compreensão do ASP.NET MVC bem como conceitos maiores que cercam a plataforma ASP.NET. À medida que avançamos para melhor unificar a plata-
v
Casa do Código
forma ASP.NET, você certamente vai querer ter uma visão clara e profunda do que ASP.NET MVC tem para oferecer. Eu espero que você se divirta com volume de
aprendizado sobre ASP.NET que o espera neste livro. Aproveite o livro do Fabricio e do Márcio.
Scott Hanselman
Principal Program Manager Azure and Web Tools
Microsoft Corp.
vi
Casa do Código
Sumário
Sumário
1
Sua primeira aplicação
1
1.1
E então, vamos começar? . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Código fonte e lista de discussão . . . . . . . . . . . . . . . . . . . . . .
8
2
Entendendo a estrutura de uma aplicação ASP.NET MVC
9
2.1
ASP.NET MVC? Por quê? . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.2
Voltando à nossa primeira aplicação . . . . . . . . . . . . . . . . . . .
12
2.3
Um pouco mais sobre convenções . . . . . . . . . . . . . . . . . . . . .
13
2.4
Navegação baseada em rotas . . . . . . . . . . . . . . . . . . . . . . . .
15
2.5
Concluindo e desafiando . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3
Projetando a aplicação Cadê meu médico?
19
3.1
Cadê meu médico?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2
Criando a aplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.3
Referenciando bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4
Criando o layout da aplicação . . . . . . . . . . . . . . . . . . . . . . . 30
3.5
Concluindo e desafiando . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4
Models: Desenhando os modelos da nossa aplicação
41
4.1
Model?! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2
Abordagens para a criação de Models . . . . . . . . . . . . . . . . . . . 42
4.3
O Entity Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4
O modelo primeiro? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
4.5
Banco de dados primeiro? . . . . . . . . . . . . . . . . . . . . . . . . .
58
4.6
Model first x Code first: Quando utilizar um ou outro? . . . . . . . . . 69
4.7
Adicionando atributos de validação nos modelos . . . . . . . . . . . .
71
vii
Sumário
Casa do Código
5
Controllers: Adicionando comportamento a nossa aplicação
77
5.1
Vamos controlar a aplicação? . . . . . . . . . . . . . . . . . . . . . . . 78
5.2
Entendendo o papel dos Controllers e Actions . . . . . . . . . . . . . . 79
5.3
Cadê meu médico: o que faremos? . . . . . . . . . . . . . . . . . . . .
83
5.4
Cadê meu médico: CRUDs . . . . . . . . . . . . . . . . . . . . . . . . . 84
6
Views: interagindo com o usuário
105
6.1
Visões?! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.2
Conceito de Engenho de renderização . . . . . . . . . . . . . . . . . 106
6.3
ASPX ou ASP.NET Razor? . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.4
ASP.NET Razor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.5
Diferenças na prática . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.6
Helpers?! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.7
Algumas outras vantagens . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.8
Mobilidade: Sua consulta de médicos em dispositivos móveis . . . . . 120
7
Segurança: Criando sua área administrativa
127
7.1
Área administrativa?! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
7.2
Criando a área administrativa . . . . . . . . . . . . . . . . . . . . . . . 128
7.3
Apesar do login, nada é bloqueado. E agora?! . . . . . . . . . . . . . . 139
7.4
Filtros de ação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
7.5
Implementando o filtro AutorizacaoDeAcesso . . . . . . . . . . . . . 139
7.6
Concluindo e desafiando . . . . . . . . . . . . . . . . . . . . . . . . . . 145
8
Publicando sua aplicação
147
8.1
Pré-requisitos para hospedar aplicações ASP.NET MVC 4 . . . . . . . 148
8.2
Ambientes de host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
8.3
Computação em nuvem. Por quê? . . . . . . . . . . . . . . . . . . . . . 150
8.4
O Windows Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
8.5
Windows Azure Websites . . . . . . . . . . . . . . . . . . . . . . . . . . 152
8.6
Publicando a aplicação Cadê Meu Médico? . . . . . . . . . . . . . . . 154
8.7
Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166