10714a-ptb-companion.pdf

188
Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 1 O F F I C I A L M I C R O S O F T L E A R N I N G P R O D U C T 10714A Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 Conteúdo complementar

Upload: marco

Post on 16-Jan-2016

20 views

Category:

Documents


0 download

DESCRIPTION

10714A-PTB-Companion.pdf

TRANSCRIPT

Page 1: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 1

O F F I C I A L M I C R O S O F T L E A R N I N G P R O D U C T

10714A Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Conteúdo complementar

Page 2: 10714A-PTB-Companion.pdf

2 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

As informações incluídas neste documento, inclusive URLs e referências a outros sites na Internet, estão sujeitas a alteração sem aviso prévio. Salvo indicação contrária, os nomes de empresas, organizações, produtos, nomes de domínios, endereços de email, logotipos, pessoas, lugares e acontecimentos aqui mencionados são fictícios e de nenhuma forma pretendem representar empresas, organizações, produtos, nomes de domínios, endereços de email, logotipos, pessoas, lugares ou acontecimentos. O cumprimento das leis de direitos autorais é de exclusiva responsabilidade do usuário. Sem limitar os direitos autorais, nenhuma parte deste documento pode ser reproduzida, armazenada ou apresentada em um sistema de recuperação ou transmitida de qualquer forma ou por qualquer meio (eletrônico, mecânico, fotocópia, gravação ou de outra forma), ou para qualquer fim, sem a permissão por escrito da Microsoft Corporation.

A Microsoft pode ter patentes, patentes pendentes, marcas comerciais, direitos autorais ou outros direitos de propriedade intelectual que abordam o assunto em questão neste documento. Exceto se expressamente previsto em um acordo de licença por escrito da Microsoft, o fornecimento deste documento não concede licença para essas patentes, marcas comerciais, direitos autorais ou outra propriedade intelectual.

Os nomes de fabricantes, produtos ou URLs fornecidos servem apenas para fins informativos e a Microsoft não faz promessas nem oferece garantias expressas, implícitas ou legais referentes a esses fabricantes ou ao uso dos produtos com qualquer tecnologia Microsoft. A inclusão de um fabricante ou produto não implica endosso do fabricante ou produto por parte da Microsoft. São fornecidos links para sites de terceiros. Esses sites não são controlados pela Microsoft, a qual não se responsabiliza pelo conteúdo de qualquer site vinculado ou qualquer link existente em um site vinculado, ou qualquer mudança ou atualização em tais sites. A Microsoft não se responsabiliza pela divulgação por webcast ou qualquer outra forma de transmissão recebida de qualquer site vinculado. A Microsoft está fornecendo esses links para sua conveniência e a inclusão de tais links não implica endosso do site ou de outros produtos nele contidos por parte da Microsoft.

© 2011 Microsoft Corporation. Todos os direitos reservados.

Microsoft e as marcas comerciais listadas em http://www.microsoft.com/about/legal/en/us/IntellectualProperty/Trademarks/EN-US.aspx são marcas comerciais do grupo de empresas da Microsoft.Todas as outras marcas comerciais pertencem aos respectivos proprietários.

Número do produto: 10714A

Lançamento: 06/2011

Page 3: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 3

TERMOS DE LICENÇA DA MICROSOFT

OFFICIAL MICROSOFT LEARNING PRODUCTS — EDIÇÃO DO ALUNO — Versões de pré-lançamento e final Estes termos de licença são um acordo entre a Microsoft Corporation e você. Por favor, leia-os. Eles se aplicam ao conteúdo licenciado supracitado, que inclui a mídia na qual ele está contido, caso haja uma. Os termos também se aplicam aos seguintes itens da Microsoft:

• atualizações,

• suplementos,

• serviços via Internet e

• serviços de suporte

referentes a este conteúdo licenciado, a menos que outros termos acompanhem esses itens. Nesse caso, tais termos se aplicam.

Ao usar o conteúdo licenciado, você estará aceitando estes termos. Se você não os aceitar, não use o conteúdo licenciado.

Se cumprir estes termos de licença, você terá os direitos a seguir.

1. VISÃO GERAL.

Conteúdo Licenciado. O conteúdo licenciado inclui software, materiais impressos, materiais acadêmicos (online e eletrônicos) e qualquer mídia associada.

Modelo de Licença. O conteúdo licenciado é licenciado por cópia por dispositivo.

2. DIREITOS DE INSTALAÇÃO E USO.

a. Dispositivo Licenciado. O dispositivo licenciado é o dispositivo no qual você usa o conteúdo licenciado. Você poderá instalar e usar uma única cópia do conteúdo licenciado no dispositivo licenciado.

b. Dispositivo Portátil. Você poderá instalar uma outra cópia em um dispositivo portátil para uso pelo único usuário principal do dispositivo licenciado.

c. Separação de Componentes. Os componentes do conteúdo licenciado são licenciados como uma única unidade. Você não poderá separar os componentes e instalá-los em dispositivos diferentes.

d. Programas de Terceiros. O conteúdo licenciado poderá conter programas de terceiros. Estes termos de licença se aplicarão ao uso que você fizer desses programas de terceiros, a menos que outros termos acompanhem esses programas.

Page 4: 10714A-PTB-Companion.pdf

4 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

3. VERSÕES DE PRÉ-LANÇAMENTO. Se o conteúdo licenciado for uma versão de pré-lançamento (“beta”), as seguintes cláusulas serão aplicáveis além de outros termos neste contrato:

a. Conteúdo Licenciado de Pré-Lançamento. Este conteúdo licenciado é uma versão de pré-lançamento. Ele não pode conter as mesmas informações e/ou funcionar da mesma maneira que uma versão definitiva do conteúdo licenciado. Podemos alterá-lo na versão comercial definitiva. Além disso, não podemos lançar uma versão comercial. Você deverá informar o disposto acima de maneira clara e visível a todos os Alunos participantes de uma Sessão de Treinamento Autorizado e a todos os Instrutores que ministrarem treinamento nessas Sessões de Treinamento Autorizado. Além disso, informe que você ou a Microsoft não tem qualquer obrigação de fornecer nenhum outro conteúdo, incluindo, mas sem limitação, a versão lançada em caráter definitivo do Conteúdo Licenciado do Curso.

b. Comentários. Se você concordar em enviar à Microsoft comentários sobre o conteúdo licenciado, estará dando à Microsoft, a título gratuito, o direito de usar, compartilhar e comercializar seus comentários de qualquer maneira e para qualquer finalidade. Além disso, você concede a terceiros, sem custos, todos os direitos de patente necessários para que seus produtos, suas tecnologias e seus serviços usem, ou estabeleçam conexão com, qualquer parte específica de um software, Conteúdo Licenciado ou serviço da Microsoft que inclua os comentários. Você não deverá enviar comentários sujeitos a uma licença que exija da Microsoft o licenciamento do seu software ou da sua documentação a terceiros em virtude da inclusão dos seus comentários nesses elementos. Esses direitos permanecerão em vigor após o término deste contrato.

c. Informações Confidenciais. O conteúdo licenciado, incluindo qualquer visualizador, interface de usuário, recursos e documentação que porventura estejam presentes no conteúdo licenciado, é confidencial e de propriedade da Microsoft e de seus fornecedores.

i. Uso. Durante cinco anos após a instalação do conteúdo licenciado ou do seu lançamento comercial, o que ocorrer primeiro, você não poderá divulgar informações confidenciais a terceiros. Você poderá divulgar informações confidenciais apenas aos seus funcionários e consultores que tenham a necessidade de conhecer essas informações. Você deverá firmar contratos por escrito com eles para proteger essas informações confidenciais, pelo menos, de maneira idêntica a este contrato.

ii. Continuidade da obrigação. Seu dever de proteger as informações confidenciais permanecerá após o término deste contrato.

iii. Exclusões. Você poderá divulgar informações confidenciais para atender ordens judiciais ou do Poder Público. Você deverá enviar à Microsoft uma notificação prévia por escrito permitindo que ela busque uma medida cautelar ou de outra forma proteja as informações. Entre as informações confidenciais não estão informações que

• passem a ser de conhecimento público através de atos lícitos;

• você tenha recebido de terceiros que não violaram obrigações de sigilo para com a Microsoft ou seus fornecedores; ou

• você tenha desenvolvido de forma independente.

d. Prazo. O prazo deste contrato de versões de pré-lançamento é (i) a data que a Microsoft informar a você como data final de uso da versão beta, ou (ii) o lançamento comercial da versão definitiva do conteúdo licenciado, o que for anterior (“prazo do beta”).

Page 5: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 5

e. Uso. Você deverá deixar de usar todas as cópias da versão beta na rescisão ou no término dessa versão, bem como destruir todas as cópias dela em seu poder ou sob seu controle.

f. Cópias. A Microsoft informará os Centros de Treinamento Autorizados se eles podem produzir cópias da versão beta (seja na versão impressa e/ou em CD) e distribuirá essas cópias aos Alunos e/ou Instrutores. Caso a Microsoft permita essa distribuição, você deverá cumprir todos os termos adicionais que a Microsoft apresentar em relação a essas cópias e à distribuição.

4. DIREITOS DE USO E/OU REQUISITOS DE LICENCIAMENTO ADICIONAIS.

a. Elementos de Mídia e Modelos. Você poderá usar imagens, clip-arts, animações, sons, músicas, formas, videoclipes e modelos fornecidos com o conteúdo licenciado somente para seu uso em treinamento pessoal. Caso deseje usar esses elementos de mídia ou modelos para qualquer outra finalidade, vá para www.microsoft.com/permission para saber se é permitido.

b. Materiais Acadêmicos. Caso o conteúdo licenciado inclua materiais acadêmicos (como white papers, laboratórios, testes, folhas de dados e perguntas freqüentes), você poderá copiar e usar esses materiais. Não é permitido fazer modificações nos materiais acadêmicos nem imprimir livros (eletrônicos ou em versão impressa) integralmente. No caso da reprodução de materiais acadêmicos, você concorda que:

• o uso dos materiais acadêmicos será exclusivamente para sua referência ou treinamento pessoal;

• você não republicará nem postará os materiais acadêmicos em nenhum computador de rede, nem os transmitirá em nenhuma mídia;

• você incluirá o aviso de direitos autorais original dos materiais acadêmicos, ou um aviso de direitos autorais em benefício da Microsoft no formato indicado abaixo:

Formato do Aviso: © 2011 Reimpresso para uso como referência pessoal apenas com a permissão da Microsoft Corporation. Todos os direitos reservados.

Microsoft e Windows são marcas registradas ou comerciais da Microsoft Corporation nos Estados Unidos e/ou em outros países. Outros nomes de empresas e produtos aqui mencionados são marcas comerciais de seus respectivos proprietários.

c. Código Distribuível. O conteúdo licenciado poderá conter código que você tem permissão de distribuir nos programas que desenvolver, respeitados os termos abaixo.

i. Direito de Uso e Distribuição. O código e os arquivos de texto listados abaixo constituem “Código Distribuível”.

• Arquivos REDIST.TXT. Você poderá copiar e distribuir a forma de código objeto do código listado nos arquivos REDIST.TXT.

• Código de Exemplo. Você poderá modificar, copiar e distribuir a forma de código objeto e código-fonte do código identificado como “exemplo” (“sample”).

• Distribuição por Terceiros. Você poderá permitir que os distribuidores de seus programas copiem e distribuam o Código Distribuível como parte desses programas.

ii. Requisitos de Distribuição. Para qualquer Código Distribuível que distribua, você deverá:

• adicionar ao Código Distribuível, em seus programas, funcionalidades primárias significativas;

• exigir que os distribuidores e usuários finais externos aceitem termos que protejam o código, pelo menos tanto quanto este contrato;

Page 6: 10714A-PTB-Companion.pdf

6 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

• exibir o seu aviso de direitos autorais válido em seus programas; e

• indenizar, isentar de responsabilidades e defender a Microsoft de quaisquer reivindicações, incluindo honorários advocatícios, decorrentes da utilização ou distribuição de seus programas.

iii. Restrições à Distribuição. É vedado:

• alterar quaisquer avisos de direitos autorais, marcas registradas ou patentes que apareçam no Código Distribuível;

• usar marcas registradas da Microsoft nos nomes de seus programas ou de forma a sugerir que seus programas derivam da Microsoft ou são endossados por ela;

• distribuir Código Distribuível para execução em uma plataforma que não seja Windows;

• incluir Código Distribuível em programas mal-intencionados, enganosos ou ilícitos; ou

• modificar ou distribuir o código-fonte de qualquer Código Distribuível de modo que qualquer parte do mesmo fique sujeita a uma Licença Excluída. Uma Licença Excluída significa qualquer licença que requeira, como condição de uso, modificação ou distribuição, que:

• o código seja divulgado ou distribuído na forma de código-fonte; ou

• outras pessoas tenham o direito de modificá-lo.

5. SERVIÇOS VIA INTERNET. A Microsoft poderá fornecer serviços via Internet com o conteúdo licenciado. Ela poderá alterá-los ou cancelá-los a qualquer momento. Você não poderá usar esses serviços de maneira que possa danificá-los ou prejudicar seu uso por outros. Em nenhuma hipótese você poderá usar os serviços para tentar obter acesso não autorizado a qualquer serviço, dado, conta ou rede.

6. ESCOPO DA LICENÇA. O conteúdo licenciado é licenciado, não vendido. Este contrato apenas outorga a você alguns direitos de uso do conteúdo licenciado. A Microsoft se reserva todos os outros direitos. Salvo quando a legislação aplicável lhe conceder mais direitos do que esta limitação, você só poderá usar o conteúdo licenciado conforme expressamente permitido neste contrato. Ao fazer isso, você deverá cumprir quaisquer limitações técnicas no conteúdo licenciado que permitam o seu uso apenas de determinadas maneiras. É vedado(a):

• a divulgação dos resultados de qualquer teste de desempenho do conteúdo licenciado a terceiros sem o prévio consentimento, por escrito, da Microsoft;

• a resolução de limitações técnicas no conteúdo licenciado;

• a realização de engenharia reversa, descompilação ou desmontagem do conteúdo licenciado, exceto e somente na medida em que esta atividade seja expressamente permitida pela legislação aplicável, não obstante esta limitação;

• a produção de mais cópias do conteúdo licenciado do que aquelas especificadas neste contrato ou permitidas pela legislação aplicável, não obstante esta limitação;

• a publicação do conteúdo licenciado para a cópia por outras pessoas;

• transferir o conteúdo licenciado marcado como “beta” ou “pré-lançamento” a terceiros;

• permitir que outros acessem ou usem o conteúdo licenciado;

• o aluguel, arrendamento ou empréstimo do conteúdo licenciado; ou

Page 7: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 7

• o uso do conteúdo licenciado em serviços de hospedagem comercial de conteúdo licenciado.

• Os direitos de acesso ao software para servidor que possa estar incluído com o conteúdo licenciado, inclusive os Discos Rígidos Virtuais, não concedem a você nenhum direito para implementar patentes da Microsoft ou outras propriedades intelectuais da Microsoft em softwares ou dispositivos que acessem o servidor.

7. CÓPIA DE BACKUP. Você poderá fazer uma cópia de backup do conteúdo licenciado. Você poderá usá-la apenas para reinstalar o conteúdo licenciado.

8. TRANSFERÊNCIA PARA OUTRO DISPOSITIVO. Você poderá desinstalar o conteúdo licenciado e instalá-lo em outro dispositivo para seu uso pessoal em treinamento. Você não poderá fazer isso para compartilhar esta licença com vários dispositivos.

9. TRANSFERÊNCIA PARA TERCEIROS. Você não poderá transferir a terceiros essas versões marcadas como “beta” ou “pré-lançamento”. Para as versões definitivas, esses termos serão aplicáveis: O primeiro usuário do conteúdo licenciado poderá transferi-lo junto com este contrato diretamente a um terceiro. Antes da transferência, tal terceiro deverá concordar que este contrato se aplica à transferência e ao uso do conteúdo licenciado. O primeiro usuário deverá desinstalar o conteúdo licenciado antes de transferi-lo separadamente do dispositivo. O primeiro usuário não poderá reter cópias.

10. RESTRIÇÕES À EXPORTAÇÃO. O conteúdo licenciado está sujeito às leis e normas de exportação dos Estados Unidos. Você deverá cumprir todas as leis e normas nacionais e internacionais de exportação que se aplicam ao conteúdo licenciado. Essas leis incluem restrições a destinos, usuários finais e uso final. Para obter informações adicionais, visite a página www.microsoft.com/exporting.

11. SOFTWARE/CONTEÚDO LICENCIADO NÃO COMERCIALIZÁVEL (“NFR” ou “Not For Resale”). É vedada a venda de software ou conteúdo licenciado identificado como “NFR” ou “Not for Resale” (“Não Comercializável”).

12. EDIÇÃO ACADÊMICA. Você deverá ser um “Usuário Educacional Qualificado” para usar conteúdo licenciado identificado como “Academic Edition” ou “AE”. Caso você não saiba se é ou não um Usuário Educacional Qualificado, visite a página www.microsoft.com/education ou contate a afiliada da Microsoft em seu país.

13. CONTRATO INTEGRAL. Este contrato, e os termos dos suplementos, das atualizações, dos serviços via Internet e dos serviços de suporte usados por você, constituem o contrato integral para o conteúdo licenciado e os serviços de suporte.

14. LEGISLAÇÃO APLICÁVEL.

a. Nos Estados Unidos. Se você tiver adquirido o conteúdo licenciado nos Estados Unidos, as leis do Estado de Washington regerão a interpretação deste contrato e serão aplicáveis às reclamações de violação do mesmo, independentemente dos princípios de conflito de leis. As leis do Estado onde você vive regerão todas as outras reclamações, incluindo leis de defesa do consumidor, concorrência desleal e obrigações extracontratuais.

b. Fora dos Estados Unidos. Se você tiver adquirido o conteúdo licenciado em qualquer outro país, as leis desse país serão aplicáveis.

15. EFEITO LEGAL. Este contrato descreve alguns direitos legais. Você poderá ter outros direitos de acordo com as leis do seu país. Você também poderá ter direitos em relação ao terceiro de quem o conteúdo licenciado foi adquirido. Este contrato não alterará os seus direitos de acordo com as leis do seu país, caso as leis do seu país não o permitam.

Page 8: 10714A-PTB-Companion.pdf

8 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

16. ISENÇÃO DE RESPONSABILIDADE. O CONTEÚDO LICENCIADO É LICENCIADO “NO ESTADO EM QUE SE ENCONTRA”. O RISCO DE USÁ-LO É RESPONSABILIDADE SUA. A MICROSOFT NÃO OFERECE GARANTIAS OU CONDIÇÕES EXPRESSAS. VOCÊ PODERÁ TER DIREITOS DE CONSUMIDOR ADICIONAIS DE ACORDO COM SUAS LEIS LOCAIS, OS QUAIS ESTE CONTRATO NÃO PODERÁ ALTERAR. NA EXTENSÃO PERMITIDA PELAS LEIS LOCAIS, A MICROSOFT EXCLUI AS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA E NÃO-VIOLAÇÃO.

17. LIMITAÇÃO E EXCLUSÃO DE RECURSOS E DANOS. VOCÊ PODE RECUPERAR DA MICROSOFT E DE SEUS FORNECEDORES APENAS DANOS DIRETOS LIMITADOS A US$ 5,00 (CINCO DÓLARES AMERICANOS). NÃO É POSSÍVEL RECUPERAR OUTROS DANOS, INCLUINDO CONSEQÜENCIAIS, LUCROS CESSANTES, ESPECIAIS, INDIRETOS OU INCIDENTAIS.

Esta limitação aplica-se a:

• qualquer assunto relacionado ao conteúdo licenciado, ao software, aos serviços, ao conteúdo (incluindo código) em sites de Internet de terceiros ou a programas de terceiros; e

• reclamações por violação contratual, quebra de garantia ou condição, responsabilidade objetiva, negligência ou outra responsabilidade extracontratual, na extensão permitida pela legislação aplicável.

Também será aplicada ainda que a Microsoft saiba ou tivesse que saber sobre a possibilidade dos danos. A limitação ou exclusão acima poderá não se aplicar a você pelo fato de o seu país não permitir a exclusão ou limitação de danos incidentais, conseqüenciais ou outros.

Page 9: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 9

Módulo 1 Visão geral da arquitetura e do design de aplicativos Web

Sumário: Lição 1: Visão geral do IIS 7.0 10

Lição 2: Visão geral do ASP.NET 4.0 18

Lição 3: Introdução ao MVC Framework 20

Lição 4: Visão geral do ciclo de vida de uma solicitação 24

Page 10: 10714A-PTB-Companion.pdf

10 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 1 Visão geral do IIS 7.0

Sumário: Perguntas e respostas 11

Passos detalhados de demonstração 12

Page 11: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 11

Perguntas e respostas Principais recursos do IIS 7.0

Pergunta: Quais são os benefícios oferecidos pela arquitetura modular do IIS? Indique pelo menos um.

Resposta: Com essa arquitetura é possível adicionar novos recursos de maneira rápida e fácil, alterar um recurso sem afetar os outros, e também ativar e desativar recursos de acordo com suas necessidades.

Page 12: 10714A-PTB-Companion.pdf

12 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Administração do IIS 7.0 com o Gerenciador do IIS

Esta demonstração ilustrará os diversos recursos do IIS e como administrar suas funções. Esses recursos compreendem:

• Criação de um novo site

• Autenticação

• Permissões

• Cadeias de conexão

• Configurações de aplicativos

• Inicialização e interrupção de um site

• Reciclagem do pool de aplicativos

Criar um novo site

1. No menu Iniciar, aponte para Ferramentas Administrativas, clique com o botão direito do mouse em Gerenciador do Serviços de Informações da Internet (IIS) e, em seguida, clique em Executar como administrador.

• Na caixa de diálogo Controle de Conta de Usuário, na caixa Senha, digite Pa$$w0rd e clique em Sim.

2. No Gerenciador do Serviços de Informações da Internet (IIS), expanda 10714A-GEN-DEV (10714A-GEN-DEV\Admin) e, depois, Sites.

3. Clique com o direito do mouse em Sites e, em seguida, clique em Adicionar Site.

Page 13: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 13

4. Na caixa de diálogo Adicionar Site, especifique as configurações conforme mostrado no exemplo a seguir. Você precisará criar a subpasta demo na pasta C:\inetpub\.

5. Clique em OK.

Alterar a autenticação

1. No painel Conexões, clique em Demo.

2. No painel Página inicial Demo, na seção IIS, clique duas vezes em Autenticação.

3. No painel Autenticação, clique com o botão direito do mouse em Autenticação Básica e, em seguida, clique em Habilitar.

Page 14: 10714A-PTB-Companion.pdf

14 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Editar permissões

1. No painel Conexões, clique em Demo.

2. No painel Ações, clique em Editar Permissões.

3. Na caixa de diálogo Propriedades de inetpub, clique em Segurança.

4. Clique em Editar.

5. Na caixa de diálogo Permissões para inetpub, clique em Adicionar.

6. Na caixa de diálogo Selecionar Usuários ou Grupos, na caixa Digite os nomes de objeto a serem selecionados, digite IIS_IUSRS, clique em Verificar Nomes e, em seguida, clique em OK.

7. Na caixa de diálogo Permissões para inetpub, clique em OK.

8. Na caixa de diálogo Propriedades de inetpub, clique em OK.

Definir cadeia de conexão

1. No painel Conexões, clique em Default Web Site e, em seguida, clique em Demo.

2. No painel Página inicial Demo, na seção ASP.NET, clique duas vezes em Cadeias de Conexão.

3. No painel Ações, clique em Adicionar.

Page 15: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 15

4. Na caixa de diálogo Adicionar Cadeia de Conexão, especifique as configurações conforme mostrado na ilustração a seguir.

5. Clique em OK.

6. No painel Cadeias de Conexão, clique em Exibição de Conteúdo.

7. No painel Conteúdo Demo, clique em web.config.

Observação: um arquivo web.config é adicionado ao diretório raiz do site.

8. No painel Conexões, clique com o botão direito do mouse em Demo e, em seguida, clique em Explorar.

9. No Windows Explorer, clique duas vezes em web.config.

Observação: no Microsoft® Visual Studio® 2010, você poderá ver a nova cadeia de conexão adicionada ao arquivo web.config.

10. Feche o Microsoft Visual Studio 2010.

11. Feche o Windows Explorer.

Page 16: 10714A-PTB-Companion.pdf

16 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Especificar as configurações do aplicativo

1. No painel Conexões, clique em Default Web Site e, em seguida, clique em Demo.

2. No painel Conteúdo Demo, clique em Exibição de Recursos.

3. No painel Página inicial Demo, na seção ASP.NET, clique duas vezes em Configurações de Aplicativo.

4. No painel Ações, clique em Adicionar.

5. Na caixa de diálogo Adicionar Configuração do Aplicativo, especifique as configurações de acordo com a ilustração a seguir.

6. Clique em OK.

7. No Windows Explorer, clique duas vezes em web.config.

Observação: no Microsoft Visual Studio 2010, você poderá ver a nova configuração de aplicativo adicionada ao arquivo web.config.

8. Feche o Microsoft Visual Studio 2010.

9. Feche o Windows Explorer.

Page 17: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 17

Reiniciar o site

1. No painel Conexões, clique em Default Web Site e, em seguida, clique em Demo.

2. No painel Ações, na seção Gerenciar Site, clique em Reiniciar.

Reciclar um pool de aplicativos

1. No painel Conexões, clique em Pools de Aplicativos.

2. No painel Pools de Aplicativos, clique em DefaultAppPool e, no painel Ações, na seção Tarefas de Pool de Aplicativos, clique em Reciclar.

3. Feche o Gerenciador do Serviços de Informações da Internet (IIS).

Page 18: 10714A-PTB-Companion.pdf

18 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 2 Visão geral do ASP.NET 4.0

Sumário: Perguntas e respostas 19

Page 19: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 19

Perguntas e respostas Novos recursos do ASP.NET 4.0

Pergunta: Como a compactação do estado de sessão serializado é habilitada?

Resposta: Para habilitar a compactação do estado de sessão serializado é preciso definir o valor da opção de configuração compressionEnabled como verdadeiro.

Page 20: 10714A-PTB-Companion.pdf

20 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 3 Introdução ao MVC Framework

Sumário: Perguntas e respostas 21

Passos detalhados de demonstração 22

Page 21: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 21

Perguntas e respostas O que é o MVC Framework?

Pergunta: Quais as vantagens de separar as questões de estruturas de dados, apresentação e lógica do aplicativo?

Resposta possível: A separação das preocupações possibilita atualizações autônomas e facilita a manutenção.

Demonstração: Exploração de um aplicativo MVC Pergunta: Quais outros elementos você reconheceu na solução MVC?

Respostas: Pode variar, mas os controladores, as exibições e os modelos, bem como a extensão .aspx e as páginas mestras.

Page 22: 10714A-PTB-Companion.pdf

22 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Exploração de um aplicativo MVC

Exploração do aplicativo MVC da Adventure Works

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Crie um novo projeto do MVC.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em New Project ou pressione CTRL+SHIFT+N.

b. Na caixa de diálogo New Project, no painel esquerdo, na seção Installed Templates, expanda Visual C# ou Visual Basic e clique em Web.

c. Na caixa de diálogo New Project, no painel central, clique em ASP.NET MVC 2 Web Application.

d. Na caixa de diálogo New Project, no painel central, na caixa Name, digite DemoMvcApplication, na caixa Location, digite D:\Demofiles\Module 01\Demo 02 e clique em OK.

3. Na caixa de diálogo Create Unit Test Project, selecione a opção No, do not create a unit test project e clique em OK.

4. Exiba a pasta Controllers.

• No Solution Explorer, expanda a pasta Controllers.

Observação: observe que todos os arquivos de código têm o sufixo Controller.

5. Exiba a pasta Models.

• No Solution Explorer, expanda a pasta Models.

Page 23: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 23

6. Exiba todo o código do arquivo AccountModels.

a. No Solution Explorer, clique duas vezes no arquivo de código AccountModels.cs ou AccountModels.vb.

b. Na janela AccountModels.cs ou AccountModels.vb, pressione CTRL+M, CTRL+L.

c. Role a janela para baixo e exiba as diversas regiões do código.

Observação: o arquivo de código de modelo contém as estruturas de dados desse aplicativo Web e as classes que controlam a lógica para se trabalhar com o armazenamento de dados.

d. Na janela AccountModels.cs ou AccountModels.vb, clique no botão Close.

7. Exiba a pasta Views.

• No Solution Explorer, expanda a pasta Views.

Observação: várias pastas compartilham seu nome com os dos controladores contidos na pasta Controllers.

8. Exiba a pasta Views/Shared.

• No Solution Explorer, expanda a pasta Views/Shared.

Observação: a pasta Shared contém as páginas mestras, os controles de usuário e as páginas compartilhadas no aplicativo Web MVC.

9. Feche o Microsoft Visual Studio 2010.

• Na janela DemoMvcApplication — Microsoft Visual Studio 2010, clique no botão Close.

Page 24: 10714A-PTB-Companion.pdf

24 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 4 Visão geral do ciclo de vida de uma solicitação

Sumário: Perguntas e respostas 25

Page 25: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 25

Perguntas e respostas Ciclo de vida de uma solicitação de formulários da Web

Pergunta: O que são dados de postback?

Respostas: Dados de postback são dados disponíveis no elemento do formulário HTML.

Ciclo de vida de uma solicitação do MVC Pergunta: Qual é a primeira etapa de uma solicitação do MVC?

Respostas: O Roteamento ASP.NET roteia a solicitação para o recurso apropriado.

Comparação dos ciclos de vida de uma solicitação de formulários da Web e do MVC

Pergunta: Quais são as outras diferenças entre o ciclo de vida de uma solicitação de formulários da Web e do MVC?

Resposta: Pode variar; debata com alunos.

Como trabalhar com o ciclo de vida de uma página de formulários da Web Pergunta: Em que outros cenários você precisaria usar eventos no ciclo de vida da página para processá-la corretamente?

Resposta: Pode variar; debata com alunos.

Page 26: 10714A-PTB-Companion.pdf

26 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Módulo 2 Design de um aplicativo Web

Sumário: Lição 1: Aplicativos Web: Estudos de caso 27

Lição 2: Conceitos básicos do desgin de aplicativos Web 29

Lição 3: Ferramentas e tecnologias do Visual Studio 2010 para o design de aplicativos Web 31

Page 27: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 27

Lição 1

Aplicativos Web: Estudos de caso Sumário: Perguntas e respostas 28

Page 28: 10714A-PTB-Companion.pdf

28 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas Discussão: Visão geral de aplicativos Web e suas características

Pergunta: Quais são algumas das outras variações não abordadas entre os sites?

Resposta: Pode variar.

Pergunta: Embora não haja uma correspondência exata, esses quatro tipos de sites se relacionam, de alguma forma, às respostas da pergunta anterior?

Resposta: Pode variar.

Page 29: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 29

Lição 2 Conceitos básicos do desgin de aplicativos Web

Sumário: Perguntas e respostas 30

Page 30: 10714A-PTB-Companion.pdf

30 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas Considerações comuns de design

Pergunta: Qual é a importância da segurança em cada tipo de aplicativo Web?

Resposta: Mesmo em sites estáticos, o sistema de arquivos deve conter segurança anexada.

Pergunta: Como a escalabilidade e a confiabilidade estão relacionadas?

Resposta: Em geral, a escalabilidade e a confiabilidade estão estreitamente ligadas, uma vez que a capacidade de recuperação após a perda de recursos exige que o aplicativo Web seja capaz de distribuir seu processamento entre mais de um ponto de falha único.

Discussão: Formulários da Web e MVC Pergunta: Quais recursos, comuns ou diferentes, observados nas estruturas dos formulários da Web e do MVC seriam úteis para seus esforços de desenvolvimento?

Resposta: Pode variar.

Diretrizes para determinar quando usar formulários da Web e o MVC Pergunta: Com base em sua experiência, quais soluções podem ter se beneficiado da implementação com o MVC?

Resposta: Pode variar.

Pergunta: Quais recursos importantes dos formulários da Web que você usa frequentemente podem ser perdidos no desenvolvimento com o MVC?

Resposta: Pode variar.

Page 31: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 31

Lição 3

Ferramentas e tecnologias do Visual Studio 2010 para o design de aplicativos Web

Sumário: Perguntas e respostas 32

Page 32: 10714A-PTB-Companion.pdf

32 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas Visão geral do modo Design do Visual Studio 2010

Pergunta: Qual a vantagem de usar o modo Design no processo de desenvolvimento?

Resposta: O modo de exibição de Design exibe todas as páginas mestras e páginas mestras aninhadas implementadas em sua página. Dessa forma, você pode ver exatamente qual será a aparência da página no navegador.

Enterprise Library Pergunta: Quais os benefícios de usar a Enterprise Library como uma interface consistente para tarefas comuns exigidas por seus aplicativos?

Resposta: Pode variar.

IIS SEO Toolkit Pergunta: Qual a utilidade dos arquivos robots.txt e sitemap.xml?

Resposta: O arquivo robots.txt informa ao mecanismo de pesquisa o que ele pode ou não rastrear ao indexar o site. O arquivo sitemap.xml fornece um mapa do site para um rastreador de mecanismo de pesquisa. Isso permite que o rastreador acesse áreas do site às quais provavelmente ele não teria acesso sem esse mapa.

Pergunta: Como a ferramenta Site Analysis o ajuda a entender o modo como os rastreadores de mecanismos de pesquisa reagirão ao conteúdo do site?

Resposta: Executando a ferramenta Site Analysis, você identificará e corrigirá possíveis problemas que impedirão o rastreador do mecanismo de pesquisa de atribuir a relevância adequada ao seu conteúdo e, possivelmente, interromper a indexação de todo o site.

Page 33: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 33

Módulo 3 Desenvolvendo modelos MVC

Sumário: Lição 1: Exploração de maneiras de criar modelos MVC 34

Lição 2: Como trabalhar com dados em modelos MVC 37

Lição 3: Criação de um repositório de dados 39

Page 34: 10714A-PTB-Companion.pdf

34 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 1

Exploração de maneiras de criar modelos MVC Sumário: Passos detalhados de demonstração 35

Page 35: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 35

Passos detalhados de demonstração Demonstração: Criando um modelo MVC usando classes

Criação de um modelo MVC usando classes 1. Abra o Microsoft® Visual Studio® 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Crie um novo projeto ASP.NET MVC 2 Web Application, com um projeto associado de teste de unidade.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em New Project ou pressione CTRL+SHIFT+N.

b. Na caixa de diálogo New Project, no painel esquerdo, clique em Visual C# ou Visual Basic, no painel central, clique em ASP.NET MVC 2 Web Application, na caixa Location, digite D:\Demofiles\CS ou D:\Demofiles\VB, e clique em OK.

c. Na caixa de diálogo Create Unit Test Project, verifique se a caixa de seleção Yes, create a unit test project está marcada e clique em OK.

3. Adicione uma nova classe chamada Blog à pasta Models.

a. No Solution Explorer, clique com o botão direito em Models, aponte para Add e clique em New Item, ou pressione CTRL+SHIFT+A.

b. Na caixa de diálogo Add New Item — MvcApplication1, no painel esquerdo, clique em Visual C# ou Visual Basic, no painel central, clique em Class, na caixa Name, digite Blog e clique em Add.

4. Adicione o seguinte código à classe Blog.

[Visual C#] public class Blog { public string Title { get; set; } public string Description { get; set; } }

[Visual Basic] Public Class Blog Private Property Title As String Private Property Description As String End Class

Page 36: 10714A-PTB-Companion.pdf

36 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

5. Compile a solução e corrija todos os erros.

• Na janela MvcApplication1 — Microsoft Visual Studio, no menu Build, clique em Build Solution, ou pressione CTRL+SHIFT+B.

6. Feche o Visual Studio 2010.

• Na janela MvcApplication1 — Microsoft Visual Studio, clique no botão Close.

Práticas recomendadas: O modelo não deve se preocupar em salvar a si mesmo na mídia persistente e a responsabilidade do acesso a dados deve ser mantida separada do modelo.

Page 37: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 3-37

Lição 2

Como trabalhar com dados em modelos MVC Sumário: Perguntas e respostas 38

Page 38: 10714A-PTB-Companion.pdf

38 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas Padrão Data Mapper Pergunta: Qual a diferença entre o padrão Data Mapper e o padrão Active Record?

Resposta: O padrão Active Record usa um wrapper de classe fortemente tipado em uma linha da tabela do banco de dados e, assim, imita diretamente a estrutura do banco de dados, enquanto o padrão Data Mapper mantém separadas a estrutura do banco de dados e a estrutura do objeto.

Page 39: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 3-39

Lição 3 Criação de um repositório de dados

Sumário: Perguntas e respostas 40

Passos detalhados de demonstração 41

Page 40: 10714A-PTB-Companion.pdf

40 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas Estendendo classes de modelo para adicionar regras comerciais

Pergunta: Por que não é uma boa ideia implementar as regras comerciais na classe de modelo criada usando o Entity Framework?

Resposta: Quando o projeto é compilado, o código personalizado é substituído.

Page 41: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 3-41

Passos detalhados de demonstração Demonstração: Criação de um repositório de dados Este tópico aborda a implementação de um repositório de dados. A demonstração usa o Entity Framework como o modelo de dados. O repositório exibirá os métodos persistence e data retrieval.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução MvcApplication1 no local a seguir.

Linguagem de programação Local

Visual C# D:\Demofiles\CS\MvcApplication1

Visual Basic D:\Demofiles\VB\MvcApplication1

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project ou pressione CTRL+SHIFT+O.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\MvcApplication1\ MvcApplication1.sln ou D:\Demofiles\VB\MvcApplication1\MvcApplication1.sln e clique em Abrir.

3. Adicione ao projeto um novo modelo de dados de entidade do ADO.NET chamado MyModel.edmx e gere o modelo do banco de dados. O modelo deve ser adicionado à pasta Models.

a. No Solution Explorer, clique com o botão direito em Models, aponte para Add, e clique em New Item.

b. Na caixa de diálogo Add New Item — MvcApplication1, no painel esquerdo, clique em Data.

c. No painel central, clique em ADO.NET Entity Data Model, na caixa Name, digite MyModel.edmx e clique em Add.

d. No Entity Data Model Wizard, na página Choose Model Contents, clique em Generate from database e em Next.

4. No Entity Data Model Wizard, na página Choose Your Data Connection, se a lista Which data connection should your application use to connect to the database? estiver vazia, clique em New Connection e crie uma nova conexão para o banco de dados AdventureWorksLT2008R2 na instância .\SQLExpress do SQL Server®.

a. Na caixa de diálogo Choose Data Source, na lista Data source, clique em Microsoft SQL Server e em Continue.

b. Na caixa de diálogo Connection Properties, na caixa Server name, digite .\SQLExpress, na lista Select or enter a database name, clique em AdventureWorksLT2008R2 e em OK.

5. No Entity Data Model Wizard, na página Choose Your Data Connection, na lista Which data connection should your application use to connect to the database?, clique em 10714a-gen-dev\sqlexpress.AdventureWorksLT2008R2.Sales(LT) e clique em Next.

Page 42: 10714A-PTB-Companion.pdf

42 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

6. Selecione as tabelas Blog e Blogger do banco de dados.

• Na página Choose Your Database Objects, na lista Which database objects do you want to include in your model, expanda Tables, selecione as caixas de seleção Blog e Blogger e clique em Finish.

7. Adicione uma nova classe de repositório de dados chamada BlogRepository à pasta Models.

a. No Solution Explorer, clique com o botão direito em Models, aponte para Add, e clique em New Item.

b. Na caixa de diálogo Add New Item — MvcApplication1, no painel esquerdo, clique em Visual C# ou Visual Basic.

c. No painel central, clique em Class, na caixa Name, digite BlogRepository e clique em Add.

Page 43: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 3-43

8. Adicione o seguinte código à classe BlogRepository.

[Visual C#] private AdventureWorksLT2008R2Entities db = new AdventureWorksLT2008R2Entities(); public IQueryable<MvcApplication1.Models.Blog> GetAllBlogs() { return db.Blogs; }

[Visual Basic] Private db As New AdventureWorksLT2008R2Entities() Public Function GetAllBlogs() As IQueryable(Of MvcApplication1.Blog) Return db.Blogs End Function

• Na janela BlogRepository.cs ou BlogRepository.vb, na parte superior da classe BlogRepository, digite o seguinte código.

[Visual C#] private AdventureWorksLT2008R2Entities db = new AdventureWorksLT2008R2Entities(); public IQueryable<MvcApplication1.Models.Blog> GetAllBlogs() { return db.Blogs; }

[Visual Basic] Private AdventureWorksLT2008R2Entities db As New AdventureWorksLT2008R2Entities() Public Function GetAllBlogs() As IQueryable(Of MvcApplication1.Blog) Return db.Blogs End Function

9. Acrescente o método Save à classe BlogRepository, que é responsável por persistir o objeto Blog no banco de dados.

[Visual C#] public static void Save(MvcApplication1.Models.Blog blog) { using (var db = new AdventureWorksLT2008R2Entities ()) { if (blog.BloggerID == 0) { db.AddToBlogs(blog); db.SaveChanges(); } } }

Page 44: 10714A-PTB-Companion.pdf

44 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

[Visual Basic] Public Shared Sub Save(ByVal blog As MvcApplication1.Blog) Using db As New AdventureWorksLT2008R2Entities() If blog.BloggerID = 0 Then db.AddToBlogs(blog) db.SaveChanges() End If End Using End Sub

• Na janela BlogRepository.cs ou BlogRepository.vb, acrescente o seguinte código.

[Visual C#] public static void Save(MvcApplication1.Models.Blog blog) { using (var db = new AdventureWorksLT2008R2Entities ()) { if (blog.BloggerID == 0) { db.AddToBlogs(blog); db.SaveChanges(); } } }

[Visual Basic] Public Shared Sub Save(ByVal blog As MvcApplication1.Blog) Using db As New AdventureWorksLT2008R2Entities() If blog.BloggerID = 0 Then db.AddToBlogs(blog) db.SaveChanges() End If End Using End Sub

10. Exclua a classe Blog da pasta Models.

a. No Solution Explorer, na pasta Models, clique com o botão direito em Blog.cs ou Blog.vb e clique em Delete.

b. Na caixa de diálogo do Microsoft Visual Studio, clique em OK.

11. Compile a solução e corrija todos os erros.

• Na janela MvcApplication1 — Microsoft Visual Studio, no menu Build, clique em Build Solution, ou pressione CTRL+SHIFT+B.

12. Feche o Visual Studio 2010.

• Na janela MvcApplication1 — Microsoft Visual Studio, clique no botão Fechar.

Page 45: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 45

Módulo 4 Desenvolvimento de MVC Controllers

Sumário: Lição 1: Implementação de MVC Controllers 46

Lição 2: Criação de métodos de ação 51

Page 46: 10714A-PTB-Companion.pdf

46 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 1

Implementação de MVC Controllers Sumário: Perguntas e respostas 47

Passos detalhados de demonstração 48

Leituras adicionais 50

Page 47: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 47

Perguntas e respostas O que é um controlador MVC?

Pergunta: Qual é o nome da classe do controlador de produto?

Resposta: Como todas as classes de controladores devem terminar com o sufixo “Controller”, o nome do controlador Product é ProductController.

O que é um filtro de ação? Pergunta: Quais são os usos para os filtros de ação?

Resposta: Os usos possíveis dos filtros de ação são tão variados quanto as ações às quais eles podem ser aplicados. Estes são alguns dos possíveis usos dos filtros de ação:

• Registro em log, para acompanhar as interações do usuário.

• “Anti-furto-de-imagem”, para evitar que imagens sejam carregadas em páginas que não estejam no seu site.

• Filtragem de rastreador da Web, para alterar o comportamento do aplicativo com base no agente de usuário do navegador.

• Localização, para definir o local.

• Ações dinâmicas, para injetar uma ação no controlador.

Pergunta: Que tipos de filtros de ação o ASP.NET MVC fornece?

Resposta: Os tipos de filtros de ação que o ASP.NET MVC fornece são:

• Autorização

• Ação

• Resultado

• Exceção

Page 48: 10714A-PTB-Companion.pdf

48 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Criando um controlador MVC Nesta demonstração, você aprenderá a criar um controlador MVC.

1. Abra o Microsoft Visual Studio® 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Crie um novo projeto ASP.NET MVC 2 Web Application, com um projeto associado de teste de unidade.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em New Project ou pressione CTRL+SHIFT+N.

b. Na caixa de diálogo New Project, no painel esquerdo, clique em Visual C# ou Visual Basic, no painel central, clique em ASP.NET MVC 2 Web Application, na caixa Location, digite D:\Demofiles\CS ou D:\Demofiles\VB, e clique em OK.

c. Na caixa de diálogo Create Unit Test Project, verifique se a opçãoYes, create a unit test project está selecionada e clique em OK.

3. Criar um controlador chamado BlogController na pasta Controllers. O controlador deve incluir métodos de ação para criar, atualizar, excluir e detalhar cenários.

a. No Solution Explorer, clique com o botão direito em Controllers, aponte para Add e clique em Controller.

b. Na caixa de diálogo Add Controller, na caixa Controller Name, digite BlogController, marque a caixa de seleção Add action methods for Create, Update, Delete, and Details scenarios e clique em Add.

4. Compile a solução e corrija todos os erros.

• Na janela MvcApplication1 — Microsoft Visual Studio, no menu Build, clique em Build Solution, ou pressione CTRL+SHIFT+B.

5. Feche o Visual Studio 2010.

• Na janela MvcApplication1 — Microsoft Visual Studio, clique no botão Close.

Demonstração: Usando um filtro de ação

Nesta demonstração, você aprenderá a usar um controlador que é decorado com o atributo HandleErrorAttribute.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução MvcApplication1 no local a seguir.

Linguagem de programação Local

Visual C# D:\Demofiles\CS\MvcApplication1

Visual Basic D:\Demofiles\VB\MvcApplication1

Page 49: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 49

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project ou pressione CTRL+SHIFT+O.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\ MvcApplication1\MvcApplication1.sln ou D:\Demofiles\VB\MvcApplication1\ MvcApplication1.sln e clique em Abrir.

3. Abra o controlador HomeController.

• No Solution Explorer, expanda Controllers e clique duas vezes em HomeController.cs ou em HomeController.vb.

4. No método de ação About, lance uma exceção do tipo Exception.

[Visual C#] [HandleError(ExceptionType=typeof(Exception))] public ActionResult About() { throw new Exception(); }

[Visual Basic] <HandleError(ExceptionType:=GetType(Exception))> Public Function About() As ActionResult Throw New Exception() End Function

5. Abra o arquivo Web.config.

• No Solution Explorer, clique duas vezes em Web.config.

6. Adicione um elemento customErrors ao arquivo Web.config.

<system.web> <customErrors mode="On" /> </system.web>

7. Execute o aplicativo.

• Na janela MvcApplication1 — Microsoft Visual Studio, no menu Debug, clique em Start Without Debugging ou pressione CTRL+F5.

8. Exiba a página About.

• Na janela Home Page — Windows Internet Explorer, clique em Sobre.

Observação: A mensagem de erro, que é parte da página ou modo de exibição Error.aspx, localizada na pasta Views\Shared, é exibida.

9. Feche o Visual Studio 2010.

• Na janela MvcApplication1 — Microsoft Visual Studio, clique no botão Close.

Page 50: 10714A-PTB-Companion.pdf

50 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Leituras adicionais O que é um controlador MVC?

Para obter mais informações sobre MVC controllers, consulte Controller Class.

Para obter mais informações sobre roteamento, consulte Understanding the MVC Application Execution Process.

Page 51: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 51

Lição 2

Criação de métodos de ação Sumário: Perguntas e respostas 52

Passos detalhados de demonstração 54

Leituras adicionais 57

Page 52: 10714A-PTB-Companion.pdf

52 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas O que são métodos de ação?

Pergunta: Quais são as restrições aos métodos de ação?

Resposta: Métodos de ação:

• Devem ser públicos.

• Não podem ser estáticos.

• Não podem ter parâmetros de tipo genérico não associados.

• Não podem ser sobrecarregados com base em parâmetros, a menos que tenham a ambiguidade removida com atributos como NonActionAttribute ou AcceptVerbsAttribute.

Pergunta: Como se pode evitar que um método público de um controlador seja tratado como um método de ação?

Resposta: O ASP.NET MVC trata todos os métodos públicos de uma classe de controlador como métodos de ação. Se sua classe de controlador contiver um método público e você não quiser que ele seja um método de ação, decore o método com o atributo NonActionAttribute.

Pergunta: Qual é o atributo mais curto que você pode usar para designar que um método de ação deve responder somente a um HTTP Post?

Resposta: O atributo mais curto que você pode usar para designar que um método de ação só deve responder a um HTTP Post é o atributo HttpPostAttribute.

Chamando um modo de exibição MVC Pergunta: Que tipos derivam da classe ActionResult?

Resposta: Os tipos a seguir derivam da classe ActionResult:

• ContentResult

• EmptyResult

• FileResult

• JavaScriptResult

• JsonResult

• PartialViewResult

• RedirectResult

• RedirectToRouteResult

• ViewResult

Page 53: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 53

Pergunta: Quais são as três maneiras de a classe ViewResult passar dados para o modo de exibição?

Resposta: As três maneiras abordadas nesta lição são:

• ViewData

• TempData

• Propriedade View

Recuperação de dados da solicitação Pergunta: Como é possível recuperar dados de um formulário?

Resposta: Você pode recuperar dados usando o objeto Request, os associadores de modelo e FormCollection.

Pergunta: Como é possível acessar a lista de erros que ocorreram durante a associação de modelo?

Resposta: A propriedade ModelState.Errors retorna um objeto ModelErrorCollection que contém todos os erros ocorridos durante a associação do modelo.

Page 54: 10714A-PTB-Companion.pdf

54 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Recuperação de dados da solicitação Nesta demonstração, você aprenderá a recuperar dados de RouteData, do QueryString, de um TextBox e do FormCollection.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução DemoHello no local a seguir.

Linguagem de programação Local

Visual C# D:\Demofiles\CS

Visual Basic D:\Demofiles\VB

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project ou pressione CTRL+SHIFT+O.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\DemoHello.sln ou D:\Demofiles\VB\DemoHello.sln e clique em Abrir.

3. Recupere dados do RouteData.

a. Execute o projeto pressionando CTRL+F5.

b. Na janela Home Page — Windows Internet Explorer, clique em Home.

c. Acrescente o texto a seguir à URL na barra de endereços, e pressione ENTER.

/RouteDataDemo/World

Observação: O valor da chave id, recuperado da coleção de par de chave/valor RouteData.Values, (World) é exibido.

d. Feche o Windows® Internet Explorer®.

4. Recupere dados de QueryString.

a. Execute o projeto pressionando CTRL+F5.

b. Na janela Home Page — Windows Internet Explorer, clique em Home.

c. Acrescente o texto a seguir à URL na barra de endereços, e pressione ENTER.

/QueryStringDemo?id=World

Observação: O valor da chave id, recuperado da coleção de pares chave-valor do objeto Request (World), é exibido.

d. Feche o Internet Explorer.

Page 55: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 55

5. Recupere os dados da caixa de texto.

a. Substitua o conteúdo do controle de conteúdo Content2 no arquivo de página Index.aspx na página Views\Hello com a seguinte marcação.

[Visual C#] <% Html.BeginForm(); %> Enter Your Name: <%: Html.TextBox("id") %> <input id="Submit1" type="submit" value="Submit" /> <h2><%: ViewData["Message"] %></h2> <% Html.EndForm(); %>

[Visual Basic] <% Html.BeginForm() %> Enter Your Name: <%: Html.TextBox("id") %> <input id="Submit1" type="submit" value="Submit" /> <h2><%: ViewData("Message") %></h2> <% Html.EndForm() %>

b. No Solution Explorer, clique em DemoHello.

c. Execute o projeto pressionando CTRL+F5.

d. Na janela Home Page — Windows Internet Explorer, clique em Home.

e. Acrescente o texto a seguir à URL na barra de endereços, e pressione ENTER.

/TextBoxDemo

f. Na caixa Enter Your Name, digite seu nome e clique em Submit.

Observação: O valor inserido na caixa de texto é exibido.

g. Feche o Internet Explorer.

6. Recupere dados de um FormCollection.

a. Adicione um novo método de ação chamado FormCollectionDemo no HelloController.

[Visual C#] public ActionResult FormCollectionDemo(FormCollection collection) { ViewData["Message"] = "Hello " + collection["id"]; return View("Index"); }

[Visual Basic] Function FormCollectionDemo(ByVal collection As FormCollection) As ActionResult ViewData("Message") = "Hello " & collection("id") Return View("Index") End Function

b. Execute o projeto pressionando CTRL+F5.

Page 56: 10714A-PTB-Companion.pdf

56 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

c. Na janela Home Page — Windows Internet Explorer, clique em Home.

d. Acrescente o texto a seguir à URL na barra de endereços, e pressione ENTER.

/FormCollectionDemo

e. Na caixa Enter Your Name, digite seu nome e clique em Submit.

f. Na caixa de diálogo Preenchimento Automático, clique em No.

Observação: O valor inserido na caixa de texto, recuperado do objeto FormCollection, é exibido.

g. Feche o Internet Explorer.

h. Feche o Visual Studio 2010.

Page 57: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 57

Leituras adicionais Chamando um modo de exibição MVC

Para obter informações sobre a classe ActionResult, consulte ActionResult Class.

Para obter informações sobre a classe ViewResult, consulte ViewResult Class.

Page 58: 10714A-PTB-Companion.pdf

58 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Módulo 5 Desenvolvimento de modos de exibição MVC

Sumário: Lição 1: Implementação de modos de exibição MVC 59

Lição 2: Implementação de modos de exibição MVC fortemente tipados 63

Lição 3: Implementação de modos de exibição MVC parciais 70

Page 59: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 59

Lição 1

Implementação de modos de exibição MVC Sumário: Perguntas e respostas 60

Passos detalhados de demonstração 61

Leituras adicionais 62

Page 60: 10714A-PTB-Companion.pdf

60 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas O que é um modo de exibição MVC?

Pergunta: Onde está localizado o modo de exibição associado ao método de ação Sample do controlador Home?

Resposta: O modo de exibição associado ao método de ação Sample do controlador Home pode ser localizado em qualquer um destes locais:

~/Views/Home/Sample.aspx

~/Views/Home/Sample.ascx

~/Views/Shared/Sample.aspx

~/Views/Shared/Sample.ascx

Pergunta: Qual é a diferença entre a propriedade ViewData e a propriedade TempData?

Resposta: O valor da propriedade TempData persiste somente de uma solicitação para a seguinte.

Pergunta: Qual é o atributo da diretiva Page que é usada para identificar a página mestra?

Resposta: O atributo MasterPageFile da diretiva Page identifica a página mestra.

O que são auxiliares HTML? Pergunta: O que um auxiliar HTML retorna?

Resposta: Um auxiliar Html retorna uma cadeia de caracteres do tipo MvcHtmlString. MvcHtmlString representa uma cadeia de caracteres codificada para HTML que não deve ser codificada novamente.

Pergunta: Em quais categorias os auxiliares HTML estão organizados?

Resposta: Estas são as categorias em que os auxiliares Html estão organizados:

• Extensões MvcForm

• Extensões Input

• Extensões Label

• Extensões Link

• Extensões Select

• Extensões TextArea

• Extensões Validation

Page 61: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 61

Passos detalhados de demonstração Demonstração: Criação de um modo de exibição MVC Nesta demonstração, você aprenderá a criar um modo de exibição MVC.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Crie um novo projeto de Aplicativo Web do ASP.NET MVC 2, sem um projeto de Teste de Unidade associado.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em New Project ou pressione CTRL+SHIFT+N.

b. Na caixa de diálogo New Project, no painel esquerdo, clique em Visual C# ou Visual Basic, no painel central, clique em ASP.NET MVC 2 Web Application, na caixa Location, digite D:\Demofiles\CS ou D:\Demofiles\VB, e clique em OK.

c. Na caixa de diálogo Create Unit Test Project, verifique se a opção No, do not create a unit test project está selecionada e clique em OK.

3. Exclua o modo de exibição Home\About.

a. No Solution Explorer, expanda Views, expanda Home, clique com o botão direito em About.aspx e clique em Delete.

b. Na caixa de diálogo do Microsoft Visual Studio, clique em OK.

4. Crie um modo de exibição vazio chamado About na pasta Home.

a. No Solution Explorer, clique com o botão direito do mouse em Home, aponte para Add e clique em View.

b. Na caixa de diálogo Add View, na caixa View name, digite About, desmarque a caixa de seleção Create a strongly-typed view e clique em Add.

5. Compile a solução e corrija todos os erros.

• Na janela MvcApplication1 — Microsoft Visual Studio, no menu Build, clique em Build Solution, ou pressione CTRL+SHIFT+B.

6. Execute o aplicativo.

a. No Solution Explorer, clique em MvcApplication1.

b. Na janela MvcApplication1 — Microsoft Visual Studio, no menu Debug, clique em Start Without Debugging ou pressione CTRL+F5.

c. Na janela Home Page — Windows Internet Explorer, clique em Sobre.

7. Feche o Windows® Internet Explorer®.

• Na janela About — Windows Internet Explorer, clique no botão Fechar.

8. Feche o Visual Studio 2010.

• Na janela MvcApplication1 — Microsoft Visual Studio, clique no botão Fechar.

Page 62: 10714A-PTB-Companion.pdf

62 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Leituras adicionais O que é um modo de exibição MVC?

Para obter mais informações sobre a classe ViewPage, consulte Classe ViewPage.

Para obter mais informações sobre a classe ViewDataDictionary, consulte Classe ViewDataDictionary Class.

Para obter mais informações sobre a classe TempDataDictionary, consulte Classe TempDataDictionary.

O que são auxiliares HTML?

Para obter mais informações sobre a classe HtmlHelper, consulte Classe HtmlHelper.

Para obter mais informações sobre como renderizar um modo de exibição usando auxiliares HTML, consulte Rendering a Form in ASP.NET MVC Using HTML Helpers.

Page 63: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 63

Lição 2

Implementação de modos de exibição MVC fortemente tipados

Sumário: Perguntas e respostas 64

Passos detalhados de demonstração 65

Leituras adicionais 69

Page 64: 10714A-PTB-Companion.pdf

64 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas O que é um modo de exibição fortemente tipado?

Pergunta: De qual classe o modo de exibição fortemente tipado herda?

Resposta: Um modo de exibição fortemente tipado herda de ViewPage<(Of <(TModel>)>)

Pergunta: Qual a maneira mais fácil de criar um modo de exibição fortemente tipado?

Resposta: A maneira mais fácil de criar um modo de exibição fortemente tipado é usar a caixa de diálogo Add View.

Pergunta: Quais são as vantagens de usar modos de exibição fortemente tipados?

Resposta: Os modos de exibição fortemente tipados sabem exatamente que tipo de dado é esperado, e o Microsoft IntelliSense® está disponível.

Page 65: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 65

Passos detalhados de demonstração Demonstração: Criando um modo de exibição fortemente tipado Nesta demonstração, você verá como criar um modo de exibição MVC fortemente tipado.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Crie um novo projeto de Aplicativo Web do ASP.NET MVC 2, sem um projeto de Teste de Unidade associado.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em New Project ou pressione CTRL+SHIFT+N.

b. Na caixa de diálogo New Project, no painel esquerdo, clique em Visual C# ou Visual Basic, no painel central, clique em ASP.NET MVC 2 Web Application, na caixa Name, digite StronglyTypedView, na caixa Location, digite D:\Demofiles\CS ou D:\Demofiles\VBe clique em OK.

c. Na caixa de diálogo Create Unit Test Project, verifique se a opção No, do not create a unit test project está selecionada e clique em OK.

3. Adicione uma classe de modelo chamada Person à pasta Models.

[Visual C#] using System.ComponentModel; using System.ComponentModel.DataAnnotations; public class Person { [Required] [DisplayName("First Name")] public string FirstName { get; set; } [Required] [DisplayName("Last Name")] public string LastName { get; set; } [Required] public int Age { get; set; } [Required] public string Gender { get; set; } }

[Visual Basic] Imports System.ComponentModel Imports System.ComponentModel.DataAnnotations Public Class Person <Required()> <DisplayName("First Name")> Public Property FirstName As String <Required()> <DisplayName("Last Name")> Public Property LastName As String <Required()>

Page 66: 10714A-PTB-Companion.pdf

66 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Public Property Age As Integer <Required()> Public Property Gender As String End Class

a. No Solution Explorer, clique com o botão direito do mouse em Models, aponte para Add e clique em Class.

b. Na caixa de diálogo Add New Item, na caixa Name, digite Person.cs ou Person.vb e clique em Add.

c. Na janela Person.cs ou Person.vb, substitua o conteúdo pelo código a seguir.

[Visual C#] using System.ComponentModel; using System.ComponentModel.DataAnnotations; public class Person { [Required] [DisplayName("First Name")] public string FirstName { get; set; } [Required] [DisplayName("Last Name")] public string LastName { get; set; } [Required] public int Age { get; set; } [Required] public string Gender { get; set; } }

[Visual Basic] Imports System.ComponentModel Imports System.ComponentModel.DataAnnotations Public Class Person <Required()> <DisplayName("First Name")> Public Property FirstName As String <Required()> <DisplayName("Last Name")> Public Property LastName As String <Required()> Public Property Age As Integer <Required()> Public Property Gender As String End Class

4. Compile a solução e corrija todos os erros.

• Na janela StronglyTypedView — Microsoft Visual Studio, no menu Build, clique em Build Solution ou pressione CTRL+SHIFT+B.

5. Crie um modo de exibição fortemente tipado chamado Person na pasta Views\Home. O modo de exibição deve incluir o conteúdo padrão para a operação Create.

a. No Solution Explorer, expanda Views, clique com o botão direito em Home, aponte para Add e clique em View.

b. [Visual C#] Na caixa de diálogo Add View, na caixa View name, digite Person, marque a caixa de seleção Create a strongly-typed view, na lista View data class, clique em Person, na lista View content, clique em Create e em Add.

Page 67: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 67

c. [Visual Basic] Na caixa de diálogo Add View, na caixa View name, digite Person, marque a caixa de seleção Create a strongly-typed view, na lista View data class, clique em StronglyTypedView.Person, na lista View content, clique em Create e, em seguida, clique em Add.

6. Altere o TextBox para exibir a propriedade Gender para o modelo para uma DropDownList.

a. Substitua a seguinte marcação e o código.

[Visual C#] <%: Html.TextBoxFor(model => model.Gender) %>

[Visual Basic] <%: Html.TextBoxFor(Function(model) model.Gender) %>

b. Com a marcação e o código a seguir.

[Visual C#] <%: Html.DropDownListFor(model => model.Gender, (SelectList)ViewData["Gender"]) %>

[Visual Basic] <%: Html.DropDownListFor(Function(model) model.Gender, CType(ViewData("Gender"), SelectList)) %>

7. Adicione um método de ação chamado Person ao controlador HomeController na pasta Controllers.

[Visual C#] public ActionResult Person() { ViewData["Gender"] = new SelectList(new[] { "", "Female", "Male" }); return View(); }

[Visual Basic] Public Function Person() As ActionResult ViewData("Gender") = New SelectList({"", "Female", "Male"}) Return View() End Function

a. No Solution Explorer, expanda Controllers e clique duas vezes em HomeController.

b. Na janela HomeController.cs ou HomeController.vb, na classe HomeController, digite o seguinte código.

[Visual C#] public ActionResult Person() { ViewData["Gender"] = new SelectList(new[] { "", "Female", "Male" }); return View(); }

Page 68: 10714A-PTB-Companion.pdf

68 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

[Visual Basic] Public Function Person() As ActionResult ViewData("Gender") = New SelectList({"", "Female", "Male"}) Return View() End Function

8. Execute o aplicativo.

a. No Solution Explorer, clique em StronglyTypedView.

b. Na janela StronglyTypedView — Microsoft Visual Studio, no menu Debug, clique em Start Without Debugging ou pressione CTRL+F5.

9. Navegue diretamente para o modo de exibição Person, usando a seguinte rota.

Home/Person

• Na janela Home Page — Windows Internet Explorer, na barra de endereços, acrescente a seguinte URL e pressione ENTER.

Home/Person

10. Feche o Internet Explorer.

• Na janela Person — Windows Internet Explorer, clique no botão Fechar.

11. Feche o Visual Studio 2010.

• Na janela StronglyTypedView — Microsoft Visual Studio, clique no botão Fechar.

Page 69: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 69

Leituras adicionais O que é um modo de exibição fortemente tipado?

Para obter mais informações sobre a classe HtmlHelper(TModel), consulte Classe HtmlHelper(TModel).

Page 70: 10714A-PTB-Companion.pdf

70 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 3

Implementação de modos de exibição MVC parciais Sumário: Perguntas e respostas 71

Passos detalhados de demonstração 72

Page 71: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 71

Perguntas e respostas O que é um modo de exibição parcial?

Pergunta: Qual é o auxiliar HTML usado para renderizar um modo de exibição parcial?

Resposta: Html.RenderPartial é usado para renderizar um modo de exibição parcial.

Pergunta: Em qual tipo de arquivo o modo de exibição parcial armazena sua marcação?

Resposta: Um modo de exibição parcial armazena sua marcação em um controle de usuário ASP.NET (arquivo .ascx).

Page 72: 10714A-PTB-Companion.pdf

72 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Criando um modo de exibição MVC parcial Nesta demonstração, você verá como criar um modo de exibição MVC parcial.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução StronglyTypedView usada na demonstração anterior.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project ou pressione CTRL+SHIFT+O.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\ StronglyTypedView\StronglyTypedView.sln ou D:\Demofiles\VB\StronglyTypedView\ StronglyTypedView.sln e clique em Abrir.

3. Adicione um modo de exibição parcial fortemente tipado chamado Partial à pasta Views\Home, usando a caixa de diálogo Add View. O modo de exibição deve ter o conteúdo padrão para o modo de exibição Create, e o modo de exibição deve ser baseado na classe Person.

a. No Solution Explorer, expanda Views, clique com o botão direito do mouse em Home, aponte para Add e clique em View.

b. [Visual C#] Na caixa de diálogo Add View, na caixa View name, digite Partial, marque as caixas de seleção Create a partial view (.ascx) e Create a strongly-typed view, na lista View data class, clique em Person, na lista View content, clique em Create e em Add.

–ou-

[Visual Basic] Na caixa de diálogo Add View, na caixa View name, digite Partial, marque as caixas de seleção Create a partial view (.ascx) e Create a strongly-typed view, na lista View data class, clique em StronglyTypedView.Person, na lista View content, clique em Create e, em seguida, clique em Add.

4. Adicione um modo de exibição vazio chamado Create à pasta Views\Home, usando a caixa de diálogo Add View.

a. No Solution Explorer, expanda Views, clique com o botão direito do mouse em Home, aponte para Add e clique em View.

b. Na caixa de diálogo Add View, na caixa View name, digite Create, desmarque as caixas de seleção Create a partial view (.ascx) e Create a strongly-typed view e clique em Add.

Page 73: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 73

5. Incorpore o modo de exibição Partial no modo de exibição Create como parte do controle Content2 Content, usando o método Html.RenderPartial.

[Visual C#] <% Html.RenderPartial("Partial"); %>

[Visual Basic] <% Html.RenderPartial("Partial") %>

• Adicione o código a seguir ao modo de exibição Create, no controle Content2 Content, imediatamente depois do elemento h2.

[Visual C#] <% Html.RenderPartial("Partial"); %>

[Visual Basic] <% Html.RenderPartial("Partial") %>

6. Execute o aplicativo.

a. No Solution Explorer, clique em StronglyTypedView.

b. Na janela StronglyTypedView — Microsoft Visual Studio, no menu Debug, clique em Start Without Debugging ou pressione CTRL+F5.

7. Navegue diretamente para o modo de exibição Person, usando a seguinte rota.

Home/Person

• Na janela Home Page — Windows Internet Explorer, na barra de endereços, acrescente a seguinte URL e pressione ENTER.

Home/Person

8. Feche o Internet Explorer.

• Na janela Person — Windows Internet Explorer, clique no botão Fechar.

9. Feche o Visual Studio 2010.

• Na janela StronglyTypedView — Microsoft Visual Studio, clique no botão Fechar.

Page 74: 10714A-PTB-Companion.pdf

74 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Módulo 6 Projetando a detectabilidade

Sumário: Lição 1: SEO (Search Engine Optimization) 75

Lição 2: Arquivos de detectabilidad 80

Lição 3: Uso do roteamento ASP.NET 85

Page 75: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 75

Lição 1

SEO (Search Engine Optimization) Sumário: Perguntas e respostas 76

Passos detalhados de demonstração 77

Page 76: 10714A-PTB-Companion.pdf

76 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas

Visão geral do Search Engine Optimization Pergunta: Ao calcular o esforço para concluir um site, você geralmente inclui itens de SEO (otimização do mecanismo de pesquisa)?

Resposta: Pode variar.

Pergunta: De quais atividades você participou para melhorar a classificação de pesquisa de um site?

Resposta: Pode variar.

Pergunta: Como os padrões de tráfego foram alterados depois que você concluiu as atividades de SEO?

Resposta: Pode variar.

Componentes do IIS SEO Toolkit Pergunta: Você encontrou um site que não tinha um arquivo robots.txt preciso? Que erros foram cometidos? O tráfego melhorou depois que o arquivo robots.txt foi corrigido?

Resposta: Pode variar.

Pergunta: Você encontrou um site que não tinha um arquivo sitemap.xml preciso? Em caso afirmativo, como isso afetou o uso e a percepção do site?

Resposta: Pode variar.

Demonstração: Análise de um site usando o IIS SEO Toolkit Pergunta: Quando seria o período de tempo ideal em um projeto para a execução da Ferramenta Site Analysis?

Resposta: Após o desenvolvimento inicial e após a implantação.

Pergunta: Qual recurso do relatório pode ser usado para evitar problemas de produção de modo proativo?

Resposta: Violações.

Page 77: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 77

Passos detalhados de demonstração Demonstração: Análise de um site usando o IIS SEO Toolkit

Rastreando um site 1. Abra o Kit de Ferramentas de SEO do IIS.

a. No menu Iniciar, aponte para Todos os Programas, expanda IIS 7.0 Extensions, clique com o botão direito do mouse em Search Engine Optimization (SEO) Toolkit 1.0 e clique em Executar como Administrador.

b. Na caixa de diálogo Controle de Conta de Usuário, na caixa Senha, digite Pa$$w0rd e clique em Sim.

2. No Gerenciador do Serviços de Informações da Internet (IIS), no painel direito, na seção Site Analysis, clique em Create a new analysis.

3. Na caixa de diálogo New Analysis, na caixa Name, digite Default Web Site analysis, na caixa Start URL, digite http://localhost e clique em OK.

Observação: É possível rastrear qualquer site que esteja acessível ao público na Internet.

A caixa de diálogo New Analysis Configurações avançadas

Maximum Number of Links: Controla o número de links a serem processados e baixados de um site durante o rastreamento. Um link é qualquer URL que seja usada na marcação de uma página, incluindo hiperlinks, referências a arquivos de imagens, arquivos CSS e arquivos de script java. O aumento desse número aumenta o tamanho do arquivo de relatórios e torna o processo de rastreamento mais demorado.

Maximum Download Size per Link: Controla o número de quilobytes de conteúdo a serem baixados por link. O aumento desse número aumenta o tamanho do conteúdo armazenado em cache pela ferramenta Site Analysis no sistema de arquivos local.

Ignore ‘nofollow’ attribute: O atributo nofollow e a marca meta nofollow são usados para informar aos rastreadores do mecanismo de pesquisa para não seguir certos hiperlinks (ou todos eles) na página. Essa é uma forma de proteção contra spam em comentários de blog. Se as páginas no site usarem esse atributo, os hiperlinks nessas páginas não serão processados, nem analisados durante a análise do site. No entanto, os links para recursos como imagens, arquivos CSS e java script ainda serão processados. Se for necessário analisar os hiperlinks que usam esse atributo, utilize essa configuração para ignorar os atributos nofollow e as marcas meta.

Ignore ‘noindex’ meta tag: — Usado para informar aos rastreadores do mecanismo de pesquisa para não indexar o conteúdo da página. Se as páginas no site usarem essa marca meta, violações não serão procuradas no conteúdo dessas páginas. Se for necessário analisar até mesmo as páginas que usam esse atributo, utilize essa configuração para ignorar a marca meta noindex.

External Links: Use esta lista suspensa quando o site tiver subdomínios ou quando você quiser executar uma análise em um determinado diretório em um site. Essa configuração controla se os subdomínios e/ou os subdiretórios devem ser tratados como links internos ou externos.

Page 78: 10714A-PTB-Companion.pdf

78 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Editar configurações de recursos

Maximum Number of Concurrent Requests: Controla o número de solicitações simultâneas que o rastreador da Web fará.

Reports Directory: Especifica o diretório no sistema de arquivos local em que todos os dados rastreados e o conteúdo do site em cache é armazenado.

Observação: Dois números são relatados durante a análise.

Links Processed: O número total de links que foram rastreados e baixados pelo rastreador da Web.

Total Links: O número total de links encontrados durante o rastreamento do site.

Interpretando o relatório da Site Analysis No Gerenciador do Serviços de Informações da Internet (IIS), na seção Site Analysis Report, você pode exibir algumas páginas com detalhes de relatório. Para acessar a seção Site Analysis Report, siga estas etapas:

1. Abra o Kit de Ferramentas de SEO do IIS.

a. No menu Iniciar, aponte para Todos os Programas, expanda IIS 7.0 Extensions, clique com o botão direito do mouse em Search Engine Optimization (SEO) Toolkit e, em seguida, clique em Executar como Administrador.

b. Na caixa de diálogo Controle de Conta de Usuário, na caixa Senha, digite Pa$$w0rd e clique em Sim.

2. No Gerenciador do Serviços de Informações da Internet (IIS), no painel direito, na seção Análise do Site, clique em Exibir relatórios existentes.

3. No painel Site Analysis, clique duas vezes em qualquer um dos relatórios listados.

Observação: Na seção Site Analysis Report, use as guias verticais na esquerda do Dashboard para acessar as informações a seguir.

Página de Resumo A página de resumo da análise de site apresenta uma visão geral de todas as violações relacionadas a SEO e dos problemas encontrados no site analisado. Além disso, ela contém um grande conjunto de relatórios predefinidos sobre o conteúdo e a estrutura do site.

Você pode analisar cada item separadamente no relatório clicando duas vezes nele ou usando o comando View Group Details no menu de contexto. Para abrir um determinado relatório em uma página de consulta separada, use o comando do menu de contexto Open Query.

Page 79: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 79

Página de consulta A abertura de um relatório predefinido da página de resumo resultará em uma nova página de consulta.

A página de consulta é usada para emitir consultas referentes aos dados da análise do site que foram coletados durante o rastreamento do site. Na captura de tela, a consulta é usada para obtenção de todas as páginas que referenciam imagens sem especificar um atributo alt no elemento HTML img.

Você pode executar um conjunto de ações, acessível a partir do menu de contexto, para cada item no painel de resultados da consulta. As ações são as seguintes:

View Details: Esta opção abre uma caixa de diálogo, que pode ser usada para obter informações detalhadas sobre o item. Especificamente, você pode visualizar os detalhes de violação e as ações corretivas sugeridas.

Além disso, os dados de resposta reais estarão disponíveis se você precisar investigar as causas da violação relatada depois. Por exemplo, se você quiser descobrir onde essa violação ocorreu no HTML de resposta, escolha a guia Content. Isso abrirá o conteúdo da resposta com a seção afetada da marcação realçada.

View in Browser: Se você clicar com o botão direito do mouse em uma URL, poderá selecionar View in Browser no menu de contexto para mostrar a URL no navegador.

View Pages Linking to This Page: Se você clicar com o botão direito do mouse em uma URL, também poderá selecionar View Pages Linking to This Page. Essa opção abre uma nova página de consulta que mostra todas as páginas no site que referenciam a URL do item selecionado. Esse tipo de relatório é útil quando você deseja descobrir quais páginas poderão ser afetadas se você alterar uma determinada URL no site.

View Pages Linked by This Page: Esta opção abre uma nova página de consulta que mostra todas as URLs e os recursos que a marcação HTML da URL selecionada atualmente referencia.

View Violations in This Page: Esta opção abre uma nova página de consulta que mostra todas as violações encontradas na página da URL selecionada.

View in Hierarchy: Esta opção abre uma página de exibição de hierarquia que consiste nas seguintes partes:

• URLs de todas as páginas que levam à página selecionada.

• A URL da página selecionada.

• URLs de todas as páginas e recursos referenciados pela página selecionada.

View Routes to this Page: Esta opção abre uma nova página que exibe as 5 menores rotas exclusivas da página inicial de análise para a página selecionada atualmente.

Cada rota é mostrada com a página inicial na parte inferior e as páginas subsequentes acima, com a página selecionada no topo. Esse relatório pode ser usado para analisar o modo como os visitantes podem acessar uma determinada página no site e se há páginas desnecessárias que podem ser eliminadas para que os usuários descubram a página selecionada mais facilmente.

Word Analysis: Este recurso pode ser usado para se ter uma ideia das palavras mais comumente usadas no conteúdo de uma página. Elas podem ser usadas como palavras-chave para descrever com precisão o conteúdo da página da Web para mecanismos de pesquisa.

As palavras usadas com mais frequência em uma página serão exibidas, o que pode dar uma ideia de quais palavras-chave escolher para essa página. Além disso, os textos de links que referenciam essa página são listados na parte inferior da caixa de diálogo. Isso ajuda a verificar se o texto âncora usado nesses links descreve com precisão o conteúdo da página.

Page 80: 10714A-PTB-Companion.pdf

80 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 2 Arquivos de detectabilidade

Sumário: Perguntas e respostas 81

Passos detalhados de demonstração 82

Page 81: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 81

Perguntas e respostas O que são arquivos de robôs?

Pergunta: Você já comandou ou testou conteúdo em um ambiente de produção em que não queria que um mecanismo de pesquisa indexasse?

Resposta: Pode variar.

Pergunta: Cite algumas desvantagens de permitir que rastreadores da Web indexem conteúdo que não esteja pronto para produção?

Resposta: Os mecanismos de pesquisa coletam informações que ainda não estão prontas e direcionam os usuários a elas.

O que é o Arquivo de Mapa de Site? Pergunta: Quando você geralmente instala um arquivo de mapa de site?

Resposta: No início de um projeto.

Page 82: 10714A-PTB-Companion.pdf

82 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Criando um arquivo de robôs Nesta demonstração, você verá como criar um arquivo robots.txt.

1. Abra o Gerenciador do Serviços de Informações da Internet (IIS) como administrador.

a. No menu Iniciar, clique em Painel de Controle.

b. No Painel de Controle, clique em Sistema e Segurança e em Ferramentas Administrativas.

c. Clique com o botão direito do mouse em Gerenciador do Serviços de Informações da Internet (IIS) e clique em Executar como administrador.

2. Na caixa de diálogo Controle de Conta de Usuário, na caixa Senha, digite Pa$$w0rd e pressione ENTER.

3. Selecione o Default Web site.

• No painel Conexões, expanda 10714A-GEN-DEV (10714A-GEN-DEV\Admin), expanda Sites e clique em Default Web site.

4. Abra o recurso Search Engine Optimization.

• No Gerenciador do Serviços de Informações da Internet (IIS), no painel intermediário, na seção Gerenciamento, clique duas vezes em Search Engine Optimization.

5. Exiba as regras existentes.

• No painel Search Engine Optimization, na seção Robots Exclusion, clique em View existing rules.

Observação: Atualmente não há regras e também não há nenhum arquivo robots.txt.

6. Adicione um arquivo de mapa de site.

a. No painel Actions, na seção Sitemap Locations, clique em Add Sitemaps.

b. Na caixa de diálogo Add Sitemaps, na lista URL Paths, selecione o Default Web Site e clique em OK.

Observação: Atualmente, não há nenhum arquivo de mapa de site, mas essa ação criará o arquivo robots.txt.

7. Abra o arquivo robots.txt.

• No painel Actions, na seção Robots, clique no arquivo Open Robots.txt.

Observação: O arquivo robots.txt é aberto no Bloco de Notas. Atualmente, ele contém apenas uma referência ao mapa de site no local padrão do site padrão.

Page 83: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 83

A seguir, são apresentados exemplos do que você pode adicionar a um arquivo robots.txt.

• Este exemplo não permite todos os spiders da Web para todo o site:

# Make changes for all web spiders User-agent: * Disallow: /

• O exemplo a seguir não permite um robô chamado WebSpider dos caminhos virtuais /marketing e /sales:

# Tell "WebSpider" where it can't go User-agent: WebSpider Disallow: /marketing Disallow: /sales # Allow all other robots to browse everywhere User-agent: * Disallow:

• Este exemplo permite apenas um spider da Web denominado SpiderOne em um site, enquanto nega todos os outros spiders:

# Allow "SpiderOne" in the site User-agent: SpiderOne Disallow: # Deny all other spiders User-agent: * Disallow: /

• Este último exemplo não permite caminhos relacionados ao FrontPage na raiz do site:

# Ignore FrontPage files User-agent: * Disallow: /_borders Disallow: /_derived Disallow: /_fpclass Disallow: /_overlay Disallow: /_private Disallow: /_themes Disallow: /_vti_bin Disallow: /_vti_cnf Disallow: /_vti_log Disallow: /_vti_map Disallow: /_vti_pvt Disallow: /_vti_txt

8. Feche o Bloco de Notas.

• Na janela robots.txt — Bloco de Notas, clique no botão Fechar.

9. Feche o Gerenciador do Serviços de Informações da Internet (IIS).

• Na janela do Gerenciador do Serviços de Informações da Internet (IIS), clique no botão Fechar.

Page 84: 10714A-PTB-Companion.pdf

84 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

10. Feche as Ferramentas Administrativas.

• Na janela Painel de Controle\Sistema e Segurança\Ferramentas Administrativas, clique no botão Fechar.

11. Feche Sistema e Segurança.

• Na janela Painel de Controle\Sistema e Segurança, clique no botão Fechar.

Demonstração: Criação de um arquivo de mapa do site

Criação de um arquivo de mapa do site 1. Abra o Gerenciador do Serviços de Informações da Internet (IIS) como administrador.

• No menu Iniciar, clique em Painel de Controle.

2. No Painel de Controle, clique em Sistema e Segurança e, em seguida, clique em Ferramentas Administrativas.

3. Clique com o botão direito do mouse em Gerenciador do Serviços de Informações da Internet (IIS) e, em seguida, clique em Executar como administrador.

4. Na caixa de diálogo Controle de Conta de Usuário, na caixa Senha, digite Pa$$w0rd e pressione ENTER.

5. Abra o recurso Search Engine Optimization.

• No painel direito, na seção Gerenciamento Group, clique duas vezes em Search Engine Optimization.

6. Crie um novo mapa de site para o site padrão, em um arquivo denominado Sitemap.xml. Defina a frequência de alteração como diária, não registre a data e a hora da última modificação e defina a prioridade como 1.

a. No painel the Search Engine Optimization, na seção Sitemaps and Sitemap Indexes, clique em Create a new sitemap.

b. Na caixa de diálogo Choose Site, na lista Site, clique em Default Web Site e em OK.

c. Na caixa de diálogo Add Sitemap, na caixa File Name, digite Sitemap.xml e clique em OK.

d. Na caixa de diálogo Add URLs, na lista URL Paths, clique em Default Web Site e em OK.

7. Feche o Gerenciador do Serviços de Informações da Internet (IIS).

• Na janela do Gerenciador do Serviços de Informações da Internet (IIS), clique no botão Fechar.

8. Feche Ferramentas Administrativas.

• Na janela Painel de Controle\Sistema e Segurança\Ferramentas Administrativas, clique no botão Fechar.

9. Feche Sistema e Segurança.

• Na janela Painel de Controle\Sistema e Segurança, clique no botão Fechar.

Page 85: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 85

Lição 3 Uso do roteamento ASP.NET

Sumário: Perguntas e respostas 86

Passos detalhados de demonstração 87

Page 86: 10714A-PTB-Companion.pdf

86 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas Como funciona o roteamento ASP.NET

Pergunta: Quais são as vantagens de usar URLs roteadas em relação a URLs padrão?

Resposta: As URLs são mais simples e podem ser digitadas, copiadas/coladas ou usadas em mecanismos de pesquisa com mais facilidade.

Demonstração: Uso do roteamento ASP.NET com páginas de Web Forms Pergunta: Como o uso do Roteamento ASP.NET melhora a manutenção a longo prazo de um aplicativo da Web?

Resposta: As alterações em sites podem ser feitas facilmente por meio da atualização de tabelas de

roteamento.

Pergunta: Qual a sua percepção de um site quando você recebe um erro HTTP 404?

Resposta: Pode variar.

Uso do roteamento ASP.NET com páginas do MVC Pergunta: Como o roteamento interno MVC aprimora os resultados da consulta do mecanismo de pesquisa?

Resposta: Ele produz URLs amigáveis para o mecanismo de pesquisa.

Pergunta: Como o roteamento interno MVC aprimora a manutenção de um site?

Resposta: É fácil adicionar ou mover modos de exibição simplesmente modificando a rota correspondente.

Page 87: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 87

Passos detalhados de demonstração Demonstração: Uso do roteamento ASP.NET com páginas de Web Forms 1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução WebFormsRouting no local a seguir.

Linguagem de programação Local

Visual C#® D:\Demofiles\CS

Visual Basic® D:\Demofiles\VB

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project ou pressione CTRL+SHIFT+O.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\ WebFormsRouting.sln ou D:\Demofiles\VB\WebFormsRouting.sln e clique em Abrir.

3. Adicione uma referência ao assembly System.Web.Routing.

a. No Gerenciador de Soluções, clique com o botão direito do mouse em WebFormsRouting clique em Add Reference.

b. Na caixa de diálogo Add Reference, clique em .NET.

c. Na lista, clique em System.Web.Routing e em OK.

4. Abra o arquivo Global.asax.

• No Solution Explorer, clique duas vezes em Global.asax.

5. Importe o namespace System.Web.Routing para o arquivo de código Global.asax.

• No início do arquivo de código Global.asax.cs ou Global.asax.vb, adicione o código a seguir.

[Visual C#] using System.Web.Routing;

[Visual Basic] Imports System.Web.Routing

6. Adicione um método RegisterRoutes, conforme mostrado para a classe Global.

[Visual C#] void RegisterRoutes(RouteCollection routes) { routes.MapPageRoute( "SearchRoute", // Route name "search/{searchterm}", // URL with parameters "~/Search.aspx" // Web forms page to handle it ); }

Page 88: 10714A-PTB-Companion.pdf

88 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

[Visual Basic] Sub RegisterRoutes(ByVal routes As RouteCollection) ' Route name ' URL with parameters ' Web forms page to handle it routes.MapPageRoute("SearchRoute", "search/{searchterm}", "~/Search.aspx") End Sub

• Na janela Global.asax.cs ou Global.asax.vb, na classe Global, adicione o código a seguir.

[Visual C#] void RegisterRoutes(RouteCollection routes) { routes.MapPageRoute( "SearchRoute", // Route name "search/{searchterm}", // URL with parameters "~/Search.aspx" // Web forms page to handle it ); }

[Visual Basic] Private Sub RegisterRoutes(ByVal routes As RouteCollection) ' Route name ' URL with parameters ' Web forms page to handle it routes.MapPageRoute("SearchRoute", "search/{searchterm}", "~/Search.aspx") End Sub

7. Modifique o método Application_Start, conforme mostrado.

[Visual C#] void Application_Start() { RegisterRoutes(RouteTable.Routes); }

[Visual Basic] Private Sub Application_Start() RegisterRoutes(RouteTable.Routes) End Sub

8. Abra o arquivo de código Search.aspx.cs ou Search.aspx.vb.

• No Gerenciador de Soluções, clique com o botão direito do mouse em Search.aspx e clique em View Code.

9. Modifique o método Page_Load na classe Search, conforme mostrado.

[Visual C#] protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { string searchTerm = "No Search Term specified.";

Page 89: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 89

if (RouteData.Values["searchterm"] != null) { searchTerm = "You searched for '" + RouteData.Values["searchterm"].ToString() + "'"; } SearchTermLabel.Text = searchTerm; } }

[Visual Basic] Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then Dim searchTerm As String = "No Search Term specified." If Not RouteData.Values("searchterm") Is Nothing Then searchTerm = "You searched for '" & RouteData.Values("searchterm").ToString() & "'" End If SearchTermLabel.Text = searchTerm End If End Sub

10. Execute o aplicativo.

a. No Solution Explorer, clique em WebFormsRouting.

b. Na janela AdventureWorks — Microsoft Visual Studio, no menu Debug, clique em Start Without Debugging ou pressione CTRL+F5.

11. Navegue diretamente para a página Search usando a rota a seguir.

search/My Search Term

• Na janela Home Page — Windows Internet Explorer, na barra de endereços, anexe o texto a seguir.

search/My Search Term

12. Feche o Windows® Internet Explorer®.

• Na janela http://localhost:xxxx/search/My%20Search%20Term — Windows Internet Explorer, clique no botão Close.

13. Feche o Visual Studio 2010.

• Na janela RouteConstraints — Microsoft Visual Studio, clique no botão Close.

Page 90: 10714A-PTB-Companion.pdf

90 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Demonstração: Criação de restrições de rota 1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução RouteConstraints no local a seguir.

Linguagem de programação Local

Visual C# D:\Demofiles\CS

Visual Basic D:\Demofiles\VB

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project ou pressione CTRL+SHIFT+O.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\ RouteConstraints.sln ou D:\Demofiles\VB\RouteConstraints.sln e clique em Abrir.

3. Abra o arquivo Global.asax.

• No Solution Explorer, clique duas vezes em Global.asax.

4. Adicione a rota a seguir ao método RegisterRoutes, conforme mostrado.

[Visual C#] routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Product", "Product/{productId}", new {controller="Product", action="Details"} );

[Visual Basic] routes.IgnoreRoute("{resource}.axd/{*pathInfo}") routes.MapRoute( "Product", "Product/{productId}", New With {.controller = "Product", .action = "Details"} )

• Na janela Global.asax.cs ou Global.asax.vb, na classe Global, no método RegisterRoutes, adicione o código a seguir.

[Visual C#] routes.MapRoute( "Product", "Product/{productId}", new {controller="Product", action="Details"}

Page 91: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 91

[Visual Basic] routes.MapRoute( "Product", "Product/{productId}", New With {.controller = "Product", .action = "Details"} )

Depois deste código:

[Visual C#] routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

[Visual Basic] routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

5. Abra o controlador ProductController.

• No Solution Explorer, expanda Controllers e clique duas vezes em ProductController.cs ou em ProductController.vb.

6. Adicione o método de ação Details à classe ProductController, conforme mostrado.

[Visual C#] public ActionResult Details(int productId) { ViewData["ProductId"] = productId.ToString(); return View(); }

[Visual Basic] Function Details(ByVal productId As Integer) As ActionResult ViewData("ProductId") = productId.ToString() Return View() End Function

7. Execute o aplicativo.

a. No Solution Explorer, clique em RouteConstraints.

b. Na janela AdventureWorks — Microsoft Visual Studio, no menu Debug, clique em Start Without Debugging ou pressione CTRL+F5.

Page 92: 10714A-PTB-Companion.pdf

92 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

8. Navegue diretamente para o modo de exibição Product/Details usando a rota a seguir.

product/6

• Na janela Home Page — Windows Internet Explorer, na barra de endereços, anexe o texto a seguir.

product/6

Observação: Uma mensagem que diz Details for product with ID 3 é mostrada agora.

9. Navegue diretamente para o modo de exibição Product/Details usando a rota a seguir.

product/paper

• Na janela Home Page — Windows Internet Explorer, na barra de endereços, anexe o texto a seguir.

product/paper

Observação: Uma mensagem de erro é mostrada agora.

The parameters dictionary contains a null entry for parameter ‘productId’ of non-nullable type ‘System.Int32’ for method System.Web.Mvc. ‘ActionResult Details(Int32)’ in ‘RouteConstraints.RouteConstraints.ProductController’. (O dicionário de parâmetros contém uma entrada nula para o parâmetro ‘productId’ do tipo não anulável ‘System.Int32’ para o método ‘System.Web.Mvc.ActionResult Details(Int32)’ em ‘RouteConstraints.RouteConstraints.ProductController’.) An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. (Um parâmetro opcional deve ser um tipo de referência, um tipo anulável ou deve ser declarado como um parâmetro opcional.

10. Feche o Internet Explorer.

• Na janela The parameters dictionary contains a null entry for parameter ‘productId’ of non-nullable type — Windows Internet Explorer, clique no botão Close.

11. Modifique a rota Product em Global.asax, conforme mostrado.

[Visual C#] routes.MapRoute( "Product", "Product/{productId}", new {controller="Product", action="Details"}, new {productId = @"\d+" } );

Page 93: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 93

[Visual Basic] routes.MapRoute( "Product", "Product/{productId}", New With {.controller = "Product", .action = "Details"}, New With {.productId = "\d+"} )

• Na janela RouteConstraints — Microsoft Visual Studio, clique em Global.asax.cs ou em Global.asax.vb.

• Insira o seguinte código:

[Visual C#] , new {productId = @"\d+" }

[Visual Basic] , New With {.productId = "\d+"}

Neste local:

[Visual C#] routes.MapRoute( "Product", "Product/{productId}", new {controller="Product", action="Details"} <Insert Code Here> );

[Visual Basic] routes.MapRoute( "Product", "Product/{productId}", New With {.controller = "Product", .action = "Details"} <Insert Code Here> )

12. Execute o aplicativo.

a. No Solution Explorer, clique em RouteConstraints.

b. Na janela AdventureWorks — Microsoft Visual Studio, no menu Debug, clique em Start Without Debugging ou pressione CTRL+F5.

Page 94: 10714A-PTB-Companion.pdf

94 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

13. Navegue diretamente para o modo de exibição Product/Details usando a rota a seguir.

product/paper

• Na janela Home Page — Windows Internet Explorer, na barra de endereços, anexe o texto a seguir.

product/paper

Observação: Uma mensagem de erro é mostrada agora.

The resource cannot be found. (Não é possível encontrar o recurso)

14. Feche o Internet Explorer.

• Na janela The resource cannot be found. — Windows Internet Explorer, clique no botão Close.

15. Feche o Visual Studio 2010.

• Na janela RouteConstraints — Microsoft Visual Studio, clique no botão Close.

Demonstração: Criação de rotas personalizadas 1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução CustomRoute no local a seguir.

Linguagem de programação Local

Visual C# D:\Demofiles\CS

Visual Basic D:\Demofiles\VB

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project ou pressione CTRL+SHIFT+O.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\CustomRoute.sln ou D:\Demofiles\VB\CustomRoute.sln e clique em Abrir.

3. Abra o arquivo Global.asax.

• No Solution Explorer, clique duas vezes em Global.asax.

Page 95: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 95

4. Adicione a rota a seguir ao método RegisterRoutes, conforme mostrado.

[Visual C#] routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Blog", "Blog/{entryDate}", new { controller = "Blog", action = "Archive" } );

[Visual Basic] routes.IgnoreRoute("{resource}.axd/{*pathInfo}") routes.MapRoute( "Blog", "Blog/{entryDate}", New With {.controller = "Blog", .action = "Archive"} )

• Na janela Global.asax.cs ou Global.asax.vb, na classe Global, no método RegisterRoutes, adicione o código a seguir.

[Visual C#] routes.MapRoute( "Blog", "Blog/{entryDate}", new { controller = "Blog", action = "Archive" } );

[Visual Basic] routes.MapRoute( "Blog", "Blog/{entryDate}", New With {.controller = "Blog", .action = "Archive"} )

Depois deste código:

[Visual C#] routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

[Visual Basic] routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

5. Execute o aplicativo.

a. No Solution Explorer, clique em CustomRoute.

b. Na janela AdventureWorks — Microsoft Visual Studio, no menu Debug, clique em Start Without Debugging ou pressione CTRL+F5.

Page 96: 10714A-PTB-Companion.pdf

96 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

6. Navegue diretamente para o modo de exibição Blog/Archive usando a rota a seguir.

blog/12-25-2010

• Na janela Home Page — Windows Internet Explorer, na barra de endereços, anexe o texto a seguir.

blog/12-25-2010

7. Feche o Internet Explorer.

• Na janela Blog Archive — Windows Internet Explorer, clique no botão Close.

8. Feche o Visual Studio 2010.

• Na janela RouteConstraints — Microsoft Visual Studio, clique no botão Close.

Page 97: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 97

Módulo 7 Escrevendo código de servidor para formulários da Web

Sumário: Lição 3: Localização de um aplicativo Web 98

Page 98: 10714A-PTB-Companion.pdf

98 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 3 Localização de um aplicativo Web

Sumário: Passos detalhados de demonstração 99

Page 99: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 99

Passos detalhados de demonstração Demonstração: Localizar um aplicativo Web Nesta demonstração, você verá como localizar um aplicativo Web.

1. Abra o Microsoft® Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução Localization no local a seguir.

Linguagem de programação Local

Visual C#® D:\Demofiles\CS

Visual Basic® D:\Demofiles\VB

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project ou pressione CTRL+SHIFT+O.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\Localization.sln ou D:\Demofiles\VB\Localization.sln e clique em Abrir.

3. Abra Default.aspx.

• No Gerenciador de Soluções, clique duas vezes em Default.aspx.

4. Adicione um controle de servidor Label após o elemento h2, com os atributos a seguir.

Atributo Valor

ID HelloLabel

Text Hello in English

a. Coloque o cursor após o elemento h2.

b. Abra a Caixa de Ferramentas, expanda Standard e clique duas vezes em Label.

<asp:Label ID="HelloLabel" runat="server" Text="Hello in English"></asp:Label>

5. Alterne para o modo de exibição Design.

• Na janela Default.aspx, clique em Design.

6. Gere recursos locais usando o comando Generate Local Resource no menu Tools.

• Na janela Localization — Microsoft Visual Studio, no menu Tools, clique em Generate Local Resource.

7. Alterne para o modo Código-fonte.

• Na janela Default.aspx, clique em Source.

8. Observe os atributos recém-adicionados, meta:resourcekey, para a página e o controle de servidor Label.

Page 100: 10714A-PTB-Companion.pdf

100 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

9. Abra o arquivo App_LocalResources\Default.aspx.resx.

• No Gerenciador de Soluções, na pasta App_LocalResources, clique duas vezes em Default.aspx.resx.

10. Adicione um novo recurso de cadeia de caracteres chamado HeaderText.Text com o valor Localization.

• Na linha inferior do Editor de Recurso, na caixa Name, digite HeaderText.Text e, na caixa Value, digite Localization.

11. Adicione um novo recurso de cadeia de caracteres chamado DescriptionText com o valor ASP.NET Localization.

• Na linha inferior do Resource Editor, na caixa Name, digite DescriptionText e, na caixa Value, digite ASP.NET Localization.

12. Salve e feche o arquivo de recurso.

a. No menu File, clique em Salvar App_LocalResources\Default.aspx.resx ou pressione CTRL+S.

b. Na janela Default.aspx.resx, clique no botão Close.

13. Copie o arquivo App_LocalResources\Default.aspx.resx em um novo arquivo chamado Default.aspx.de.resx, na pasta App_LocalResources.

a. No Solution Explorer, na pasta App_LocalResources, clique com o botão direito do mouse em Default.aspx.resx e clique em Copiar.

b. No Solution Explorer, clique com o botão direito do mouse em App_LocalResources e clique em Paste.

c. No Solution Explorer, na pasta App_LocalResources, clique com o botão direito do mouse em Copy of Default.aspx.resx e, em seguida, clique em Rename.

d. Na caixa de texto, digite Default.aspx.de.resx e pressione ENTER.

14. Abra o arquivo App_LocalResources\Default.aspx.de.resx.

• No Solution Explorer, na pasta App_LocalResources, clique duas vezes em Default.aspx.de.resx.

15. Localize o recurso de cadeia de caracteres chamado HeaderText.Text com um novo valor de Lokalisierung.

• No Editor de Recurso, na linha com um valor na coluna Nome de HeaderText.Text, na caixa Value, digite Lokalisierung.

16. Localize o recurso de cadeia de caracteres chamado HelloLabelResource1.Text com um novo valor de Hallo in Deutsch.

• No Resource Editor, na linha com o valor HelloLabelResource1.Text na coluna Name, na caixa Value, digite Hallo in Deutsch.

17. Localize o recurso de cadeia de caracteres chamado PageResource1.Title com o novo valor Startseite.

• No Resource Editor, na linha com o valor PageResource1.Title na colunaName, na caixa Value, digiteStartseite.

Page 101: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 101

18. Localize o recurso de cadeia de caracteres chamado DescriptionText com o novo valor ASP.NET Lokalisierung.

• No Resource Editor, na linha com o valor DescriptionText na coluna Name, na caixa Value, digite ASP.NET Lokalisierung.

19. Salve e feche o arquivo de recurso.

a. No menu File, clique em Save App_LocalResources\Default.aspx.de.resx ou pressione as teclas CTRL+S.

b. Na janela Default.aspx.de.resx, clique no botão Close.

20. Em Default.aspx, localize o texto Localization embutido em código implicitamente, adicionando um controle de servidor Localize no elemento h2, com os atributos a seguir.

Atributo Valor

ID HeaderText

meta:resourcekey HeaderText

a. Coloque o cursor no elemento h2, imediatamente antes do texto Localization.

b. Abra a Toolbox, expanda Standard e clique duas vezes em Localize.

c. Modifique o controle de servidor Localize para ficar parecido com este:

<asp:Localize ID="HeaderText" runat="server" meta:resourcekey="HeaderText"></asp:Localize>

21. Exclua o texto Localization do elemento h2.

22. Adicione dois elementos br HTML de fechamento automático e um controle de servidor Literal chamado DescriptionLiteral, após o controle de servidor HelloLabel.

a. Posicione o cursor depois do elemento HelloLabel.

b. Digite o texto a seguir e pressione ENTER.

<br/><br/>

c. Abra a Toolbox, expanda Standard e clique duas vezes em Literal.

d. Modifique o controle de servidor Literal para que seja exibido da seguinte maneira.

<asp:Literal ID="DescriptionLiteral" runat="server" Text=""></asp:Literal>

23. Torne o controle Literal explicitamente localizável, adicionando o texto a seguir à propriedade Text.

<%$ Resources: DescriptionText %>

24. Adicione um novo arquivo de recurso global chamado WebResources.resx à pasta App_GlobalResources.

a. No Solution Explorer, clique com o botão direito do mouse em Localization, aponte para Add, para Add ASP.NET Folder e clique em App_GlobalResources.

b. No Solution Explorer, clique com o botão direito do mouse em App_GlobalResources, aponte para Add e clique em New Item.

Page 102: 10714A-PTB-Companion.pdf

102 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

c. Na caixa de diálogo Add New Item, no painel intermediário, clique em Resources File, na caixa Nome, digite WebResources.resx e clique em Add.

Observação: O nome do arquivo é igual ao da classe que será gerada no namespace Resources.

25. Adicione um novo recurso de cadeia de caracteres chamado FooterText com o valor This is the footer....

• Na linha inferior do Editor de Recurso, na caixa Nome, digite FooterText, na caixa Valor, digite This is the footer....

26. Salve e feche o arquivo de recurso.

a. No menu File, clique em Save App_GlobalResources\WebResources.resx ou pressione as teclas CTRL+S.

b. Na janela WebResources.resx, clique no botão Close.

27. Copie o arquivo App_GlobalResources\WebResources.resx em um novo arquivo chamado WebResources.de.resx, na pasta App_GlobalResources.

a. No Solution Explorer, na pasta App_GlobalResources, clique com o botão direito do mouse em WebResources.resx e clique em Copy.

b. No Solution Explorer, clique com o botão direito do mouse em App_GlobalResources e clique em Paste.

c. No Solution Explorer, na pasta App_LocalResources, clique com o botão direito do mouse em Cópia de WebResources.resx e clique em Rename.

d. Na caixa de texto, digite WebResources.de.resx e pressione ENTER.

28. Abra o arquivo App_GlobalResources\WebResources.de.resx.

• No Gerenciador de Soluções, na pasta App_GlobalResources, clique duas vezes em WebResources.de.resx.

29. Localize o recurso de cadeia de caracteres chamado FooterText com um novo valor de Dies ist der Fußzeile....

• No Resource Editor, na linha com o valor FooterText na coluna Name, na caixa Value, digite Dies ist der Fußzeile....

30. Salve e feche o arquivo de recurso.

a. No menu File, clique em Save App_GlobalResources\WebResources.de.resx ou pressione as teclas CTRL+S.

b. Na janela WebResources.de.resx, clique no botão Close.

31. Adicione um elemento h3 e, dentro do elemento h3, adicione um controle de servidor Label chamado FooterLabel, após o controle de servidor DescriptionLiteral.

a. Posicione o cursor depois do elemento DescriptionLiteral.

b. Digite o texto a seguir e pressione ENTER.

<h3></h3>

Page 103: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 103

c. Coloque o cursor entre as marcas h3 de abertura e fechamento.

d. Abra a Caixa de Ferramentas, expanda Standard e clique duas vezes emLabel.

e. Modifique o controle de servidor Label para que seja exibido da seguinte maneira.

<asp:Label ID="FooterLabel" runat="server" Text=""></asp:Label>

32. Modifique o controle Label, adicionando o seguinte texto à propriedade Text.

<%$ Resources:WebResources, FooterText %>

33. Execute o aplicativo.

a. No Solution Explorer, clique em Localization.

b. Na janela Localization — Microsoft Visual Studio, no menu Debug, clique em Start Without Debugging ou pressione CTRL+F5.

34. Verifique se o Formulário da Web Default.aspx exibe texto em inglês.

35. Mostre a home page Localization em alemão, alterando a preferência de idioma na caixa de diálogo Opções da Internet.

a. Na janela Home Page — Windows Internet Explorer, no menu Ferramentas, clique em Opções da Internet.

b. Na caixa de diálogo Opções da Internet, clique em Idiomas.

c. Na caixa de diálogo Preferência de Idioma, clique em Add.

d. Na caixa de diálogo Adicionar Idioma, na lista Idioma, clique em Alemão (Alemanha) [de-DE] e em OK.

e. Na caixa de diálogo Preferência de Idioma, na lista Idioma, clique em Alemão (Alemanha) [de-DE] e, em seguida, clique em Mover para cima.

36. Na caixa de diálogo Preferência de Idioma, clique em OK.

37. Na caixa de diálogo Opções da Internet, clique em OK.

38. Atualize a página no Windows® Internet Explorer®.

• Na janela Home Page — Windows Internet Explorer, pressione F5.

Observação: Agora, a página deverá estar em alemão.

39. Feche o Internet Explorer.

• Na janela Home Page — Windows Internet Explorer, clique no botão Fechar.

40. Feche o Visual Studio 2010.

• Na janela Localization — Microsoft Visual Studio, clique no botão Fechar.

Page 104: 10714A-PTB-Companion.pdf

104 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Módulo 8 Otimização do gerenciamento de dados para formulários da Web

Sumário: Lição 1: Gerenciamento de dados com o LINQ to Entities 105

Lição 2: Uso de controles de fonte de dados 110

Lição 3: Usando o ASP.NET Dynamic Data 114

Page 105: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 105

Lição 1 Gerenciamento de dados com o LINQ to Entities

Sumário: Perguntas e respostas 106

Passos detalhados de demonstração 107

Leituras adicionais 109

Page 106: 10714A-PTB-Companion.pdf

106 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas Visão geral do LINQ to Entities

Pergunta: Qual infraestrutura as consultas do LINQ to Entities usam para interagir com o Modelo de Dados de Entidade como objetos CLR?

Resposta: As consultas do LINQ to Entities usam a infraestrutura Serviços de Objeto para interagir com o modelo de dados de entidade como objetos CLR.

Visão geral dos Serviços de Objeto do ADO.NET Entity Framework Pergunta: O que são entidades POCO?

Resposta: As entidades POCO são tipos de CLR “básicos”.

O Modelo de Dados de Entidade Pergunta: Qual é a primeira etapa da criação de um Modelo de Dados de Entidade?

Resposta: É necessário primeiramente definir as entidades e as relações, se houver, em um esquema de design.

Demonstração: Criação de um modelo de dados de entidade Pergunta: O que significa colocar no plural ou no singular nomes de objetos generalizados?

Resposta: Significa que as regras do idioma inglês serão usadas para singularizar todos os nomes EntityType, pluralizar todos os nomes EntitySet, singularizar o nome de cada NavigationProperty que retornar no máximo uma entidade e pluralizar o nome de cada NavigationProperty que retornar mais de uma entidade.

Programação orientada a objeto usando o LINQ to Entities Pergunta: Qual é a primeira etapa quando você deseja usar um Modelo de Dados de Entidade do seu código?

Resposta: É necessário criar uma instância do tipo derivado ObjectContext.

Operações CRUD usando o LINQ to Entities Pergunta: Qual método é usado para enviar as alterações locais para o banco de dados?

Resposta: O método SaveChanges é usado para enviar as alterações locais ao banco de dados.

Page 107: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 107

Passos detalhados de demonstração Demonstração: Criação de um modelo de dados de entidade Esta demonstração mostra como criar um Modelo de Dados de Entidade.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução EDM na pasta D:\Demofiles\VB ou D:\Demofiles\CS.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\VB\EDM.sln ou D:\Demofiles\CS\EDM.sln e clique em Abrir.

3. Adicione um projeto ADO.NET Entity Data Model denominado AdventureWorks.edmx.

a. No Solution Explorer, clique com o botão direito do mouse em EDM, aponte para Add e clique em New Item.

b. Na caixa de diálogo Add New Item — EDM, no painel esquerdo, clique em Data e, em seguida, no painel intermediário, clique em ADO.NET Entity data Model.

c. Na caixa Name, digite AdventureWorks.edmx e, em seguida, clique em Add.

d. No Entity Data Model Wizard, na página Choose Model Contents, clique em Generate from database e, em seguida, clique em Next.

e. Na página Choose Your Data Connection, clique em New Connection.

f. Se a caixa de diálogo Choose Data Source abrir, na lista Data source, clique em Microsoft SQL Server e, em seguida, clique em Continue.

g. Na caixa de diálogo Connection Properties, na caixa Server name, digite 10714A-GEN-DEV\ SQLEXPRESS, na caixa Select or enter a database name, digite AdventureWorksLT2008R2 e clique em OK.

h. No Entity Data Model Wizard, na página Choose Your Data Connection, visualize as configurações atualizadas, derivadas do banco de dados selecionado e clique em Next.

i. Na página Choose Your Database Objects, na lista Which database objects do you want to include in your model?, expanda Tables, selecione a caixa Tables, desmarque a caixa de seleção BuildVersion (dbo) e clique em Finish.

Observação: Se a caixa Pluralize or singularize generated object names estiver selecionada, o assistente usará regras do idioma inglês para nomes no singular e no plural e fará o seguinte: definirá todos os nomes EntityType no singular e todos os nomes EntitySet no plural; e para NavigationProperty, para cada uma que retornar, no máximo, uma entidade, definirá o nome no singular, e para cada uma que retornar mais de uma entidade, definirá o nome no plural.

Se a caixa Include foreign key columns in the model for selecionada, o assistente gerará propriedades em tipos de entidade que correspondam a colunas de chave estrangeira no banco de dados.

Page 108: 10714A-PTB-Companion.pdf

108 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

j. Reveja as propriedades de entidade.

k. Na janela AdventureWorks.edmx, clique na entidade Customer e mostre a janela Properties.

Observe como a propriedade Entity Set Name está no plural (Customers), e a propriedade Name está no singular (Customer).

l. Reveja o mapeamento.

a. Na janela AdventureWorks.edmx, clique e expanda a janela Mapping Details — Customer.

b. Em Column Mappings, especificamente, observe como a coluna NameStyle SQL Server bit está mapeada para um tipo de dados Booleano/bool do .NET Framework.

4. Feche o item ADO.NET Entity Data Model.

• Na janela AdventureWorks.edmx, clique no botão Close.

5. Feche o Visual Studio 2010.

a. Na janela EDM — Microsoft Visual Studio, clique no botão Close.

b. Na caixa de diálogo Microsoft Visual Studio, clique em Yes.

Page 109: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 109

Leituras adicionais Visão geral do LINQ to Entities

Para obter mais informações sobre o ADO.NET Entity Framework, consulte ADO.NET Entity Framework.

Visão geral dos Serviços de Objeto do ADO.NET Entity Framework

Para obter mais informações sobre entidades e proxies POCO, consulte Working with POCO Entities (Entity Framework) (Trabalhando com entidades POCO (Entity Framework)).

Para obter mais informações sobre entidades de autorrastreamento, consulte Working with Self-Tracking Entities (Entity Framework) (Trabalhando com entidades de autorrastreamento (Entity Framework)).

Para obter mais informações sobre o Entity SQL, consulte Entity SQL Overview (Visão geral do Entity SQL).

O Modelo de Dados de Entidade

Para obter mais informações sobre a especificação do Modelo de Dados de Entidade, consulte EDM Specifications (Especificações do EDM).

Page 110: 10714A-PTB-Companion.pdf

110 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 2 Uso de controles de fonte de dados

Sumário: Perguntas e respostas 111

Leituras adicionais 112

Page 111: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 111

Perguntas e respostas Tipos de controles de fonte de dados

Pergunta: Qual controle de fonte de dados você deveria usar para gerenciar a navegação no site?

Resposta: Você deve usar o controle SiteMapDataSource para gerenciar a navegação no site.

Recursos de controles de fonte de dados Pergunta: Qual propriedade do controle LinqDataSource é necessário definir para ativar a classificação?

Resposta: É necessário definir a propriedade AllowSorting com o valor true para habilitar a classificação.

Técnicas avançadas do controle GridView Pergunta: Qual elemento XML é usado para personalizar a exibição de uma fonte de dados vazia no controle GridView?

Resposta: O elemento EmptyDataTemplate é usado para personalizar a exibição de uma fonte de dados vazia no controle GridView.

Passo a passo: criando um TemplateField de um GridView Pergunta: Qual caixa de diálogo pode ser usada para criar um objeto TemplateField para o controle GridView?

Resposta: Use a caixa de diálogo Fields para criar um objeto TemplateField para o controle GridView.

Como usar os controles ListView e DetailsView Pergunta: Qual elemento de modelo do controle ListView é usado para especificar a aparência de um item editado no momento?

Resposta: O EditItemTemplate é usado para especificar a aparência do item que está sendo modificado no momento em um controle ListView.

Usando o controle Microsoft Chart Pergunta: Onde o controle Chat é encontrado no Visual Studio 2010?

Resposta: O controle Chart pode ser encontrado na guia Data da Toolbox no Visual Studio 2010.

Page 112: 10714A-PTB-Companion.pdf

112 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Leituras adicionais Tipos de controles de fonte de dados

Para obter mais informações sobre o controle AccessDataSource, consulte AccessDataSource Web Server Control Overview (Visão geral do controle de servidor Web AccessDataSource).

Para obter mais informações sobre o controle ObjectDataSource, consulte Visão geral sobre o controle de servidor Web ObjectDataSource.

Para obter mais informações sobre o controle SiteMapDataSource, consulte Visão Geral sobre o Controle SiteMapDataSource do Servidor Web.

Para obter mais informações sobre o controle SqlDataSource, consulte Visão geral sobre o controle de servidor Web SqlDataSource.

Para obter mais informações sobre o controle XmlDataSource, consulte Visão Geral sobre o Controle de Servidor Web XmlDataSource.

Recursos de controles de fonte de dados

Para obter mais informações sobre vinculação usando controles de fonte de dados, consulte Binding to Data Using a Data Source Control (Efetuando a vinculação a dados usando um controle de fonte de dados).

Para obter mais informações sobre classificação usando controles de fonte de dados, consulte Sorting Data with Data Source Controls (Classificando dados com controles de fonte de dados).

Para obter mais informações sobre a filtragem usando controles de fonte de dados, consulte Filtragem de dados usando controles de fonte de dados.

Para obter mais informações sobre filtragem usando o controle XmlDataSource, consulte Filtering Data Using the XmlDataSource Control (Filtrando dados com o controle XmlDataSource).

Para obter informações sobre os tipos de parâmetros que podem ser usados na coleção FilterParameters, consulte Using Parameters with Data Source Controls (Usando parâmetros com controles de fonte de dados).

Page 113: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 113

Técnicas avançadas do controle GridView

Para obter mais informações sobre a classe PagerSettings, consulte PagerSettings Class (Classe PagerSettings).

Como usar os controles ListView e DetailsView

Para obter mais informações sobre o controle ListView, consulte Visão Geral sobre o Controle do Servidor Web ListView.

Para obter mais informações sobre o controle DetailsView control, consulte Visão geral do controle de servidor Web DetailsView.

Usando o controle Microsoft Chart

Para obter alguns exemplos de como usar os controles Microsoft Chart, consulte Samples Environment for Microsoft Chart Controls (Ambiente de exemplos para os controles Microsoft Chart).

Page 114: 10714A-PTB-Companion.pdf

114 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 3 Usando o ASP.NET Dynamic Data

Sumário: Perguntas e respostas 115

Passos detalhados de demonstração 116

Leituras adicionais 119

Page 115: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 115

Perguntas e respostas O que são Dados Dinâmicos ASP.NET?

Pergunta: O que o scaffolding faz no contexto do ASP.NET Dynamic Data?

Resposta: O scaffolding é usado para aperfeiçoar a estrutura da página de formulários da Web ASP.NET existente, exibindo as páginas de forma dinâmica, com base nos dados e metadados expostos pelo modelo de dados.

Recurso scaffolding dos Dados Dinâmicos ASP.NET Pergunta: Qual a finalidade do atributo ScaffoldColumn?

Resposta: Ele é usado para mostrar ou ocultar uma coluna ou um campo na interface do usuário.

Recurso de roteamento dos Dados Dinâmicos ASP.NET Pergunta: Em qual arquivo o roteamento do ASP.NET Dynamic Data é definido?

Resposta: O roteamento do ASP.NET Dynamic Data é definido no arquivo de aplicativo global.

Demonstração: Criação de um aplicativo Web dos Dados Dinâmicos ASP.NET

Pergunta: Qual é a finalidade do método RegisterContext?

Resposta: O método RegisterContext é usado para registrar o contexto de dados ou de objeto.

Page 116: 10714A-PTB-Companion.pdf

116 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Criação de um aplicativo Web dos Dados Dinâmicos ASP.NET Execute a etapa a seguir para criar e personalizar o aplicativo ASP.NET Dynamic Data.

1. Abra o Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Crie um aplicativo Web usando a caixa de diálogo New Project.

a. No menu File, clique em New Project.

b. Na caixa de diálogo New Project, no painel esquerdo, clique em Visual Basic ou em Visual C#.

c. No painel intermediário, clique em ASP.NET Dynamic Data Entities Web Application.

d. Na caixa Name, digite DDWebApp, na caixa Location, digite D:\Demofiles\VB ou D:\Demofiles\CS e clique em OK.

3. Adicione um projeto ADO.NET Entity Data Model denominado AdventureWorks.edmx.

a. No Solution Explorer, clique com o botão direito do mouse em DDWebApp, aponte para Add e clique em New Item.

b. Na caixa de diálogo Add New Item — DDWebApp, no painel esquerdo, clique em Data e, no painel central, clique em ADO.NET Entity data Model.

c. Na caixa Name, digite AdventureWorks.edmx e, em seguida, clique em Add.

4. No Entity Data Model Wizard, na página Choose Model Contents, clique em Generate from database e, em seguida, clique em Next.

5. Na página Choose Your Data Connection, clique em New Connection.

6. Na caixa de diálogo Connection Properties, na caixa Server name, digite 10714A-GEN-DEV\SQLEXPRESS, na caixa Select or enter a database name, digite AdventureWorksLT2008R2 e clique em OK.

7. No Entity Data Model Wizard, na página Choose Your Data Connection, clique em Next.

8. Na página Choose Your Database Objects, na lista Which database objects do you want to include in your model?, expanda Tables, selecione a caixa Tables, desmarque a caixa de seleção BuildVersion (dbo) e clique em Finish.

9. Salve e feche o arquivo AdventureWorks.edmx.

a. No menu File do Visual Studio 2010, clique em Save AdventureWorks.edmx.

b. Na janela AdventureWorks.edmx, clique no botão Close.

10. No arquivo Global.asax.vb ou Global.asax.cs, adicione registro de contexto ao procedimento RegisterRoutes.

[Visual Basic] DefaultModel.RegisterContext(GetType(AdventureWorksLT2008R2Entities), New ContextConfiguration() With {.ScaffoldAllTables = True}) [Visual C#]

Page 117: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 117

DefaultModel.RegisterContext(typeof(AdventureWorksLT2008R2Entities), new ContextConfiguration() { ScaffoldAllTables = true });

• Na janela Global.asax.vb ou Global.asax.cs, adicione o seguinte código à parte superior do procedimento RegisterRoutes.

[Visual Basic] DefaultModel.RegisterContext(GetType(AdventureWorksLT2008R2Entities), New ContextConfiguration() With {.ScaffoldAllTables = True})

[Visual C#] DefaultModel.RegisterContext(typeof(AdventureWorksLT2008R2Entities), new ContextConfiguration() { ScaffoldAllTables = true });

Observação: indique que isso irá registrar o contexto de objeto do modelo de dados de entidade para uso utilizando o campo Dynamic Data e ative o scaffolding automático do modelo de dados.

11. Salve e feche o arquivo Global.asax.vb ou Global.asax.cs.

a. No menu File do Visual Studio 2010, clique em Save Global.asax.vb ou Save Global.asax.cs.

b. Na janela Global.asax.vb ou Global.asax.cs, clique no botão Close.

12. Crie e execute o aplicativo Web.

• No menu Debug do Visual Studio 2010, clique em Start Without Debugging.

• A página exibida no navegador mostra uma lista das tabelas adicionadas ao modelo de dados.

13. Teste o aplicativo Web para a funcionalidade Dados Dinâmicos e exiba algumas páginas geradas dinamicamente.

a. Na janela Dynamic Data Site — Windows Internet Explorer, clique em Addresses.

A página mostrará a exibição de lista que contém os dados da tabela de Addresses.

b. Na janela Addresses — Windows Internet Explorer, clique em Details, à esquerda de um endereço.

A página mostrará a exibição de detalhes que contém os dados da linha selecionada da tabela de Addresses.

c. Na janela Addresses — Windows Internet Explorer, clique em Show all items e em PostalCode.

A página mostrará a exibição de lista que contém os dados de endereços, classificados por código postal.

Page 118: 10714A-PTB-Companion.pdf

118 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

d. Na janela Addresses — Windows Internet Explorer, na primeira linha, em CustomerAddresses, clique em View CustomerAddresses.

A página exibe o modo de exibição de lista que contém os dados dos endereços dos clientes.

e. Na lista Address, clique em All.

f. Na janela CustomerAddresses — Windows Internet Explorer, no final da página, clique em Insert new item para criar um novo endereço de cliente.

g. Na janela CustomerAddresses — Windows Internet Explorer, no final da página, clique em Insert e exiba a validação inteligente adicionada aos campos obrigatórios e, em seguida, clique em Cancel.

A página exibe o modo de exibição de lista que contém os dados da tabela CustomerAddresses. Essa é a exibição padrão e é para ela que você voltará após o cancelamento.

h. Na janela CustomerAddresses — Windows Internet Explorer, à esquerda de um endereço de cliente, clique em Edit para modificar um endereço de cliente.

A página exibe o modo de exibição de edição que contém os dados da linha selecionada da tabela CustomerAddresses.

i. Na janela CustomerAddresses — Windows Internet Explorer, no final da página, clique em Cancel para cancelar a operação de edição.

14. Feche o Windows Internet Explorer.

• Na janela CustomerAddresses — Windows Internet Explorer, clique no botão Fechar.

15. Feche o Visual Studio 2010.

• Na janela DDWebApp — Microsoft Visual Studio, clique no botão Fechar.

Page 119: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 119

Leituras adicionais O que são Dados Dinâmicos ASP.NET?

Para obter mais informações sobre como o modelo de dados representa as informações em um banco de dados e como os objetos no banco de dados se relacionam entre si, consulte ASP.NET Dynamic Data Model Overview (Visão geral do modelo de dados do ASP.NET Dynamic Data).

Para obter mais informações sobre o controle DynamicControl, consulte DynamicControl Class (Classe DynamicControl).

Para obter mais informações sobre o controle DynamicField , consulte DynamicField Class (Classe DynamicField).

Recurso scaffolding dos Dados Dinâmicos ASP.NET

Para obter mais informações sobre como o método MetaModel.RegisterContext registra o contexto de dados no modelo meta, consulte MetaModel.RegisterContext Method (Método MetaModel.RegisterContext).

Para obter mais informações sobre como a classe ContextConfiguration fornece informações para uma instância de contexto de dados para permitir a personalização, consulte ContextConfiguration Class (Classe ContextConfiguration).

Para obter mais informações sobre como a classe MetadataTypeAttribute especifica a classe de metadados para associação a uma classe de modelo de dados, consulte MetadataTypeAttribute Class (Classe MetadataTypeAttribute).

Para obter mais informações sobre personalização de modelos de página, consulte How to: Customize the Layout of an Individual Table By Using a Custom Page Template (Como personalizar o layout de uma tabela individual usando um modelo de página personalizada).

Para obter mais informações sobre personalização de modelos de entidade, consulte Walkthrough: Customizing Table Layout Using Entity Templates (Passo a passo: personalizando o layout da tabela usando modelos de entidade).

Para obter mais informações sobre a personalização de modelos de campo, consulte How: Customize ASP.NET Dynamic Data Default Field Templates (Como personalizar os modelos de campo padrão do ASP.NET Dynamic Data).

Para obter mais informações sobre a personalização de modelos de filtro, consulte Walkthrough: Filtering Rows in Tables That Have a Parent-Child Relationship (Passo a passo: filtrando linhas em tabelas que têm uma relação pai-filho).

Page 120: 10714A-PTB-Companion.pdf

120 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Recurso de roteamento dos Dados Dinâmicos ASP.NET

Para obter mais informações sobre o roteamento ASP.NET, consulte ASP.NET Routing (Roteamento ASP.NET).

Demonstração: Criação de um aplicativo Web dos Dados Dinâmicos ASP.NET

Para obter mais informações sobre como criar um site controlado por dados com o mínimo de códigos ou nenhum código, consulte Walkthrough: Creating a New ASP.NET Dynamic Data Web Site Using Scaffolding (Passo a passo: criando um novo site Web ASP.NET Dynamic Data usando scaffolding).

Page 121: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 121

Módulo 9 Assegurando a qualidade com a depuração, o teste de unidade e a refatoração

Sumário: Lição 1: Depuração e refatoração de código 122

Lição 2: Código de teste de unidade 129

Lição 4: Desenvolvimento voltado para teste 133

Page 122: 10714A-PTB-Companion.pdf

122 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 1 Depuração e refatoração de código

Sumário: Perguntas e respostas 123

Passos detalhados de demonstração 124

Page 123: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 123

Perguntas e respostas Visão geral da depuração usando as ferramentas de depuração do Visual Studio 2010

Pergunta: Qual percentual de desenvolvimento de tempo que você passa depurando?

Resposta: Pode variar.

Pergunta: Sem um depurador, qual seria outro método de depurar um aplicativo?

Resposta: Gravar um código que registre erros ou informações em log.

O que é refatoração? Pergunta: Que problemas você teria ao refatorar código sem usar uma ferramenta?

Resposta: Pode variar, mas talvez nem todas as instâncias de um objeto tenham sido renomeadas.

Pergunta: Qual o percentual de tempo de desenvolvimento que você passa refatorando código?

Resposta: Pode variar, mas os desenvolvedores que usam o TDD em geral irão refatorar mais.

Pergunta: Quais ferramentas de terceiros você usou para realizar a refatoração?

Resposta: Pode variar.

Page 124: 10714A-PTB-Companion.pdf

124 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Habilitando a depuração de um aplicativo Web Nesta demonstração, você verá como habilitar a depuração de um aplicativo Web.

1. Abra o Microsoft® Visual Studio.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

1. Crie um novo aplicativo Web ASP.NET usando a caixa de diálogo New Project.

a. No menu File, clique em New Project.

b. Na caixa de diálogo New Project, no painel esquerdo, clique em Visual Basic ou em Visual C#.

c. No painel intermediário, clique em ASP.NET Web Application.

d. Na caixa Name, digite DebugWebApp, na caixa Location, digite D:\Demofiles\VB ou D:\Demofiles\CS e clique em OK.

2. Crie o projeto.

• Na janela DebugWebApp — Microsoft Visual Studio, no menu Compilar, clique em Compilar DebugWebApp.

3. Abra o arquivo Web.config.

• No Solution Explorer, clique duas vezes em Web.config.

4. Navegue para o elemento system.web de fechamento automático e observe os atributos e os valores na marca compilation.

5. No Solution Explorer, clique com o botão direito do mouse em DebugWebApp e, em seguida, clique em Properties.

6. Abra a página da Web.

• No Properties Designer, clique em Web.

7. Examine as várias opções na página Web.

8. Na seção Debuggers, verifique se a caixa de seleção ASP.NET está marcada.

9. Feche o Properties Designer.

• Na janela DebugWebApp, clique no botão Close.

10. Feche o Microsoft Visual Studio 2010.

• Na janela DebugWebApp — Microsoft Visual Studio, clique no botão Fechar.

Page 125: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 125

Demonstração: Refatoração “Extract Method” Nesta demonstração, você aprenderá a extrair um método de um código existente. A solução da demonstração Habilitar depuração de um aplicativo Web está sendo usada.

1. Abra o Microsoft Visual Studio.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução DebugWebApp da pasta D:\Demofiles\CS\DebugWebApp.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project.

b. Na caixa de diálogo Open Project, na caixa Nome , digite D:\Demofiles\CS\DebugWebApp\DebugWebApp.sln e clique em Abrir.

3. Abra Default.aspx no modo de exibição de código.

• No Solution Explorer, clique com o botão direito do mouse em Default.aspx e, em seguida, clique em View Code.

4. No método Page_Load, digite o código a seguir:

[Visual C#] protected void Page_Load(object sender, EventArgs e) { var i = 1; var j = 2; var answer = i + j; }

5. Selecione as três linhas de código que você acabou de adicionar.

6. Clique com o botão direito do mouse na seleção, aponte para Refatorar e clique em Extract Method.

7. Na caixa de diálogo Extract Method, na caixa New method name, digite Add e clique em OK.

Observação: O código foi extraído em um novo método e a função foi chamada em seu lugar.

8. Crie o projeto.

• Na janela DebugWebApp — Microsoft Visual Studio, no menu Compilar, clique em Compilar DebugWebApp.

9. Feche o Microsoft Visual Studio 2010.

• Na janela DebugWebApp — Microsoft Visual Studio, clique no botão Fechar.

Page 126: 10714A-PTB-Companion.pdf

126 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Demonstração: Refatoração “Encapsulate Field” Nesta demonstração, você verá como encapsular um campo. A solução da demonstração Habilitar depuração de um aplicativo Web está sendo usada.

1. Abra o Microsoft Visual Studio.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução DebugWebApp da pasta D:\Demofiles\CS\DebugWebApp.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\DebugWebApp\DebugWebApp.sln e clique em Abrir.

3. No Solution Explorer, clique com o botão direito do mouse em DebugWebApp, aponte para Add e clique em Class.

4. Na caixa de diálogo Adicionar Novo Item — DebugWebApp, na caixa Nome, digite Person e clique em Adicionar.

5. Crie uma variável privada exclusiva denominada name, adicionando o código a seguir

[Visual C#] public class Person { private string name; }

6. Na janela Person.cs, clique com o botão direito do mouse em name, aponte para Refatorar e clique em Encapsulate Field.

7. Na caixa de diálogo Encapsulate Field, clique em OK.

8. Na caixa de diálogo Preview Reference Changes — Encapsulate Field, clique em Apply.

Observação: A nova propriedade com os acessadores foi criada.

9. Crie o projeto.

• Na janela DebugWebApp — Microsoft Visual Studio, no menu Compilar, clique em Compilar DebugWebApp.

10. Feche o Microsoft Visual Studio 2010.

• Na janela DebugWebApp — Microsoft Visual Studio, clique no botão Fechar.

Page 127: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 127

Demonstração: Refatoração “Extract Interface” Nesta demonstração, você verá como extrair uma interface de uma classe existente. A solução da demonstração Habilitar depuração de um aplicativo Web está sendo usada.

1. Abra o Microsoft Visual Studio.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução DebugWebApp da pasta D:\Demofiles\CS\DebugWebApp.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\DebugWebApp\DebugWebApp.sln e clique em Abrir.

3. Abra o arquivo Person.cs.

• No Solution Explorer, clique duas vezes em Person.cs.

4. Adicione a variável de membro age, a propriedade Age e o método Hire à classe Person.

[Visual C#] public class Person { private string name; public string Name { get { return name; } set { name = value; } } private int age; public int Age { get { return age; } set { age = value; } } public void Hire() { // implementation Code } }

• Na janela Person.cs, na classe Person, anexe o código a seguir.

[Visual C#] private int age; public int Age { get { return age; } set { age = value; } }

Page 128: 10714A-PTB-Companion.pdf

128 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

public void Hire() { // implementation Code }

5. Clique com o botão direito do mouse em Person, aponte para Refactor e clique em Extract Interface.

6. Na caixa de diálogo Extract Interface, marque as caixas de seleção Age, Hire() e Name e clique em OK.

Observação: A nova interface é criada em um novo arquivo agora.

7. Exiba o arquivo Person.cs e observe como a classe agora implementa a nova interface.

• Na janela DebugWebApp — Microsoft Visual Studio, clique em Person.cs.

8. Crie o projeto.

• Na janela DebugWebApp — Microsoft Visual Studio, no menu Compilar, clique em Compilar DebugWebApp.

9. Feche o Microsoft Visual Studio 2010.

• Na janela DebugWebApp — Microsoft Visual Studio, clique no botão Fechar.

Page 129: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 129

Lição 2 Código de teste de unidade

Sumário: Perguntas e respostas 130

Passos detalhados de demonstração 131

Page 130: 10714A-PTB-Companion.pdf

130 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas O que é o Teste de Unidade?

Pergunta: Você já isolou um erro em um módulo integrado e depois aplicou uma correção?

Resposta: Pode variar.

Pergunta: Qual o percentual de tempo de desenvolvimento gasto para escrever testes?

Resposta: Pode variar.

Etapas de teste de unidade opcionais Pergunta: Como o teste de unidade ajuda a documentar o código?

Resposta: Pode variar.

Pergunta: Que ferramentas de terceiros você usou para escrever testes de unidade?

Resposta: Pode variar.

Page 131: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 131

Passos detalhados de demonstração Demonstração: Criando e executando um teste de unidade Nesta demonstração, você verá como criar e executar um teste de unidade.

1. Abra o Microsoft Visual Studio.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução UnitTest na pasta D:\Demofiles\CS ou D:\Demofiles\VB.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\UnitTest.sln ou D:\Demofiles\VB\UnitTest.sln e clique em Abrir.

3. Abra o arquivo Person.cs ou Person.vb.

• No Solution Explorer, clique duas vezes em Person.cs ou Person.vb.

4. Modifique a propriedade Age da seguinte maneira:

[Visual C#] public int Age { get { return personAge; } set { if (value < 21) throw new Exception("Age must be greater than 21"); personAge = value; } }

[Visual Basic] Public Property Age As Integer Get Return personAge End Get Set(ByVal value As Integer) If value < 21 Then Throw New Exception("Age must be greater than 21") End If personAge = value End Set End Property

5. Clique com o botão direito do mouse em qualquer lugar no código para a propriedade Age e clique em Create Unit Tests.

6. Na caixa de diálogo Create Unit Tests, verifique se a caixa de seleção Age está marcada e clique em OK.

Page 132: 10714A-PTB-Companion.pdf

132 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

7. Na caixa de diálogo New Test Project, clique em Criar.

Observação: Observe o novo projeto criado para teste de unidade.

8. No arquivo PersonTest.cs ou PersonTest.vb aberto, examine o método de teste AgeTest.

9. Altere o código de declaração da variável local expected da forma a seguir.

[Visual C#] int expected = 25;

[Visual Basic] Dim expected As Integer = 25

10. Exclua o código a seguir.

[Visual C#] Assert.Inconclusive("Verify the correctness of this test method.");

[Visual Basic] Assert.Inconclusive("Verify the correctness of this test method.")

11. Clique com o botão direito do mouse na declaração de método AgeTest e clique em Run Tests.

Observação: Na janela Resultados de Teste, observe o teste AgeTest aprovado.

12. Altere o código de declaração da variável local expected da forma a seguir.

[Visual C#] int expected = 2;

[Visual Basic] Dim expected As Integer = 2

13. Clique com o botão direito do mouse na declaração de método AgeTest e clique em Run Tests.

Observação: Na janela Test Results, observe que o teste AgeTest falhou.

14. Feche o Microsoft Visual Studio 2010.

• Na janela UnitTest — Microsoft Visual Studio, clique no botão Fechar.

Page 133: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 133

Lição 4 Desenvolvimento voltado para teste

Sumário: Perguntas e respostas 134

Page 134: 10714A-PTB-Companion.pdf

134 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas Vantagens do desenvolvimento voltado para teste em relação ao desenvolvimento tradicional

Pergunta: Quais obstáculos você antevê ao realizar a transição do desenvolvimento tradicional para o desenvolvimento voltado para teste?

Resposta: Pode variar, mas poderia incluir uma curva de aprendizado aprimorada e um tempo de desenvolvimento maior.

Pergunta: Qual o percentual de código que você escreve para testes de unidade?

Resposta: Pode variar.

O processo de desenvolvimento voltado para teste Os desenvolvedores devem fazer alterações no código funcional para que ele passe em todos os casos

Pergunta: Você já criou testes como parte da coleta de requisitos?

Resposta: Pode variar.

Pergunta: Como a criação de testes antes do desenvolvimento altera sua mentalidade?

Resposta: Pode variar.

Pergunta: Quais considerações de design você precisará fazer para realizar o desenvolvimento voltado para teste?

Resposta: Pode variar.

Page 135: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 135

Módulo 10 Proteção de um aplicativo Web

Sumário: Lição 1: Configurando a autenticação 136

Lição 2: Configuração da associação do ASP.NET 140

Lição 3: Gerenciando a autorização usando funções do ASP.NET 144

Page 136: 10714A-PTB-Companion.pdf

136 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 1 Configurando a autenticação

Sumário: Perguntas e respostas 137

Passos detalhados de demonstração 138

Page 137: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 137

Perguntas e respostas Autenticação do IIS

Pergunta: Qual é a diferença entre autenticação Básica e autenticação do Windows?

Resposta: A autenticação Básica exige que o nome de usuário e a senha sejam enviados por meio de texto não criptografado, enquanto a autenticação do Windows usa as credenciais do usuário conectado na rede.

Como configurar a autenticação de formulários Pergunta: Qual método de autenticação permite o uso de credenciais personalizadas em um aplicativo Web?

Resposta: A autenticação de Formulários permite que o desenvolvedor defina a autenticação personalizada para o aplicativo. Usando a autenticação de Formulários, o usuário pode ser validado em qualquer fonte de dados.

Page 138: 10714A-PTB-Companion.pdf

138 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Configurando a autenticação do IIS

Selecionar um site padrão no Gerenciador do Serviços de Informações da Internet (IIS) 1. Abra o Gerenciador do Serviços de Informações da Internet (IIS) como administrador.

a. No menu Iniciar de 10714A-GEN-DEV, aponte para Ferramentas Administrativas, clique com o botão direito do mouse em Gerenciador do Serviços de Informações da Internet (IIS) e, em seguida, clique em Executar como administrador.

b. Na caixa de diálogo Controle de Conta de Usuário, na caixa Senha, digite Pa$$w0rd e clique em Sim.

2. Na janela Gerenciador do Serviços de Informações da Internet (IIS), no painel esquerdo, expanda 10714-GEN-DEV (10714-GEN-DEV\Admin) e Sites.

3. Clique em Default Web e observe as opções disponíveis no painel direito.

Configurar a autenticação anônima 1. No painel Autenticação, na seção IIS , clique duas vezes em Autenticação.

2. Clique com o botão direito do mouse em Autenticação Anônima e em Habilitar ou Desabilitar para habilitar ou desabilitar a autenticação anônima para o aplicativo Web selecionado.

3. Clique com o botão direito do mouse em Autenticação Anônima e em Editar para editar as credenciais usadas com autenticação anônima.

4. Clique em Cancelar na caixa de diálogo Editar Credenciais de Autenticação Anônima.

Configurar a autenticação básica 1. No painel Autenticação, na seção IIS, clique duas vezes em Autenticação.

2. Clique com o botão direito do mouse em Autenticação Básica e, em seguida, clique em Habilitar ou Desabilitar a fim de habilitar ou desabilitar a autenticação básica para o aplicativo Web selecionado.

3. Clique com o botão direito do mouse em Autenticação Básica e clique em Editar para editar o domínio padrão ou o realm usado com a autenticação básica. O domínio padrão é usado para especificar o domínio no qual os usuários são autenticados por padrão. O realm, um endereço ou nome de domínio DNS, usa as credenciais que foram autenticadas como o domínio padrão.

4. Clique em Cancelar na caixa de diálogo Editar Configurações Básicas de Autenticação.

Page 139: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 139

Configurar a autenticação Digest 1. No painel Autenticação, na seção IIS , clique duas vezes em Autenticação.

2. Clique com o botão direito do mouse em Autenticação Digest e, em seguida, clique em Habilitar ou Desabilitar a fim de habilitar ou desabilitar a autenticação Digest para o aplicativo Web selecionado.

Observação: a máquina 10714A-GEN-DEV não é vinculada a um domínio, então, não é possível habilitar a autenticação Digest.

3. Clique com o botão direito do mouse em Autenticação Digest e, em seguida, clique em Editar para editar o realm usado com autenticação Digest. O realm, um endereço ou nome de domínio DNS, usa as credenciais que foram autenticadas como o domínio interno do Windows.

4. Clique em Cancelar na caixa de diálogo Editar Configurações Básicas de Autenticação Digest.

Configurar a autenticação do Windows 1. No painel Autenticação, na seção IIS , clique duas vezes em Autenticação.

2. Clique com o botão direito do mouse em Autenticação do Windows e, em seguida, clique em Habilitar ou Desabilitar a fim de habilitar ou desabilitar a autenticação do Windows para o aplicativo Web selecionado.

3. Clique com o botão direito do mouse em Autenticação do Windows e clique em Configurações Avançadas para configurar a Proteção Estendida e habilitar ou desabilitar a autenticação de modo Kernel. A Proteção Estendida aumenta a proteção e o processamento de credenciais ao autenticar conexões de rede usando a autenticação do Windows.

4. Clique em Cancelar na caixa de diálogo Configurações Avançadas.

Page 140: 10714A-PTB-Companion.pdf

140 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 2 Configuração da associação do ASP.NET

Sumário: Perguntas e respostas 141

Passos detalhados de demonstração 142

Page 141: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 141

Perguntas e respostas O que é a associação do ASP.NET?

Pergunta: Quais benefícios são obtidos quando se usa o padrão do provedor para a configuração de associação?

Resposta: A API de Associação do ASP.NET usa o modelo de provedor para conectar provedores de Associação. Isso permite que os desenvolvedores criem seu próprio modelo de provedor e usem esse modelo como o módulo de Associação.

Demonstração: Gerenciando usuários pela associação do ASP.NET Pergunta: A ASP.NET Web Site Administration Tool edita o Web.config raiz?

Resposta: Sim, a ASP.NET Web Site Administration Tool edita o arquivo Web.config raiz.

Como implementar o controle Login Pergunta: Como configurar um provedor padrão para a associação do ASP.NET?

Resposta: Você define o valor do atributo defaultProvider da marca de abertura membership no arquivo Web.config.

Page 142: 10714A-PTB-Companion.pdf

142 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Gerenciando usuários pela associação do ASP.NET Nesta demonstração, você aprenderá como gerenciar os usuários da associação do ASP.NET usando a ASP.NET Web Site Administration Tool.

1. Abra o Microsoft Visual Studio® 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010e, em seguida, clique em Microsoft Visual Studio 2010.

2. Crie um novo aplicativo Web ASP.NET denominado Module10 na pasta D:\Demofiles\CS ou D:\Demofiles\VB.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em New Project.

b. Na caixa de diálogo New Project, no painel esquerdo, clique em Visual C# ou em Visual Basic, no painel central, clique em ASP.NET Web Application, na caixa Name, digite Module10, na caixa Location, digite D:\Demofiles\CS ou D:\Demofiles\VB e clique em OK.

3. No Solution Explorer, clique em Module10.

4. Compile a solução.

• No menu Build, clique em Build Solution ou pressione CTRL+SHIFT+B.

5. No Solution Explorer, clique no botão ASP.NET Configuration.

Observação: a Web Site Administration Tool é aberta no Windows Internet Explorer®. Na página Home, você encontrará as seguintes opções.

Page 143: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 143

6. Na Web Site Administration Tool, na página Home, clique em Security.

Observação: na página Security, você encontrará as seguintes opções.

7. Na página Security, clique em Create user.

8. Na seção Create User, na caixa User Name, digite student, na caixa Password, digite Pa$$w0rd, na caixa Confirm Password, digite Pa$$w0rd, na caixa E-mail, digite [email protected] e clique em Create User.

9. Feche a ASP.NET Web Site Administration Tool.

• Na janela ASP.NET Web Site Administration Tool, clique no botão Fechar.

10. Abra a pasta App_Data no Windows Explorer, usando o Solution Explorer.

• No Solution Explorer, clique com o botão direito do mouse em App_Data e clique em Abrir pasta no Windows Explorer.

11. Observe que o novo banco de dados, ASPNETDB.MDF, e o arquivo de log correspondente aspnetdb_log.ldf, foram criados na pasta App_Data.

12. Feche o Windows Explorer.

• Na janela D:\Demofiles\CS\Module10\App_Data ou D:\Demofiles\VB\Module10\ App_Data, clique no botão Fechar.

13. Feche o Visual Studio 2010.

• Na janela Module10 — Microsoft Visual Studio, clique no botão Fechar.

Page 144: 10714A-PTB-Companion.pdf

144 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 3 Gerenciando a autorização usando funções do ASP.NET

Sumário: Perguntas e respostas 145

Passos detalhados de demonstração 146

Page 145: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 145

Perguntas e respostas O que são funções do ASP.NET?

Pergunta: Onde as funções são mantidas?

Resposta: As funções são mantidas na tabela aspnet_Roles. Para criar a tabela aspnet_Roles, é necessário executar a configuração do ASP.NET, conforme explicado na demonstração “Gerenciamento de funções do ASP.NET”. As funções atribuídas ao usuário são mantidas na tabela aspnet_UserInRoles.

Page 146: 10714A-PTB-Companion.pdf

146 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Gerenciando as funções do ASP.NET Nesta demonstração, você aprenderá como usar o arquivo Web.config e a API de funções para evitar que os usuários acessem recursos não autorizados.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução Module10 na pasta D:\Demofiles\CS\Module10\Module10.sln ou D:\Demofiles\VB\Module10\Module10.sln.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\Module10\ Module10.sln ou D:\Demofiles\VB\Module10\Module10.sln e clique em Abrir.

3. No Solution Explorer, clique em Module10.

4. Compile a solução.

• No menu Build, clique em Build Solution ou pressione CTRL+SHIFT+B.

5. No Solution Explorer, clique no botão ASP.NET Configuration.

6. Na Web Site Administration Tool, na página Home, clique em Security.

7. Na página Security, clique em Enable Roles.

8. Clique em Create or Manage roles.

9. Na caixa New role name, digite admin e clique em Add Role.

Observação: a função está criada.

10. Feche a ASP.NET Web Site Administration Tool.

• Na janela ASP.NET Web Site Administration Tool, clique no botão Fechar.

11. Feche o Visual Studio 2010.

• Na janela Module10 — Microsoft Visual Studio, clique no botão Fechar.

Page 147: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 147

Módulo 11 Aplicação de páginas mestras e CSS

Sumário: Lição 1: Aplicação de páginas mestras 148

Lição 2: Aplicação de CSS, aparências e temas 155

Page 148: 10714A-PTB-Companion.pdf

148 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 1 Aplicação de páginas mestras

Sumário: Perguntas e respostas 149

Passos detalhados de demonstração 150

Page 149: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 149

Perguntas e respostas Desafios ao fornecer uma interface de usuário consistente

Pergunta: Quais são alguns exemplos de problemas de interface do usuário inconsistentes que você experimentou com outros aplicativos Web e como isso impactou o uso do aplicativo?

Resposta: Pode variar.

Pergunta: Como esses problemas poderiam ter sido resolvidos para fornecer uma interface consistente?

Resposta: Pode variar.

O que é página mestra? Pergunta: Como as páginas mestras podem ajudá-lo a criar uma interface do usuário consistente?

Resposta: As páginas mestras agem como modelos para os formulários da Web e ajudam você a criar e manter o conteúdo básico de uma página de formulários da Web.

Demonstração: Usando uma página mestra em formulários da Web e páginas de exibição MVC

Pergunta: Quais ideias vêm à mente durante esta demonstração ao usar páginas mestras?

Resposta: Pode variar.

O que são páginas mestras aninhadas? Pergunta: Quais cenários, na sua experiência, poderiam ter se beneficiado do uso de páginas mestras aninhadas?

Resposta: Pode variar.

Modelo de evento de página mestra e relações Pergunta: Que ideias vêm em mente ao pensar sobre como páginas e páginas mestras podem interagir?

Resposta: Pode variar?

Pergunta: Quais preocupações você teria sobre a implementação dessa interação?

Resposta: Pode variar?

Page 150: 10714A-PTB-Companion.pdf

150 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Criando uma página mestra

Criação de uma página mestra 1. Abra o Microsoft® Visual Studio® 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Crie um novo aplicativo Web ASP.NET chamado NewMasterPage na pasta D:\Demofiles\CS ou D:\Demofiles\VB.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em New Project.

b. Na caixa de diálogo New Project, no painel esquerdo, clique em Visual C# ou em Visual Basic, no painel central, clique em ASP.NET Web Application, na caixa Name, digite NewMasterPage, na caixa Location, digite D:\Demofiles\CS ou D:\Demofiles\VB e clique em OK.

3. Crie uma página mestra denominada SingleColumn.Master na pasta raiz.

a. No Solution Explorer, clique com o botão direito do mouse em NewMasterPage, aponte para Add e clique em New Item.

b. Na caixa de diálogo Add New Item — NewMasterPage, no painel intermediário, clique em Master Page, na caixa Name, digite SingleColumn.Master e, em seguida, clique em Add.

4. O conteúdo na sua nova página mestra terá a seguinte aparência.

<%@ Master ... Inherits="NewMasterPage.SingleColumn" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <asp:ContentPlaceHolder ID="head" runat="server"> </asp:ContentPlaceHolder> </head> <body> <form id="form1" runat="server"> <div> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> </form> </body> </html>

5. Defina o valor do atributo ID do ContentPlaceHolder existente no elemento form como MainContentPlaceHolder.

<asp:ContentPlaceHolder ID="MainContentPlaceHolder" runat="server"> </asp:ContentPlaceHolder>

Page 151: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 151

6. No elemento form, e antes de abrir a marca div, crie um novo elemento div com um valor de atributo ID de cabeçalho.

<form id="form1" runat="server"> <div id="header"> </div>

7. No novo elemento div, adicione um novo controle ContentPlaceHolder e defina o valor de atributo ID como HeadContentPlaceHolder.

<div id="header"> <asp:ContentPlaceHolder ID="HeadContentPlaceHolder" runat="server"> </asp:ContentPlaceHolder> </div>

8. Abra a página mestra NewMasterPage no modo Design.

• Na janela SingleColumn.Master, clique em Design.

9. Observe o layout de coluna única, com dois controles ContentPlaceHolder.

10. Feche o Visual Studio 2010.

a. Na janela NewMasterPage — Microsoft Visual Studio, clique no botão Fechar.

b. Na caixa de diálogo do Microsoft Visual Studio, clique em No.

Demonstração: Usando uma página mestra em formulários da Web e páginas de exibição MVC

Usando uma página mestra em uma nova página de formulários da Web 1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução AdventureWorks na pasta D:\Demofiles\CS\Module11 ou D:\Demofiles\ VB\Module11.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\Module11\ AdventureWorks.sln ou D:\Demofiles\VB\Module11\AdventureWorks.sln e clique em Abrir.

Page 152: 10714A-PTB-Companion.pdf

152 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

3. Adicione ao projeto um novo formulário da Web denominado UsingMasterPage com base na página mestra Site.Master.

a. No Solution Explorer, clique com o botão direito do mouse em AdventureWorks, aponte para Add e clique em New Item.

b. Na caixa de diálogo Add New Item — AdventureWorks, no painel central, clique em Web Form using Master Page, na caixa Name, digite UsingMasterPage e clique em Add.

c. Na caixa de diálogo Select a Master Page, na lista Contents of folder, clique em Site.Master e em OK.

Observação: A sua marcação deverá ter uma aparência similar ao seguinte.

<%@ Page Title="" ... MasterPageFile="~/Site.Master" ... Inherits="AdventureWorks.UsingMasterPage" %> <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> </asp:Content>

4. No controle Content com um valor de atributo ContentPlaceHolderID de MainContent, digite Hello World, I am using a Master Page!.

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> Hello World, I am using a Master Page! </asp:Content>

5. Agora, teste sua página pressionando CTRL+F5.

Observação: A página renderizada deverá ter uma aparência similar ao seguinte.

Page 153: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 153

6. Feche o Windows® Internet Explorer®.

• Na janela http://localhost:xxxxx/UsingMasterPage.aspx — Windows Internet Explorer, clique no botão Fechar.

7. Feche a solução AdventureWorks.

• Na janela AdventureWorks — Microsoft Visual Studio, no menu File, clique em Close Solution.

Uso de uma página mestra em uma nova página de exibição do MVC 1. Abra a solução AdventureWorksMvc na pasta D:\Demofiles\CS\Module11 ou D:\Demofiles\

VB\Module11.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\Module11\ AdventureWorksMvc.sln ou D:\Demofiles\VB\Module11\AdventureWorksMvc.sln e clique em Abrir.

2. Adicione ao projeto uma nova exibição denominada UsingMasterPage.aspx com base na página mestra Site.Master. A exibição deverá ser renderizada pelo controlador Home e salva na pasta Views\Home.

a. No Solution Explorer, expanda Views, clique com o botão direito do mouse em Home, aponte para Add e clique em View.

b. Na caixa de diálogo Add View, na caixa View name, digite UsingMasterPage.aspx, verifique se a caixa Select master page está selecionada e se a caixa abaixo da caixa de seleção Select master page contém ~/Views/Shared/Site.Master e clique em Add.

Observação: A sua marcação deverá ter uma aparência semelhante à apresentada a seguir.

<%@ Page Title="" ... MasterPageFile="~/Views/Shared/Site.Master" ... %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> UsingMasterPage </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>UsingMasterPage</h2> </asp:Content>

3. No controle Content com um valor de atributo ContentPlaceHolderID de MainContent, no elemento h2, digite Hello World, I am using a Master Page!.

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2> Hello World, I am using a Master Page!</h2> </asp:Content>

4. Execute o aplicativo.

• No Solution Explorer, clique em AdventureWorksMvc e pressione CTRL+F5.

Page 154: 10714A-PTB-Companion.pdf

154 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

5. Teste a página de exibição, anexando a seguinte rota à URL existente, e pressione ENTER.

Home/UsingMasterPage

• Na janela Welcome to AdventureWorks — Windows Internet Explorer, na barra Address, anexe a seguinte URL.

Home/UsingMasterPage

Observação: A página renderizada deverá ter uma aparência similar ao seguinte.

6. Feche o Windows Internet Explorer.

• Na janela http://localhost:xxxx/Home/UsingMasterPage — Windows Internet Explorer, clique no botão Fechar.

7. Feche o Visual Studio 2010.

• Na janela AdventureWorksMvc — Microsoft Visual Studio, clique no botão Fechar.

Page 155: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 155

Lição 2 Aplicação de CSS, aparências e temas

Sumário: Perguntas e respostas 156

Passos detalhados de demonstração 157

Page 156: 10714A-PTB-Companion.pdf

156 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas O que são folhas de estilos em cascata?

Pergunta: Como a CSS permite aplicar sua interface do usuário de forma consistente a todo o aplicativo?

Resposta: Uma resposta é que você pode criar rapidamente estilos para serem aplicados aos elementos pai principais, e substituir (quando necessário) por elementos filho.

Demonstração: Criação de um arquivo CSS Pergunta: Que ideias vêm à mente ao criar e implementar esses estilos?

Resposta: Pode variar.

Recursos de CSS do Visual Studio Pergunta: Você conhece ou já usou qualquer outra ferramenta de CSS?

Resposta: Pode variar.

Page 157: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 157

Passos detalhados de demonstração Demonstração: Criação de um arquivo CSS

Criação de um arquivo CSS 1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução AdventureWorks na pasta D:\Demofiles\CS\Module11 ou D:\Demofiles\VB\Module11.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\Module11\ AdventureWorks.sln ou D:\Demofiles\VB\Module11\AdventureWorks.sln e clique em Abrir.

3. Na pasta Styles, crie um novo arquivo CSS denominado Demo.css.

a. No Solution Explorer, clique com o botão direito do mouse em Styles, aponte para Add e clique em New Item.

b. Na caixa de diálogo Add New Item — AdventureWorks, no painel intermediário, clique em Style Sheet, na caixa Nome, digite Demo.css e clique em Add.

4. Exclua o conteúdo padrão do documento Demo.css.

• Na janela Demo.css, pressione CTRL+A e DELETE.

5. Adicione os seguintes estilos de classe ao documento.

.demo-bg-1 { background-color:Lime; }

.demo-bg-2 { background-color:Fuchsia; }

.demo-bold { font-weight:bold; }

.demo-text-maroon { color:Maroon; }

• Na janela Demo.css, digite a seguinte marcação.

.demo-bg-1 { background-color:Lime; }

.demo-bg-2 { background-color:Fuchsia; }

.demo-bold { font-weight:bold; }

.demo-text-maroon { color:Maroon; }

6. Abra a página mestra Site.Master.

• No Solution Explorer, clique duas vezes em Site.Master.

7. Adicione a seguinte marcação ao elemento head, para vincular ao novo arquivo CSS.

<link href="~/Styles/Demo.css" rel="Stylesheet" type="text/css" />

• Na janela Site.Master, no elemento head, abaixo do elemento link, digite a seguinte marcação.

<link href="~/Styles/Demo.css" rel="Stylesheet" type="text/css" />

Page 158: 10714A-PTB-Companion.pdf

158 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

8. Edite o elemento div com o atributo class de main, para aplicar os estilos principais, demo-bg-1 e demo-text-maroon.

<div class="main demo-bg-1 demo-text-maroon">

• Na janela Site.Master, o elemento div com o atributo class de main, anexe a seguinte marcação ao atributo class.

demo-bg-1 demo-text-maroon

9. Edite o elemento div com o atributo class de rodapé, para aplicar os estilos de rodapé, demo-bg-2 e demo-bold.

<div class="footer demo-bg-2 demo-bold">

• Na janela Site.Master, o elemento div com o atributo class igual a footer, acrescente a seguinte marcação ao atributo class.

demo-bg-2 demo-bold

10. Teste a página pressionando CTRL+F5.

Observação: a página renderizada deverá ter a seguinte aparência.

11. Feche o Windows Internet Explorer.

• Na janela Home Page — Windows Internet Explorer, clique no botão Fechar.

12. Feche o Visual Studio 2010.

• Na janela AdventureWorks — Microsoft Visual Studio, clique no botão Fechar.

Page 159: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 159

Módulo 12 Desenvolvimento de scripts e serviços do lado do cliente

Sumário: Lição 1: Desenvolvimento de scripts do lado do cliente 160

Lição 2: Implementação do Ajax 164

Lição 3: Criação de serviços 168

Page 160: 10714A-PTB-Companion.pdf

160 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 1 Desenvolvimento de scripts do lado do cliente

Sumário: Perguntas e respostas 161

Passos detalhados de demonstração 162

Page 161: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 161

Perguntas e respostas Código do lado do cliente versus código do servidor

Pergunta: Se estivesse executando um site de hipoteca e precisasse implementar uma calculadora hipotecária, qual tipo de script você usaria — do lado do cliente ou de servidor?

Resposta: Scripts do lado do cliente (resposta mais rápida).

Pergunta: Como você garantiria o funcionamento do site, mesmo se o usuário desabilitasse o script do lado do cliente?

Resposta: Pode variar.

Criação de um script do lado do cliente Pergunta: Quais são os benefícios de manter o código do lado do cliente em um arquivo de script separado?

Resposta: Portabilidade, depuração mais fácil, modularidade.

Pergunta: Que outras operações você pode executar para reduzir o tamanho do script do lado do cliente?

Resposta: Pode variar.

Controles do ASP.NET usando um script do lado do cliente Pergunta: Por que é necessário validar a entrada do usuário no servidor e no lado do cliente?

Resposta: Sem a validação, os dados inválidos ou potencialmente perigosos são enviados ao servidor.

Page 162: 10714A-PTB-Companion.pdf

162 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Passos detalhados de demonstração Demonstração: Como adicionar um script do lado do cliente à página

Como adicionar código do lado do cliente usando um script embutido 1. Abra o Microsoft® Visual Studio® 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Crie um novo aplicativo Web ASP.NET chamado Script na pasta D:\Demofiles\CS ou D:\Demofiles\VB.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em New Project.

b. Na caixa de diálogo New Project, no painel esquerdo, clique em Visual C# ou em Visual Basic, no painel central, clique em ASP.NET Web Application, na caixa Name, digite Script, na caixa Location, digite D:\Demofiles\CS ou D:\Demofiles\VB e clique em OK.

3. Abra a página mestra Site.Master.

• No Solution Explorer, clique duas vezes em Site.Master.

4. Acrescente a marcação e o código a seguir após a marca html de fechamento.

<script type="text/JavaScript"> function inlineGreet() { alert('Hello World (inline)'); } </script>

Como adicionar código do lado do cliente usando um arquivo JavaScript separado 5. Adicione um novo arquivo JScript® chamado Site.js ao projeto.

a. No Solution Explorer, clique com o botão direito do mouse em Scripts, aponte para Add e clique em New Item.

b. Na caixa de diálogo Add New Item — Script, no painel central, clique em JScript File, na caixa Name, digite Site.js e clique em Add.

6. Adicione o código a seguir ao arquivo JScript.

function externalGreet() { alert('Hello World (external)'); }

7. Abra a página mestra Site.Master.

• Na janela Script — Microsoft Visual Studio, clique em Site.Master.

Page 163: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 163

8. Localize o elemento head.

9. Adicione a marcação a seguir ao elemento head.

<head runat="server"> <title></title> <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" /> <asp:ContentPlaceHolder ID="HeadContent" runat="server"> </asp:ContentPlaceHolder> <script src="Scripts/Site.js" type="text/JavaScript" /> </head>

• Na janela Site.Master, acrescente a marcação a seguir ao elemento head.

<script src="Scripts/Site.js" type="text/JavaScript" />

Demonstração: Como exibir uma caixa de alerta usando código do lado do cliente Nesta demonstração, você verá como exibir uma caixa de alerta usando um script do lado do cliente.

1. Abra a solução criada na demonstração anterior.

2. Chame a função inlineGreet a partir do evento onload do elemento body.

<body onload="inlineGreet()">

3. Abra o formulário da Web padrão.

• No Solution Explorer, clique duas vezes em Default.aspx.

4. Acrescente a marcação a seguir ao controle BodyContent.

<input type="button" value="Greet (external)" onclick="externalGreet()"/>

5. Execute o aplicativo.

• Pressione CTRL+F5.

Observação: a caixa de alerta é exibida com a saudação do script embutido.

6. Clique em Greet (external).

• Na janela Home Page — Windows Internet Explorer, clique em Greet (external).

Observação: a caixa de alerta é exibida com a saudação do arquivo de script externo.

7. Feche o Windows® Internet Explorer®.

• Na janela Home Page — Windows Internet Explorer, clique no botão Fechar.

8. Feche o Visual Studio 2010.

• Na janela Script — Microsoft Visual Studio, clique no botão Fechar.

Page 164: 10714A-PTB-Companion.pdf

164 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 2 Implementação do Ajax

Sumário: Passos detalhados de demonstração 165

Page 165: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 165

Passos detalhados de demonstração Demonstração: Uso do controle UpdatePanel Nesta demonstração, você verá como implementar atualizações parciais usando o controle UpdatePanel.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução PartialUpdates na pasta D:\Demofiles\CS ou D:\Demofiles\VB.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Abrir Project.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\PartialUpdates.sln ou D:\Demofiles\VB\PartialUpdates.sln e clique em Abrir.

3. Abra o formulário da Web padrão no modo Design.

• No Solution Explorer, clique com o botão direito do mouse em Default.aspx e, em seguida, clique em View Designer.

4. Adicione um controle ScriptManager ao formulário da Web Default.aspx, no controle BodyContent.

• Abra a Toolbox, expanda AJAX Extensions e clique duas vezes em ScriptManager.

5. Adicione um controle UpdatePanel ao formulário da Web Default.aspx, no controle BodyContent.

• Abra a Toolbox, expanda AJAX Extensions e clique duas vezes em UpdatePanel.

6. Adicione um controle GridView ao formulário da Web Default.aspx, no controle UpdatePanel.

• Abra a Toolbox, expanda Data e arraste um controle GridView para o controle UpdatePanel.

7. Adicione um controle SqlDataSource ao formulário da Web Default.aspx, no controle BodyContent.

• Abra a Toolbox, expanda Data e arraste um controle SqlDataSource para o controle BodyContent.

8. Defina a propriedade DataSourceID do controle GridView como o ID do controle SqlDataSource.

a. Na janela Default.aspx, no Designer, selecione o controle GridView.

b. No controle GridView, clique em Smart Tag no painel GridView Tasks e, na lista Choose Data Source, clique em SqlDataSource1.

9. Defina o controle GridView para permitir a paginação, usando o Smart Tag e o painel GridView Tasks.

• No controle GridView, clique em Smart Tag e, no painel GridView Tasks, marque a caixa de seleção Enable Paging.

Page 166: 10714A-PTB-Companion.pdf

166 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

10. Configure a Fonte de Dados do controle SqlDataSource para utilizar o AdventureWorks2008R2ConnectionString existente, usando o Smart Tag e o painel SqlDataSource Tasks. As colunas CustomerID, Title, FirstName, MiddleName, LastName, CompanyName, SalesPerson e Phone da tabela Customer devem ser usadas.

a. No controle SqlDataSource, clique em Smart Tag e, no painel SqlDataSource Tasks, clique em Configure Data Source.

b. No assistente Configure Data Source — SqlDataSource1, na página Choose Your Data Connection, na lista Which data connection should your application use to connect to your database?, clique em AdventureWorks2008R2ConnectionString e, em seguida, clique em Next.

c. Na página Configure the Select Statement, verifique se a caixa de seleção Specify columns from a table or view está marcada, na lista Name, clique em Customer, na lista Columns, marque as caixas de seleção CustomerID, Title, FirstName, MiddleName, LastName, CompanyName, SalesPerson e Phone e clique em Next.

d. Clique em Finish.

11. Verifique se a sua marcação tem uma aparência semelhante a esta.

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:GridView ID="GridView1" runat="server" AllowPaging="True" DataSourceID="SqlDataSource1" AutoGenerateColumns="False" DataKeyNames="CustomerID"> <Columns> <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" InsertVisible="False" ReadOnly="True" SortExpression="CustomerID" /> <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> <asp:BoundField DataField="MiddleName" HeaderText="MiddleName" SortExpression="MiddleName" /> <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" /> <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" SortExpression="CompanyName" /> <asp:BoundField DataField="SalesPerson" HeaderText="SalesPerson" SortExpression="SalesPerson" /> <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" /> </Columns> </asp:GridView> </ContentTemplate> </asp:UpdatePanel> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorksLT2008R2ConnectionString %>" SelectCommand="SELECT [CustomerID], [Title], [FirstName], [MiddleName], [LastName], [CompanyName], [SalesPerson], [Phone] FROM [Customer]"> </asp:SqlDataSource> </asp:Content>

Page 167: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 167

12. Execute o aplicativo.

• Pressione CTRL+F5.

13. Percorra as linhas do controle GridView.

• Na parte inferior do controle GridView, clique em diversos números de página de 4 a 5 vezes.

14. Feche o Windows Internet Explorer.

• Na janela Home Page — Windows Internet Explorer, clique no botão Fechar.

15. Feche o Visual Studio 2010.

• Na janela Script — Microsoft Visual Studio, clique no botão Fechar.

Page 168: 10714A-PTB-Companion.pdf

168 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 3 Criação de serviços

Sumário: Passos detalhados de demonstração 169

Page 169: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 169

Passos detalhados de demonstração Demonstração: Criação de serviços WCF habilitados para Ajax Nesta demonstração, você verá como adicionar um serviço WCF a um aplicativo Web que pode ser chamado no lado do cliente.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução Script na pasta D:\Demofiles\CS\Script ou D:\Demofiles\VB\Script.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\Script\Script.sln ou D:\Demofiles\VB\Script\Script.sln e clique em Abrir.

3. Adicione ao projeto um novo serviço WCF habilitado para Ajax chamado GreetingsService.svc.

a. No Solution Explorer, clique com o botão direito do mouse em Script, aponte para Add e clique em New Item.

b. Na caixa de diálogo Add New Item — Script, no painel central, clique em Ajax-enabled WCF Service, na caixa Name, digite GreetingsService.svc e clique em Add.

4. Remova o método DoWork padrão e os comentários da classe service.

[Visual C#] // To use HTTP GET, add [WebGet] attribute. (Default ResponseFormat is WebMessageFormat.Json) // To create an operation that returns XML, // add [WebGet(ResponseFormat=WebMessageFormat.Xml)], // and include the following line in the operation body: // WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; [OperationContract] public void DoWork() {

// Add your operation implementation here return; } // Add more operations here and mark them with [OperationContract]

[Visual Basic] ' To use HTTP GET, add <WebGet()> attribute. (Default ResponseFormat is WebMessageFormat.Json) ' To create an operation that returns XML, ' add <WebGet(ResponseFormat:=WebMessageFormat.Xml)>, ' and include the following line in the operation body: ' WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml" <OperationContract()> Public Sub DoWork() ' Add your operation implementation here End Sub ' Add more operations here and mark them with <OperationContract()>

Page 170: 10714A-PTB-Companion.pdf

170 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

• Na janela GreetingsService.svc, selecione o código a seguir e pressione DELETE.

[Visual C#] // To use HTTP GET, add [WebGet] attribute. (Default ResponseFormat is WebMessageFormat.Json) // To create an operation that returns XML, // add [WebGet(ResponseFormat=WebMessageFormat.Xml)], // and include the following line in the operation body: // WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; [OperationContract] public void DoWork() { // Add your operation implementation here return; } // Add more operations here and mark them with [OperationContract]

[Visual Basic] ' To use HTTP GET, add <WebGet()> attribute. (Default ResponseFormat is WebMessageFormat.Json) ' To create an operation that returns XML, ' add <WebGet(ResponseFormat:=WebMessageFormat.Xml)>, ' and include the following line in the operation body: ' WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml" <OperationContract()> Public Sub DoWork() ' Add your operation implementation here End Sub ' Add more operations here and mark them with <OperationContract()>

5. Adicione o seguinte código à classe service.

[Visual C#] using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; using System.Text; namespace Script { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class GreetingsService { [OperationContract] public string Greet() { return "Hello World"; } } }

Page 171: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 171

[Visual Basic] Imports System.ServiceModel Imports System.ServiceModel.Activation Imports System.ServiceModel.Web <ServiceContract(Namespace:="")> <AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> Public Class Greeting <OperationContract()> Public Function Greet() As String Return "Hello World" End Function End Class

6. Compile a solução e corrija todos os erros.

• Na janela Script — Microsoft Visual Studio, pressione CTRL+SHIFT+B.

7. Feche o Visual Studio 2010.

• Na janela Script — Microsoft Visual Studio, clique no botão Fechar.

Demonstração: Como chamar o serviço WCF habilitado para Ajax usando código do lado do cliente Nesta demonstração, você verá como invocar o serviço GreetingsService.svc usando código do lado do cliente.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Abra a solução Script na pasta D:\Demofiles\CS\Script ou D:\Demofiles\VB\Script.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em Open Project.

b. Na caixa de diálogo Open Project, na caixa Nome, digite D:\Demofiles\CS\Script\Script.sln ou D:\Demofiles\VB\Script\Script.sln e clique em Abrir.

3. Abra a página mestra Site.Master.

• No Solution Explorer, clique duas vezes em Site.Master.

4. Remova o atributo onload e o valor da marca body de abertura.

<body onload="inlineGreet()">

5. Abra o formulário da Web Default.aspx.

• No Solution Explorer, clique duas vezes em Default.aspx.

6. Remova o conteúdo do controle BodyContent Content.

• Na janela Default.aspx, selecione a marcação incluída entre as marcas Content de abertura e fechamento do controle Content com o valor do atributo ID igual a BodyContent e pressione DELETE.

Page 172: 10714A-PTB-Companion.pdf

172 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

7. Adicione a marcação a seguir para registrar o serviço WCF usando o controle ScriptManager. Adicione a marcação ao controle Content vazio com o valor do atributo ID igual a BodyContent.

<asp:ScriptManager id="ScriptManager1" runat="server"> <services> <asp:ServiceReference path="~/GreetingsService.svc" /> </services> </asp:ScriptManager>

8. Adicione o código a seguir à página Default.aspx no controle Content vazio, com o valor do atributo ID igual a BodyContent.

<script type="text/JavaScript"> function greetUser() { GreetingsService.Greet(onSuccess); } function onSuccess(result) { alert(result); } </script>

9. Adicione a marcação a seguir à página Default.aspx no controle Content vazio, com o valor do atributo ID igual a BodyContent.

<input type="button" value="Invoke Service" onclick="greetUser()" />

10. Execute o aplicativo.

• Pressione CTRL+F5.

11. Clique em Invoke Service.

Observação: o serviço WCF será invocado e uma mensagem de alerta será exibida.

12. Feche a caixa de diálogo.

• Na caixa de diálogo Message from webpage, clique em OK.

13. Feche o Windows Internet Explorer.

• Na janela Home Page — Windows Internet Explorer, clique no botão Fechar.

14. Feche o Visual Studio 2010.

• Na janela Script — Microsoft Visual Studio, clique no botão Fechar.

Page 173: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 173

Módulo 13 Implementação do Ajax avançado em um aplicativo Web

Sumário: Lição 3: Como trabalhar com eventos jQuery e Ajax 174

Page 174: 10714A-PTB-Companion.pdf

174 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 3 Como trabalhar com eventos jQuery e Ajax

Sumário: Passos detalhados de demonstração 175

Page 175: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 175

Passos detalhados de demonstração Demonstração: Como trabalhar com manipuladores de eventos do jQuery Ajax

Introdução Nesta demonstração, você verá como trabalhar com diferentes eventos do jQuery Ajax.

1. Abra o Microsoft Visual Studio 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Crie um novo aplicativo Web ASP.NET MVC 2 chamado jQueryEventHandlers na pasta D:\Demofiles\CS ou D:\Demofiles\VB.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em New Project.

b. Na caixa de diálogo New Project, no painel esquerdo, clique em Visual C# ou em Visual Basic, no painel central, clique em ASP.NET MVC 2 Web Application, na caixa Name, digite jQueryEventHandlers, na caixa Location, digite D:\Demofiles\CS ou D:\Demofiles\VB e clique em OK.

c. Na caixa de diálogo Create Unit Test Project, marque a caixa seleção No, do not create a unit test project e clique em OK.

3. Adicione uma ação de controlador chamada ServerTime ao controlador Home.

[Visual C#] public string ServerTime(string message) { if (message == "ex") throw new ArgumentException(); return "You said " + message + ", and the time is " + DateTime.Now; }

[Visual Basic] Function ServerTime(ByVal message As String) As String If message = "ex" Then Throw New ArgumentException() End If Return "You said " & message & ", and the time is " & DateTime.Now End Function

• Na janela HomeController.cs ou HomeController.vb, digite o código a seguir na classe HomeController.

[Visual C#] public string ServerTime(string message) { if (message == "ex") throw new ArgumentException(); return "You said " + message + ", and the time is " + DateTime.Now; }

Page 176: 10714A-PTB-Companion.pdf

176 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

[Visual Basic] Function ServerTime(ByVal message As String) As String If message = "ex" Then Throw New ArgumentException() End If Return "You said " & message & ", and the time is " & DateTime.Now End Function

Observação: se você passar a cadeia de caracteres ex, o método gerará uma exceção no servidor.

4. No modo de exibição Views/Home/Index, substitua o conteúdo atual do controle Content2 ou indexContent Content por uma caixa de texto, um elemento button, um elemento div para registrar em log as mensagens do Ajax e um elemento div para exibir alguns dos resultados da chamada Ajax.

<h2> ServerTime</h2> <input id="yourtext" type="text" name="message" /><input id="submit" type="button" value="Load Data" /> <div id="log"> </div> <p id="results"> </p>

a. No Solution Explorer, expanda Views, expanda Home e clique duas vezes em Index.aspx.

b. Selecione a marcação no controle Content2 ou indexContent Content e pressione DELETE.

c. No controle Content2 ou indexContent Content, digite a marcação a seguir.

<h2> ServerTime</h2> <input id="yourtext" type="text" name="message" /><input id="submit" type="button" value="Load Data" /> <div id="log"> </div> <p id="results"> </p>

5. Crie e habilite manipuladores para os eventos .ajaxSend(), .ajaxComplete() e .ajaxError(), adicionando a marcação e o código a seguir ao modo de exibição Index.

<script src="<%= Url.Content("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $("#log").ajaxSend(function () { $(this).slideDown("fast").text("Loading..."); }); $("#log").ajaxComplete(function () { $(this).slideUp("slow", function () { $(this).text(""); }); });

Page 177: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 177

$('#submit').click(function () { var msg = $("#yourtext").val(); $("#results").load('<%= Url.Action("ServerTime") %>', { message: msg }); }); $("#log").ajaxError(function () { alert("error"); }); }); </script>

• Na janela Index.aspx, digite a marcação a seguir na parte inferior do controle Content2 ou indexContent Content.

<script src="<%= Url.Content("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $("#log").ajaxSend(function () { $(this).slideDown("fast").text("Loading..."); }); $("#log").ajaxComplete(function () { $(this).slideUp("slow", function () { $(this).text(""); }); }); $('#submit').click(function () { var msg = $("#yourtext").val(); $("#results").load('<%= Url.Action("ServerTime") %>', { message: msg }); }); $("#log").ajaxError(function () { alert("error"); }); }); </script>

6. Compile a solução e corrija todos os erros.

• Na janela jQueryEventHandlers — Microsoft Visual Studio, pressione CTRL+SHIFT+B.

7. Execute o aplicativo.

• No Solution Explorer, clique em jQueryEventHandlers e pressione CTRL+F5.

8. No Windows® Internet Explorer®, na caixa de texto, digite This is a test e clique em Carregar Dados.

Observação: quando a chamada ao método do controlador é feita, o texto Loading... é exibido abaixo da caixa de texto. Quando a chamada é concluída, uma mensagem semelhante a You said This is a test, and the time is 9/16/2010 12:00:46 AM é exibida.

Page 178: 10714A-PTB-Companion.pdf

178 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

9. No Windows Internet Explorer, na caixa de texto, digite ex e clique em Carregar Dados.

Observação: quando a chamada ao método do controlador é feita, o texto Loading... é exibido abaixo da caixa de texto. Quando a chamada é concluída, uma caixa de mensagem é exibida com o texto error.

10. Feche a caixa de mensagem.

• Na caixa de mensagem Message from webpage, clique em OK.

11. Feche o Windows Internet Explorer.

• Na janela Home Page — Windows Internet Explorer, clique no botão Fechar.

12. Feche o Visual Studio 2010.

• Na janela jQueryEventHandlers — Microsoft Visual Studio, clique no botão Fechar.

Page 179: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 179

Módulo 14 Implantações do ASP.NET

Sumário: Lição 1: Visão geral de implantações de aplicativos Web 180

Lição 2: Visão geral de implantações de sites 182

Page 180: 10714A-PTB-Companion.pdf

180 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 1 Visão geral de implantações de aplicativos Web

Sumário: Perguntas e respostas 181

Page 181: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 181

Perguntas e respostas Pacotes de implantação da Web

Pergunta: Em quais cenários você usou pacotes de implantação da Web? Quais foram as vantagens? Quais foram as desvantagens?

Resposta: Pode variar.

Publicação com um clique Pergunta: Em quais cenários você usou o recurso de publicação com um clique? Quais foram as vantagens? Quais foram as desvantagens?

Resposta: Pode variar.

Cenários empresariais Pergunta: Quantos ambientes intermediários você viu em um cenário empresarial? Você encontrou um cenário em que não foram usados ambientes intermediários?

Resposta: Pode variar.

Cenários de hospedagem de terceiros Pergunta: Quais provedores de hospedagem você usou? Eles possuíam ambientes de hospedagem compartilhados? Eles possuíam servidores dedicados? Como esses recursos afetaram o modo como você implantou seus aplicativos?

Resposta: Pode variar.

Implantação de um banco de dados do SQL Server Pergunta: Como você propaga as estruturas de dados e os dados no momento? Quais são as vantagens? Quais são as desvantagens?

Resposta: Pode variar

Extensão da Plataforma de Publicação na Web: O servidor Web Pergunta: Como você implanta assemblies de GAC, assemblies COM e chaves do Registro no momento? Quais problemas você encontrou por não implantar esses componentes corretamente?

Resposta: Pode variar

Page 182: 10714A-PTB-Companion.pdf

182 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Lição 2 Visão geral de implantações de sites

Sumário: Perguntas e respostas 183

Page 183: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 183

Perguntas e respostas A ferramenta Copy Web Site

Pergunta: Onde você utilizou a ferramenta Copy Web Site?

Resposta: Pode variar

Pergunta: Quais são algumas das vantagens de não precisar recompilar um aplicativo?

Resposta: É mais rápido e há menos chance de um componente não funcionar adequadamente.

O utilitário Publish Web Site Pergunta: Onde você utilizou o utilitário Publish Web Site?

Resposta: Pode variar.

Pergunta: Quais são algumas das vantagens de recompilar o aplicativo?

Resposta: Isso garante que todo o código está atualizado e qualquer erro de compilação foi encontrado.

Implantação do arquivo Web.config Pergunta: Onde você utilizou o utilitário Publish Web Site?

Resposta: Pode variar.

Page 184: 10714A-PTB-Companion.pdf

184 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Módulo 15 Desenvolvimento de um aplicativo Web usando o Silverlight

Sumário: Lição 3: Criar um aplicativo Silverlight 185

Page 185: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 185

Lição 3 Criar um aplicativo Silverlight

Sumário: Perguntas e respostas 186

Passos detalhados de demonstração 187

Page 186: 10714A-PTB-Companion.pdf

186 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Perguntas e respostas Demonstração: Criação da estrutura de um projeto do Silverlight

Pergunta: Explique por que um projeto host é necessário em uma solução Silverlight.

Resposta: O Silverlight deve estar hospedado para poder ser executado. Você pode hospedá-lo em um projeto de host ou em uma página HTML simples.

Page 187: 10714A-PTB-Companion.pdf

Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010 187

Passos detalhados de demonstração Demonstração: Criação da estrutura de um projeto do Silverlight Nesta demonstração, você verá como criar a estrutura de um projeto simples do Silverlight, a qual consiste em um projeto do Silverlight e um projeto de aplicativo Web ASP.NET, o projeto host.

1. Abra o Microsoft® Visual Studio® 2010.

• No menu Iniciar de 10714A-GEN-DEV, aponte para Todos os Programas, clique em Microsoft Visual Studio 2010 e, em seguida, clique em Microsoft Visual Studio 2010.

2. Crie um novo aplicativo Silverlight chamado SilverlightApp na pasta D:\Demofiles\CS ou D:\Demofiles\VB.

a. Na janela Start Page — Microsoft Visual Studio, no menu File, clique em New Project.

b. Na caixa de diálogo New Project, no painel esquerdo, clique em Visual C# ou em Visual Basic, no painel central, clique em Silverlight Application, na caixa Name, digite SilverlightApp, na caixa Location, digite D:\Demofiles\CS ou D:\Demofiles\VB e clique em OK.

3. Na caixa de diálogo New Silverlight Application, verifique as informações a seguir e clique em OK.

a. Verifique se a opção Host the Silverlight Application in a new Web site está selecionada (o padrão).

b. Especifique o nome do novo projeto Web como SilverlightApp.Web.

c. Especifique o tipo do novo projeto Web como ASP.Net Web Application Project.

4. Observe que foram criados dois projetos.

• SilverlightApp é o projeto do aplicativo Silverlight. Ele consiste no XAML e nos code-behinds associados que fazem parte do aplicativo.

• O arquivo App.xaml é usado pelo aplicativo para declarar recursos compartilhados. Além disso, seu arquivo code-behind é usado para manipular eventos globais no nível de aplicativo, como Startup e Exit, de maneira semelhante a Global.asax em um aplicativo ASP.NET.

• MainPage.xaml é a página Silverlight padrão do aplicativo. Esse projeto é criado em um arquivo XAP e usado pelo plug-in Silverlight para baixar e executar o aplicativo no navegador do usuário. O arquivo XAP contém os recursos e os assemblies compactados necessários para executar o aplicativo.

• SilverlightApp.Web é o projeto de hospedagem. Ele contém as páginas da Web que hospedarão o aplicativo Silverlight.

5. Observe a pasta chamada ClientBin.

• O arquivo SilverlightApp.xap é o pacote de aplicativo referente a SilverlightApp. O Visual Studio atualizará esse arquivo XAP quando o projeto for criado.

6. Abra SilverlightAppTestPage.aspx.

• Alterne para o modo Código-fonte. O elemento object é o contêiner do aplicativo Silverlight SilverlightApp. Ele conterá referências ao Silverlight runtime, inclusive um link para baixá-lo, se ele ainda não estiver instalado no navegador do usuário.

Page 188: 10714A-PTB-Companion.pdf

188 Desenvolvimento de aplicativos Web com o Microsoft® Visual Studio® 2010

Envie-nos seus comentários Para obter informações sobre problemas conhecidos, você pode pesquisar a Base de Dados de Conhecimento Microsoft em Ajuda e Suporte da Microsoft, antes de enviar comentários. Pesquise pelo número e pela revisão do curso ou por seu título.

Observação Nem todos os produtos de treinamento possuem um artigo da Base de Dados de Conhecimento. Se for esse o caso, pergunte ao instrutor se existem entradas de log de erros.

Comentários sobre o curso Envie todos os comentários sobre o curso para [email protected]. Somos gratos por seu interesse e sua contribuição. Analisamos todos os emails recebidos e encaminhamos as informações para a equipe apropriada. Infelizmente, por conta do volume, não podemos fornecer uma resposta, mas podemos usar seus comentários para melhorar sua experiência futura com os produtos do Microsoft Learning.

Relatório de erros Ao enviar comentários, inclua o nome e o número do produto de treinamento na linha de assunto do email. Ao enviar comentários ou relatar bugs, inclua os seguintes dados:

1. Número da peça do documento ou CD

2. Número da página ou local

3. Descrição completa do erro ou da alteração sugerida

Forneça todos os detalhes necessários para nos ajudar a verificar o problema.

Importante Todos os erros e sugestões são avaliados, mas apenas os que são validados são adicionados ao artigo da Base de Dados de Conhecimento do produto.