Você está na página 1de 616

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

10560A
Introduo ao Desenvolvimento na
Web com o Microsoft Visual
Studio 2010
Volume 1
Lembre-se de acessar o contedo de aprendizado ampliado no CD
complementar do curso includo na contracapa do livro.


ii IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

As informaes includas neste documento, inclusive URLs e referncias a outros sites na Internet, esto
sujeitas a alterao sem aviso prvio. Salvo indicao contrria, os nomes de empresas, organizaes,
produtos, nomes de domnios, endereos de email, logotipos, pessoas, lugares e acontecimentos aqui
mencionados so fictcios e de nenhuma forma pretendem representar empresas, organizaes, produtos,
nomes de domnios, endereos de email, logotipos, pessoas, lugares ou acontecimentos. O cumprimento
das leis de direitos autorais de exclusiva responsabilidade do usurio. Sem limitar os direitos autorais,
nenhuma parte deste documento pode ser reproduzida, armazenada ou apresentada em um sistema
de recuperao ou transmitida de qualquer forma ou por qualquer meio (eletrnico, mecnico, fotocpia,
gravao ou de outra forma), ou para qualquer fim, sem a permisso 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 questo neste documento. Exceto se
expressamente previsto em um acordo de licena por escrito da Microsoft, o fornecimento deste
documento no concede licena 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
no faz promessas nem oferece garantias expressas, implcitas ou legais referentes a esses fabricantes
ou ao uso dos produtos com qualquer tecnologia Microsoft. A incluso de um fabricante ou produto
no implica endosso do fabricante ou produto por parte da Microsoft. Podem ser fornecidos links
para sites de terceiros. Esses sites no so controlados pela Microsoft, a qual no se responsabiliza
pelo contedo de qualquer site vinculado ou qualquer link existente em um site vinculado, ou qualquer
mudana ou atualizao em tais sites. A Microsoft no se responsabiliza pela divulgao por webcast
ou qualquer outra forma de transmisso recebida de qualquer site vinculado. A Microsoft est fornecendo
esses links para sua convenincia e a incluso de tais links no implica endosso do site ou de outros
produtos nele contidos por parte da Microsoft.
2011 Microsoft Corporation. Todos os direitos reservados.
Microsoft, Microsoft Press, Access, Active Directory, Azure, Excel, Expression, Expression Blend, Hyper-V,
IntelliSense, Internet Explorer, Jscript, MS, MSDN, Outlook, PerformancePoint, PowerPoint, SharePoint,
Silverlight, SQL Server, Verdana, Visio, Visual Basic, Visual C#, Visual C++, Visual J#, Visual Studio,
Windows, Windows Azure, Windows Live, Windows Server e Windows Vista so marcas registradas
ou comerciais da Microsoft Corporation nos Estados Unidos e/ou em outros pases.
Todas as outras marcas comerciais pertencem aos respectivos proprietrios.





Nmero do produto: 10560A
Nmero da pea: X17-35249
Lanamento: 01/2011


TERMOS DE LICENA DA MICROSOFT
OFFICIAL MICROSOFT LEARNING PRODUCTS EDIO DO
INSTRUTOR Verses de Pr-lanamento e final
Estes termos de licena so um acordo entre a Microsoft Corporation e voc. Por favor, leia-os. Eles se aplicam
ao Contedo Licenciado supracitado, que inclui a mdia na qual ele est contido, caso haja uma. Os termos
tambm se aplicam aos seguintes itens da Microsoft:
atualizaes,
suplementos,
servios via Internet e
servios de suporte
referentes a este Contedo Licenciado, a menos que outros termos acompanhem esses itens. Nesse caso,
tais termos se aplicam.
Ao usar o Contedo Licenciado, voc estar aceitando estes termos. Se voc no os aceitar, no
use o Contedo Licenciado.
Se cumprir estes termos de licena, voc ter os direitos a seguir.
1. DEFINIES.
a. Materiais Acadmicos significa a documentao impressa ou eletrnica, como manuais, livros
didticos, white papers, press-releases, folhas de dados e perguntas freqentes, que esteja includa
no Contedo Licenciado.
b. Centro(s) de Aprendizagem Autorizado(s) significa um local de Microsoft Certified Partner
for Learning Solutions, um local do IT Academy ou outra entidade semelhante designada
ocasionalmente pela Microsoft.
c. Sesso(es) de Treinamento Autorizada(s) significa aquelas sesses de treinamento
autorizadas pela Microsoft e conduzidas por um Instrutor em Centros de Aprendizagem Autorizados
ou por meio deles, fornecendo treinamento a Alunos somente em Produtos Microsoft Official Learning
(anteriormente conhecidos como MOC [Microsoft Official Curriculum]) e Produtos Microsoft
Dynamics Learning (anteriormente conhecidos como cursos do Microsoft Business Solutions). Cada
Sesso de Treinamento Autorizada fornecer treinamento sobre a matria de um (1) Curso.
d. Curso significa um dos cursos que utilizam Contedo Licenciado oferecidos por um Centro de
Aprendizagem Autorizado durante uma Sesso de Treinamento Autorizada, cada um dos quais
fornecendo treinamento sobre uma matria tecnolgica especfica da Microsoft.
e. Dispositivo(s) significa um nico computador, dispositivo, estao de trabalho, terminal ou
outro dispositivo analgico ou eletrnico digital.


f. Contedo Licenciado significa o material que acompanha estes termos de licena. O Contedo
Licenciado pode incluir os seguintes elementos, sem se limitar a eles: (i) Contedo do Instrutor, (ii)
Contedo do Aluno, (iii) guia de configurao da sala de aula e (iv) Software. H componentes
diferentes e separados do Contedo Licenciado para cada Curso.
g. Software significa as Mquinas Virtuais e os Discos Rgidos Virtuais ou outros aplicativos de
software que estejam includos no Contedo Licenciado.
h. Aluno(s) significa um aluno devidamente inscrito em uma Sesso de Treinamento Autorizada
em seu local.
i. Contedo do Aluno significa o material de aprendizagem que acompanha estes termos de
licena e que se destina ao uso por Alunos e Instrutores durante uma Sesso de Treinamento
Autorizada. O Contedo do Aluno pode incluir laboratrios, simulaes e arquivos de curso para
um Curso.
j. Instrutor(es) significa a) uma pessoa devidamente certificada pela Microsoft como um Microsoft
Certified Trainer e b) outro indivduo que esteja autorizado, por escrito, pela Microsoft e esteja
vinculado a um Centro de Aprendizagem Autorizado para ministrar uma Sesso de Treinamento
Autorizada a Alunos em nome do Centro de Aprendizagem Autorizado.
k. Contedo do Instrutor significa o material que acompanha estes termos de licena e que se
destina ao uso por Alunos e Instrutores, conforme aplicvel, unicamente durante uma Sesso de
Treinamento Autorizada. O Contedo do Instrutor pode incluir Mquinas Virtuais, Discos Rgidos
Virtuais, arquivos do Microsoft PowerPoint e anotaes do instrutor, bem como guias de
demonstrao e arquivos de script para um Curso.
l. Discos Rgidos Virtuais significa o Software Microsoft composto por discos rgidos virtualizados
(como um disco rgido virtual bsico ou discos associados) para uma Mquina Virtual que pode ser
carregado em um nico computador ou outro dispositivo para permitir que os usurios finais
executem vrios sistemas operacionais simultaneamente. Para os fins destes termos de licena,
Discos Rgidos Virtuais sero considerados parte do Contedo do Instrutor.
m. Mquina Virtual significa uma experincia de computao virtualizada, criada e acessada com
o uso de software Microsoft Virtual PC ou Microsoft Virtual Server, que consiste em um ambiente
de hardware virtualizado, um ou mais Discos Rgidos Virtuais e um arquivo de configurao que
define os parmetros do ambiente de hardware virtualizado (p. ex., RAM). Para os fins destes
termos de licena, Discos Rgidos Virtuais sero considerados parte do Contedo do Instrutor.
n. voc significa o Centro de Aprendizagem Autorizado ou o Instrutor, conforme aplicvel, que
concordou com estes termos de licena.
2. VISO GERAL.
Contedo Licenciado. O Contedo Licenciado inclui Software, Materiais Acadmicos (online e eletrnicos),
Contedo do Instrutor, Contedo do Aluno, guia de configurao da sala de aula e qualquer mdia associada.
Modelo de Licena. O Contedo Licenciado licenciado por cpia por local de Centro de Aprendizagem
Autorizado ou por Instrutor.


3. DIREITOS DE INSTALAO E USO.
a. Centros de Aprendizagem Autorizados e Instrutores: para cada Sesso de Treinamento
Autorizada, voc pode:
i. instalar cpias individuais do Contedo Licenciado relevante em Dispositivos de sala de aula
somente para uso pelos Alunos inscritos e pelo Instrutor que ministrar a Sesso de
Treinamento Autorizada, desde que o nmero de cpias em uso no exceda o nmero de
Alunos inscritos, mais o Instrutor que ministrar a Sesso de Treinamento Autorizada, OU
ii. instalar uma cpia do Contedo Licenciado relevante em um servidor de rede somente para
acesso por Dispositivos de sala de aula e somente para uso pelos Alunos inscritos e pelo
Instrutor que ministrar a Sesso de Treinamento Autorizada, desde que o nmero de
Dispositivos que acessem o Contedo Licenciado no dito servidor no exceda o nmero de
Alunos inscritos, mais o Instrutor que ministrar a Sesso de Treinamento Autorizada;
iii. e permitir que os Alunos inscritos e o Instrutor que ministrar a Sesso de Treinamento
Autorizada utilizem o Contedo Licenciado instalado por voc de acordo com (i) ou (ii) acima
durante a dita Sesso de Treinamento Autorizada de acordo com estes termos de licena.
iv. Separao de Componentes. Os componentes do Contedo Licenciado so licenciados como
uma nica unidade. Voc no poder separar os componentes e instal-los em Dispositivos
diferentes.
v. Programas de Terceiros. O Contedo Licenciado poder conter programas de terceiros. Estes
termos de licena se aplicaro ao uso desses programas de terceiros, a menos que outros
termos acompanhem esses programas.
b. Instrutores:
i. Os Instrutores podem usar o Contedo Licenciado instalado por voc ou por um Centro de
Aprendizagem Autorizado em um Dispositivo de sala de aula para ministrar uma Sesso de
Treinamento Autorizada.
ii. Os Instrutores tambm podem usar uma cpia do Contedo Licenciado conforme se segue:
A. Dispositivo Licenciado. O Dispositivo licenciado o Dispositivo no qual voc usa o Contedo
Licenciado. Voc pode instalar e usar uma cpia do Contedo Licenciado no Dispositivo
licenciado somente para seu uso em treinamento pessoal e para a preparao de uma
Sesso de Treinamento Autorizada.
B. Dispositivo Porttil. Voc pode instalar outra cpia em um dispositivo porttil somente para
seu uso em treinamento pessoal e para a preparao de uma Sesso de Treinamento
Autorizada.


4. VERSES DE PR-LANAMENTO. Se esta for uma verso de pr-lanamento (beta), as seguintes
clusulas sero aplicveis alm de outros termos neste contrato:
a. Contedo Licenciado de Pr-Lanamento. Este Contedo Licenciado uma verso de pr-
lanamento. Ele no pode conter as mesmas informaes e/ou funcionar da mesma maneira que
uma verso definitiva do Contedo Licenciado. Poderemos alter-lo na verso comercial definitiva.
Alm disso, no podemos lanar uma verso comercial. Voc dever informar o disposto acima de
maneira clara e visvel a todos os Alunos participantes de cada Sesso de Treinamento Autorizado.
Alm disso, informe que voc ou a Microsoft no tem qualquer obrigao de fornecer nenhum outro
contedo, incluindo, mas sem limitao, a verso lanada em carter definitivo do Contedo
Licenciado do Curso.
b. Comentrios. Se voc concordar em enviar Microsoft comentrios sobre o Contedo Licenciado,
estar dando Microsoft, a ttulo gratuito, o direito de usar, compartilhar e comercializar seus
comentrios de qualquer maneira e para qualquer finalidade. Alm disso, voc concede a terceiros,
sem custos, todos os direitos de patente necessrios para que seus produtos, suas tecnologias e
seus servios usem, ou estabeleam conexo com, qualquer parte especfica de um software,
Contedo Licenciado ou servio da Microsoft que inclua os comentrios. Voc no dever enviar
comentrios sujeitos a uma licena que exija da Microsoft o licenciamento do seu software ou da
sua documentao a terceiros em virtude da incluso dos seus comentrios nesses elementos. Esses
direitos permanecero em vigor aps o trmino deste contrato.
c. Informaes Confidenciais. O Contedo Licenciado, incluindo qualquer visualizador, interface de
usurio, recursos e documentao que porventura estejam presentes no Contedo Licenciado,
confidencial e de propriedade da Microsoft e de seus fornecedores.
i. Uso. Durante cinco anos aps a instalao do Contedo Licenciado ou do seu lanamento
comercial, o que ocorrer primeiro, voc no poder divulgar informaes confidenciais a
terceiros. Voc poder divulgar informaes confidenciais apenas aos seus funcionrios e
consultores que tenham a necessidade de conhecer essas informaes. Voc dever firmar
contratos por escrito com eles para proteger essas informaes confidenciais, pelo menos,
de maneira idntica a este contrato.
ii. Continuidade da obrigao. Seu dever de proteger as informaes confidenciais
permanecer aps o trmino deste contrato.
iii. Excluses. Voc poder divulgar informaes confidenciais para atender ordens judiciais
ou do Poder Pblico. Voc dever enviar Microsoft uma notificao prvia por escrito
permitindo que ela busque uma medida cautelar ou de outra forma proteja as informaes.
Entre as informaes confidenciais no esto informaes que
passem a ser de conhecimento pblico atravs de atos lcitos;
voc tenha recebido de terceiros que no violaram obrigaes de sigilo para com a
Microsoft ou seus fornecedores; ou
voc tenha desenvolvido de forma independente.


d. Prazo. O prazo deste contrato de verses de pr-lanamento (i) a data que a Microsoft informar
a voc como data final de uso da verso beta, ou (ii) o lanamento comercial da verso definitiva do
Contedo Licenciado, o que for anterior (prazo do beta).
e. Uso. Voc dever deixar de usar todas as cpias da verso beta na resciso ou trmino dessa
verso, bem como destruir todas as cpias dela em seu poder ou sob seu controle e/ou em poder
ou sob controle de qualquer Instrutor que tenha recebido cpias da verso pr-lanada.
f. Cpias. A Microsoft informar os Centros de Treinamento Autorizados se eles podem produzir
cpias da verso beta (seja na verso impressa e/ou em CD) e distribuir essas cpias aos Alunos
e/ou Instrutores. Caso a Microsoft permita essa distribuio, voc dever cumprir todos os outros
termos que a Microsoft apresentar em relao a essas cpias e distribuio.
5. DIREITOS DE USO E/OU REQUISITOS DE LICENCIAMENTO ADICIONAIS.
a. Centros de Aprendizagem Autorizados e Instrutores:
i. Software.
ii. Discos Rgidos Virtuais. O Contedo Licenciado pode conter verses do Microsoft XP,
Microsoft Windows Vista, Windows Server 2003, Windows Server 2008 e Windows 2000
Advanced Server e/ou de outros produtos Microsoft que so fornecidos em Discos Rgidos
Virtuais.
A. Se os Discos Rgidos Virtuais e os laboratrios forem inicializados por meio do
Microsoft Learning Lab Launcher, estes termos sero aplicveis:
Software com limite de tempo. Caso o Software no seja redefinido, deixar de funcionar
dentro do prazo indicado na instalao das Mquinas Virtuais (entre 30 e 500 dias aps a
instalao). Voc no ser avisado antes que o Software deixe de funcionar. possvel que
voc no consiga acessar os dados usados ou as informaes salvas nas Mquinas Virtuais
quando o Software parar de funcionar e poder ser obrigado a redefinir essas Mquinas
Virtuais para o estado original. Voc dever remover o Software dos Dispositivos no final de
cada Sesso de Treinamento Autorizado e reinstal-lo e inici-lo antes do incio da Sesso
de Treinamento Autorizado seguinte.
B. Se os Discos Rgidos Virtuais exigirem uma chave de produto para serem
inicializados, estes termos sero aplicveis:
A Microsoft desativar o sistema operacional associado com cada Disco Rgido Virtual. Antes
de instalar Discos Rgidos Virtuais em Dispositivos de sala de aula para uso durante uma
Sesso de Treinamento Autorizada, voc obter da Microsoft uma chave de produto para
o software de sistema operacional referente aos Discos Rgidos Virtuais e ativar o dito
Software com a Microsoft usando a dita chave de produto.


C. Estes termos sero aplicveis a todas as Mquinas Virtuais e Discos Rgidos
Virtuais:
Voc s poder usar as Mquinas Virtuais e os Discos Rgidos Virtuais se cumprir
os termos e as condies deste contrato e os seguintes requisitos de segurana:
o Voc no poder instalar Mquinas Virtuais e Discos Rgidos Virtuais em Dispositivos
portteis ou Dispositivos que possam ser acessados por outras redes.
o Voc dever remover as Mquinas Virtuais e os Discos Rgidos Virtuais de todos os
Dispositivos de sala de aula ao final de cada Sesso de Treinamento Autorizada, exceto
os mantidos em locais de Microsoft Certified Partners for Learning Solutions.
o Voc dever remover as partes de unidades associadas dos Discos Rgidos Virtuais de
todos os Dispositivos de sala de aula ao final de cada Sesso de Treinamento
Autorizada em locais de Microsoft Certified Partners for Learning Solutions.
o Voc dever garantir que as Mquinas Virtuais e os Discos Rgidos Virtuais no sejam
copiados ou baixados dos Dispositivos em que foram instalados por voc.
o Voc dever cumprir rigorosamente todas as instrues da Microsoft referentes
instalao, ao uso, ativao e desativao e segurana das Mquinas Virtuais e dos
Discos Rgidos Virtuais.
o Voc no poder modificar as Mquinas Virtuais e os Discos Rgidos Virtuais ou
qualquer contedo dos mesmos.
o Voc no poder reproduzir ou redistribuir as Mquinas Virtuais ou os Discos Rgidos
Virtuais.
iii. Guia de Configurao da Sala de Aula. Voc dever garantir que qualquer Contedo
Licenciado instalado para uso durante uma Sesso de Treinamento Autorizada seja realizado de
acordo com o guia de configurao da sala de aula correspondente ao Curso.
iv. Elementos de Mdia e Modelos. Voc poder permitir que os Instrutores e Alunos utilizem
imagens, clip-arts, animaes, sons, msicas, formas, videoclipes e modelos fornecidos com o
Contedo Licenciado somente em uma Sesso de Treinamento Autorizada. Caso os Instrutores
tenham uma cpia prpria do Contedo Licenciado, eles podero usar Elementos de Mdia para
seu uso em treinamento pessoal.
v. Software de Avaliao. Qualquer Software includo no Contedo do Aluno designado como
Software de Avaliao poder ser usado por Alunos somente para seu treinamento pessoal
fora da Sesso de Treinamento Autorizada.


b. Somente para Instrutores:
i. Uso de Modelos de Slide Deck do PowerPoint. O Contedo do Instrutor pode incluir slide
decks do Microsoft PowerPoint. Os Instrutores podem usar, copiar e modificar os slide decks do
PowerPoint somente para ministrar uma Sesso de Treinamento Autorizada. Caso opte por
exercer os direitos mencionados acima, voc estar concordando ou assegurando que o
Instrutor concorde: (a) que a modificao dos slide decks no constituir a criao de trabalhos
obscenos ou escandalosos, conforme definidos pela legislao federal no momento em que o
trabalho for elaborado; e (b) em cumprir todos os outros termos e condies deste contrato.
ii. Uso de Componentes Didticos no Contedo do Instrutor. Para cada Sesso de
Treinamento Autorizada, os Instrutores podero personalizar e reproduzir, de acordo com o
Contrato do MCT, as partes do Contedo Licenciado que estejam logicamente associadas
instruo da Sesso de Treinamento Autorizada. Caso opte por exercer os direitos mencionados
acima, voc estar concordando ou assegurando que o Instrutor concorde: (a) que qualquer
uma dessas personalizaes ou reprodues ser usada somente para ministrar uma Sesso de
Treinamento Autorizada; e (b) em cumprir todos os outros termos e condies deste contrato.
iii. Materiais Acadmicos. Caso o Contedo Licenciado inclua Materiais Acadmicos, voc poder
copiar e usar esses Materiais. No permitido fazer modificaes nos Materiais Acadmicos
nem imprimir livros (eletrnicos ou em verso impressa) integralmente. No caso da reproduo
de Materiais Acadmicos, voc concorda que:
o uso dos Materiais Acadmicos ser exclusivamente para sua referncia ou treinamento
pessoal;
voc no republicar nem postar os Materiais Acadmicos em nenhum computador de
rede, nem os transmitir em nenhuma mdia;
voc incluir o aviso de direitos autorais original dos Materiais Acadmicos, ou um aviso de
direitos autorais em benefcio da Microsoft no formato indicado abaixo:
Formato do Aviso:
2011 Reimpresso para uso como referncia pessoal apenas com a permisso
da Microsoft Corporation. Todos os direitos reservados.
Microsoft, Windows e Windows Server so marcas registradas ou comerciais da
Microsoft Corporation nos Estados Unidos e/ou em outros pases. Outros nomes
de empresas e produtos aqui mencionados so marcas comerciais de seus
respectivos proprietrios.
6. SERVIOS VIA INTERNET. A Microsoft poder fornecer servios via Internet com o Contedo Licenciado.
Ela poder alter-los ou cancel-los a qualquer momento. Voc no poder usar esses servios de
maneira que possa danific-los ou prejudicar seu uso por outros. Em nenhuma hiptese voc poder
usar os servios para tentar obter acesso no autorizado a qualquer servio, dado, conta ou rede.


7. ESCOPO DA LICENA. O Contedo Licenciado licenciado, no vendido. Este contrato apenas
outorga a voc alguns direitos de uso do Contedo Licenciado. A Microsoft se reserva todos os outros
direitos. Salvo quando a legislao aplicvel lhe conceder mais direitos do que esta limitao, voc s
poder usar o Contedo Licenciado conforme expressamente permitido neste contrato. Ao fazer isso,
voc dever cumprir quaisquer limitaes tcnicas no Contedo Licenciado que permitam o seu uso
apenas de determinadas maneiras. vedado(a):
a instalao de mais cpias do Contedo Licenciado em Dispositivos de sala de aula do que o
nmero de Alunos mais o Instrutor na Sesso de Treinamento Autorizada;
a concesso de permisso de acesso ao servidor para mais Dispositivos de sala de aula do que o
nmero de Alunos inscritos mais o Instrutor que ministrar a Sesso de Treinamento Autorizada,
caso o Contedo Licenciado esteja instalado em um servidor de rede;
a cpia ou reproduo do Contedo Licenciado em qualquer servidor ou local para posterior
reproduo ou distribuio;
a divulgao dos resultados de qualquer teste de desempenho do Contedo Licenciado a terceiros
sem o prvio consentimento, por escrito, da Microsoft;
a resoluo de limitaes tcnicas no Contedo Licenciado;
a realizao de engenharia reversa, descompilao ou desmontagem do Contedo Licenciado,
exceto e somente na medida em que esta atividade seja expressamente permitida pela legislao
aplicvel, no obstante esta limitao;
a produo de mais cpias do Contedo Licenciado do que aquelas especificadas neste contrato ou
permitidas pela legislao aplicvel, no obstante esta limitao;
a publicao do Contedo Licenciado para a cpia por outras pessoas;
a transferncia do Contedo Licenciado, no todo ou em parte, para um terceiro;
o acesso a ou uso de qualquer Contedo Licenciado para o qual voc (i) no esteja ministrando um
Curso e/ou (ii) no tenha sido autorizado pela Microsoft a acessar e usar;
o aluguel, arrendamento ou emprstimo do Contedo Licenciado; ou
o uso do Contedo Licenciado para servios de hospedagem comercial ou fins comerciais gerais.
Os direitos de acesso ao software para servidor que possa estar includo com o Contedo Licenciado,
inclusive os Discos Rgidos Virtuais, no concedem a voc nenhum direito para implementar
patentes da Microsoft ou outras propriedades intelectuais da Microsoft em softwares ou dispositivos
que acessem o servidor.
8. RESTRIES EXPORTAO. O Contedo Licenciado est sujeito s leis e normas de exportao
dos Estados Unidos. Voc dever cumprir todas as leis e normas nacionais e internacionais de
exportao que se aplicam ao Contedo Licenciado. Essas leis incluem restries a destinos, usurios
finais e uso final. Para obter informaes adicionais, visite a pgina www.microsoft.com/exporting.


9. SOFTWARE/CONTEDO LICENCIADO NO COMERCIALIZVEL (NFR ou Not For Resale).
vedada a venda de software ou Contedo Licenciado identificado como NFR ou Not for Resale
(No Comercializvel).
10. EDIO ACADMICA. Voc dever ser um Usurio Educacional Qualificado para usar Contedo
Licenciado identificado como Academic Edition ou AE. Caso voc no saiba se ou no um Usurio
Educacional Qualificado, visite a pgina www.microsoft.com/education ou contate a afiliada da Microsoft
em seu pas.
11. RESCISO. Sem prejuzo de quaisquer outros direitos, a Microsoft poder rescindir este contrato caso
voc no cumpra os termos e condies destes termos de licena. No caso de seu status como Centro
de Aprendizagem Autorizado ou Instrutor a) expirar, b) ser rescindido voluntariamente por voc e/ou c)
ser rescindido pela Microsoft, este contrato ser rescindido automaticamente. Em caso de resciso deste
contrato, voc dever destruir todas as cpias do Contedo Licenciado e de todos os seus componentes.
12. CONTRATO INTEGRAL. Este contrato, e os termos dos suplementos, das atualizaes, dos
servios via Internet e dos servios de suporte usados por voc, constituem o contrato
integral para o Contedo Licenciado e os servios de suporte.
13. LEGISLAO APLICVEL.
a. Nos Estados Unidos. Se voc tiver adquirido o Contedo Licenciado nos Estados Unidos, as leis do
Estado de Washington regero a interpretao deste contrato e sero aplicveis s reclamaes de
violao do mesmo, independentemente dos princpios de conflito de leis. As leis do Estado onde
voc vive regero todas as outras reclamaes, incluindo leis de defesa do consumidor, concorrncia
desleal e obrigaes extracontratuais.
b. Fora dos Estados Unidos. Se voc tiver adquirido o Contedo Licenciado em qualquer outro pas,
as leis desse pas sero aplicveis.
14. EFEITO LEGAL. Este contrato descreve alguns direitos legais. Voc poder ter outros direitos de acordo
com as leis do seu pas. Voc tambm poder ter direitos em relao ao terceiro de quem o Contedo
Licenciado foi adquirido. Este contrato no alterar os seus direitos de acordo com as leis do seu pas,
caso as leis do seu pas no o permitam.
15. ISENO DE RESPONSABILIDADE. O Contedo Licenciado licenciado no estado em que
se encontra. O risco de us-lo responsabilidade sua. A Microsoft no oferece garantias ou
condies expressas. Voc poder ter direitos de consumidor adicionais de acordo com suas
leis locais, os quais este contrato no poder alterar. Na extenso permitida pelas leis locais,
a Microsoft exclui as garantias implcitas de comercializao, adequao a uma finalidade
especfica e no-violao.


16. LIMITAO E EXCLUSO DE RECURSOS E DANOS. VOC PODE RECUPERAR DA MICROSOFT
E DE SEUS FORNECEDORES APENAS DANOS DIRETOS LIMITADOS A US$ 5,00 (CINCO
DLARES AMERICANOS). NO POSSVEL RECUPERAR OUTROS DANOS, INCLUINDO
CONSEQENCIAIS, LUCROS CESSANTES, ESPECIAIS, INDIRETOS OU INCIDENTAIS.
Esta limitao aplica-se a:
qualquer assunto relacionado ao Contedo Licenciado, ao software, aos servios, ao contedo
(incluindo cdigo) em sites de Internet de terceiros ou a programas de terceiros; e
reclamaes por violao contratual, quebra de garantia ou condio, responsabilidade objetiva,
negligncia ou outra responsabilidade extracontratual, na extenso permitida pela legislao
aplicvel.
Tambm ser aplicada ainda que a Microsoft saiba ou tivesse que saber sobre a possibilidade dos danos.
A limitao ou excluso acima poder no se aplicar a voc pelo fato de o seu pas no permitir a excluso
ou limitao de danos incidentais, conseqenciais ou outros.



Bem-vindo!
Obrigado por participar do nosso treinamento. Trabalhamos em parceria com os nossos
Microsoft Certified Partners for Learning Solutions e Academias de TI da Microsoft para
apresentar a voc uma experincia de aprendizado da mais alta qualidade seja voc um
profissional que esteja procurando aprimorar suas habilidades ou um aluno se preparando
para uma carreira em TI.

Treinadores e instrutores certificados pela Microsoft O instrutor um
especialista tcnico e de ensino que atende aos requisitos de certificao contnua.
Caso os instrutores estejam oferecendo treinamento em uma de nossas Certified
Partners for Learning Solutions, eles tambm sero avaliados durante o ano pelos
alunos e pela Microsoft.

Benefcios do exame de certificao Aps o treinamento, considere a possibilidade
de prestar um exame de Certificao da Microsoft. As Certificaes Microsoft validam
suas habilidades com tecnologias Microsoft e podem ajudar voc a se diferenciar ao
procurar por emprego ou alavancar sua carreira. Na verdade, uma pesquisa independente
feita pela IDC concluiu que 75% dos gerentes acreditam que as certificaes so
importantes para o desempenho da equipe
1
. Pergunte ao seu instrutor sobre as
promoes e descontos em exames de Certificao Microsoft que podem estar
disponveis ara voc.

Garantia de satisfao do cliente Nossos Certified Partners for Learning Solutions
oferecem uma garantia de satisfao e ns os consideramos responsveis por isso. Ao final
da aula, faa uma avaliao da experincia de hoje. Seus comentrios so muito
importantes para ns!

Desejamos a voc uma tima experincia de aprendizado e sucesso profissional constante!


Atenciosamente,

Microsoft Learning
www.microsoft.com/Learning/pt/br






1
IDC, Value of Certification: Team Certification and Organizational Performance, November 2006
IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010 xv

Agradecimentos
O Microsoft Learning gostaria de reconhecer e agradecer s seguintes pessoas por
sua contribuio no desenvolvimento deste curso. O esforo delas em vrias fases
do desenvolvimento garantiu que voc tivesse uma boa experincia em sala de aula.
Carsten Thomsen Especialista
Carsten Thomsen um consultor independente que trabalha desde 1990 como
desenvolvedor, analista, arquiteto e autor de softwares. Ele possui vrias certificaes
da Microsoft, inclusive MCTS e MCPD, em diversas ferramentas e aplicativos,
incluindo o Microsoft .NET Framework, Microsoft Visual Basic, Microsoft Visual
C# e Microsoft Office SharePoint Server 2007. Ele trabalha com arquitetura,
pesquisa, anlise, desenvolvimento e soluo de problemas, e gasta inmeras horas
com o sistema operacional Windows e com vrios outros produtos de servidor
Microsoft, incluindo o Hyper-V e o SQL Server.
Toi Wright Revisora tcnica
Toi uma consultora independente que trabalhou como desenvolvedora de software
por mais de 25 anos. Ela se formou como Bacharel de Cincias de Computao e
Engenharia no Massachusetts Institute of Technology (MIT) e tem um MBA em
Negcios da Carnegie Mellon University. Ela Microsoft MVP em ASP e ASP.NET
desde 2005. Toi responsvel pela criao de uma iniciativa nacional para a Microsoft
e seus parceiros chamada We Are Microsoft, (www.wearemicrosoft.com), uma
comunidade baseada na parceria entre profissionais de TI e instituies locais sem
fins lucrativos. Ela foi lder e organizadora de grupos tcnicos de usurios na rea de
Dallas, Texas por mais de 10 anos. Atualmente, ela Presidente do Dallas ASP.Net
User Group, www.dallasasp.net. a fundadora da Geeks in Pink, www.geeksinpink.org.

IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010 xvii

Contedo
Mdulo 1: Explorao de aplicativos Web Microsoft ASP.NET no Microsoft
Visual Studio 2010
Lio 1: Introduo ao .NET Framework 1-3
Lio 2: Viso geral do ASP.NET 1-15
Lio 3: Viso geral do aplicativo de laboratrio 1-32
Mdulo 2: Criao de aplicativos Web usando o Microsoft Visual Studio 2010
e linguagens baseadas no Microsoft .NET
Lio 1: Escolha de uma linguagem de programao 2-3
Lio 2: Viso geral do Visual Studio 2010 2-15
Lio 3: Criao de um aplicativo Web simples 2-32
Laboratrio: Criao de aplicativos Web usando o Microsoft
Visual Studio 2010 e linguagens baseadas no Microsoft .NET 2-52
Mdulo 3: Criao de um Web Form Microsoft ASP.NET
Lio 1: Criao de Web Forms 3-3
Lio 2: Incluso e configurao de controles de servidor em
um Web Form 3-12
Laboratrio: Criao de um Web Form Microsoft ASP.NET 3-37
Mdulo 4: Incluso de funcionalidade em um Web Form Microsoft ASP.NET
Lio 1: Como trabalhar com arquivos code-behind 4-4
Lio 2: Manipulao de eventos de controle do servidor 4-14
Lio 3: Criao de classes e componentes usando o Visual Studio 2010 4-37
Lio 4: Tratamento de eventos de pgina 4-61
Laboratrio: Incluso de funcionalidade em um Web Form Microsoft
ASP.NET 4-72

xviii IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

Mdulo 5: Implementao de pginas mestras e controles do usurio
Lio 1: Criao de pginas mestras 5-3
Lio 2: Incluso de controles do usurio a um Web Form ASP.NET 5-26
Laboratrio: Implementao de pginas mestras e controles do usurio 5-49
Mdulo 6: Validao de entrada do usurio
Lio 1: Viso geral da validao de entrada do usurio 6-4
Lio 2: Controles de validao do ASP.NET 6-10
Lio 3: Validao de Web Forms 6-37
Laboratrio: Validao de entrada do usurio 6-43
Mdulo 7: Soluo de problemas com aplicativos Web Microsoft ASP.NET
Lio 1: Depurao no ASP.NET 7-3
Lio 2: Rastreamento no ASP.NET 7-22
Laboratrio: Soluo de problemas com aplicativos Web Microsoft
ASP.NET 7-34
Mdulo 8: Gerenciamento de dados em um aplicativo Web Microsoft
ASP.NET 4.0
Lio 1: Viso geral do ADO.NET 8-3
Lio 2: Conexo com um banco de dados 8-16
Lio 3: Gerenciamento de dados 8-29
Laboratrio: Gerenciamento de dados em um aplicativo Web
ASP.NET 4.0 8-48
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Sobreestecurso xix
Sobre este curso
Esta seo apresenta uma breve descrio do curso, do pblico-alvo, dos pr-requisitos
sugeridos e dos seus objetivos.
Descrio do curso
Este curso de cinco dias ministrado por um instrutor fornece os conhecimentos e
habilidades sobre como desenvolver aplicativos Web usando o Microsoft Visual
Studio 2010.
Pblico-alvo
Este curso destina-se a desenvolvedores da Web iniciantes com conhecimento de
linguagem HTML ou DHTML, alm de algum conhecimento de linguagem de script,
como o Microsoft Visual Basic Scripting Edition ou o Microsoft JScript.
Os alunos devem ter as seguintes habilidades:
Capacidade de construir uma pgina da Web simples usando um aplicativo
Microsoft ou usando uma ferramenta de terceiros. Por exemplo, criar ou
personalizar uma pgina da Web em um site do Microsoft SharePoint 2010.

Pr-requisitos do aluno
Os alunos devero ter pelo menos um ms de experincia nas tecnologias
Microsoft .NET. Alm da experincia profissional, os alunos que participarem do
treinamento devero apresentar o seguinte conhecimento tcnico:
Conhecimento de HTML ou DHTML, incluindo:
Tabelas
Imagens
Formulrios
Experincia em programao usando o Visual Basic .NET ou o Microsoft
Visual C# .NET, incluindo:
Declarao de variveis
Uso de loops
Uso de instrues condicionais

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
xx Sobreestecurso
A concluso do Curso 2667, Introduo programao, satisfaz o requisito de
habilidades em programao de pr-requisito anterior.
Objetivos do curso
Depois de conclurem este curso, os alunos sero capazes de:
Explorar os aplicativos Web do Microsoft ASP.NET no Visual Studio 2010.
Criar aplicativos Web usando o Microsoft Visual Studio 2010 e linguagens
baseadas no Microsoft .NET.
Criar um Web Form ASP.NET.
Adicionar funcionalidade a um Web Form ASP.NET.
Implementar pginas mestras e controles do usurio.
Validar a entrada do usurio.
Depurar aplicativos Web do ASP.NET 4.0.
Gerenciar dados em um aplicativo Web ASP.NET 4.0.
Gerenciar tarefas de acesso a dados usando a LINQ (consulta integrada
linguagem).
Gerenciar dados usando o ASP.NET Dynamic Data.
Criar um aplicativo ASP.NET Ajax.
Consumir servios do WCF (Windows Communication Foundation).
Gerenciar estados em aplicativos Web.
Configurar e implantar um aplicativo Web ASP.NET.
Proteger um aplicativo Web ASP.NET.
Implementar novas tecnologias compatveis com o Visual Studio 2010 para
desenvolvimento na Web.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Sobreestecurso xxi
Contedo programtico
Esta seo fornece um resumo do curso:
O Mdulo 1, Explorao dos aplicativos Web do Microsoft ASP.NET no Visual
Studio 2010, explica os principais recursos do Microsoft .NET Framework e do
Microsoft ASP.NET. Esse mdulo ajuda voc a visualizar o aplicativo completo da
Web criado nos laboratrios durante este curso.
O Mdulo 2, Criao de aplicativos Web usando o Microsoft Visual Studio 2010
e linguagens baseadas no Microsoft .NET, descreve as diferentes linguagens de
programao disponveis quando voc desenvolve aplicativos Microsoft .NET
Framework. Esse mdulo explica os aspectos bsicos de escrita de cdigo e de criao
de componentes usando duas das linguagens baseadas no .NET Framework, o Visual
Basic e o Visual C#. Ele tambm fornece uma viso geral do Microsoft Visual Studio
2010 e explica como criar um aplicativo Web simples.
O Mdulo 3, Criao de um aplicativo de Web Forms do Microsoft ASP.NET,
explica como criar Web Forms e como preench-los com controles de servidor.
O Mdulo 4, Adio de funcionalidade a um Web Form do Microsoft ASP.NET,
descreve os diversos mtodos que podem ser usados para adicionar cdigos ao
aplicativo Web do Microsoft ASP.NET. Tambm explica como usar controles de
servidor Web, manipuladores de eventos, arquivos code-behind e componentes.
Alm disso, ele explica como usar eventos de pgina, principalmente o evento
Page_Load.
O Mdulo 5, Implementao de pginas mestras e controles de usurio, explica
como criar e implementar pginas mestras e como implementar controles de usurio
em um aplicativo Web.
O Mdulo 6, Validao da entrada do usurio, fornece uma viso geral da validao
de entradas de usurio. Ele inclui informaes sobre como adicionar, posicionar e
configurar controles de validao em um Web Form. Alm disso, inclui informaes
sobre como validar Web Forms.
O Mdulo 7, Soluo de problemas de aplicativos Web do Microsoft ASP.NET,
descreve as etapas necessrias para habilitar o rastreamento e a depurao, inclusive
como voc pode usar o rastreamento e a depurao em um aplicativo Web.
O Mdulo 8, Gerenciamento de dados em um aplicativo Web do Microsoft
ASP.NET 4.0, fornece uma viso geral do Microsoft ADO.NET. Ele explica como
trabalhar programaticamente com dados usando o ADO.NET e como criar uma
conexo para acessar os dados armazenados em um banco de dados Microsoft SQL
Server. Alm disso, explica como usar os objetos DataSet e DataReader para oferecer
suporte aos requisitos de Web Forms em termos de manipulao de dados e
armazenamento local de dados.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
xxii Sobreestecurso
O Mdulo 9, Gerenciamento de tarefas de acesso a dados com a LINQ, explica o
que LINQ e como voc pode us-la para gerenciar os dados XML e os dados do
Microsoft SQL Server em um aplicativo Web do ASP.NET usando os controles e o
cdigo do servidor Web.
O Mdulo 10, Gerenciamento de dados usando o Microsoft ASP.NET Dynamic
Data, fornece uma viso geral do ASP.NET Dynamic Data e inclui informaes
sobre como aplicar o ASP.NET Dynamic Data. Esse mdulo tambm explica como
personalizar os aplicativos do ASP.NET Dynamic Data.
O Mdulo 11, Criao de um aplicativo de Web Forms do Microsoft ASP.NET
habilitado para Ajax, fornece um viso geral do ASP.NET Ajax e explica como criar
um aplicativo ASP.NET Ajax. Ele tambm apresenta o ASP.NET Ajax Control Toolkit
e explica como instalar o kit de ferramentas e adicionar controle do kit de ferramentas
a um aplicativo Web.
O Mdulo 12, Consumo dos Servios Microsoft Windows Communication
Foundation, fornece uma viso geral dos Servios WCF. Ele descreve como descobrir
e consumir Servios WCF teis em seus aplicativos Web. Os alunos tambm
aprendero por que e quando criar seus prprios Servios WCF.
O Mdulo 13, Gerenciamento de estado em aplicativos Web, explica como gerenciar
um estado em um aplicativo Web do ASP.NET.
O Mdulo 14, Configurao e implantao de um aplicativo Web do Microsoft
ASP.NET, explica como configurar e implantar um aplicativo Web do ASP.NET
usando os arquivos machine.config e web.config.
O Mdulo 15, Proteo de aplicativos Web do Microsoft ASP.NET, explica as
diversas funcionalidades de segurana da Web. Ele tambm inclui informaes sobre
a infraestrutura necessria para a criao e implantao de vrias funcionalidades de
segurana de aplicativo Web.
O Mdulo 16, Implementao de tecnologias avanadas compatveis com o Microsoft
Visual Studio 2010 para desenvolvimento para a Web, descreve as tecnologias MVC
e Microsoft Silverlight. O aluno ver demonstraes de tecnologias eficientes que
esto sendo implementadas por aplicativos Web mais avanados ou sofisticados.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Sobreestecurso xxiii
Material do curso
O seguinte material foi includo no seu kit:
Manual do curso. Um guia sucinto para sala de aula que fornece todas as
informaes tcnicas essenciais em um formato inteligente e concentrado, o
que perfeito para uma experincia de aprendizagem efetiva em sala de aula.
Lies: orientam voc pelos objetivos de aprendizagem e fornecem os
pontos-chave que so essenciais para o xito da experincia de aprendizagem
em sala de aula.
Laboratrios: fornecem uma plataforma real e prtica para que voc aplique
os conhecimentos e as tcnicas aprendidos em cada mdulo.
CD do curso. Fornece recursos adicionais relacionados ao curso.
Recursos: incluem recursos adicionais bem categorizados que fornecem
acesso imediato ao contedo premium mais recente em TechNet, MSDN
e Microsoft Press.
Respostas do laboratrio: incluem respostas em formato digital a serem
usadas durante o laboratrio e tambm como PDFs para impresso.
Guia de Criao de Mquina Virtual: fornece informaes passo-a-passo sobre
como recriar as imagens da Mquina Virtual/Servidor com a configurao
apropriada.
Instrues sobre Envie-nos seus comentrios: fornece a voc uma
oportunidade para enviar comentrios sobre todos os aspectos do curso.
Arquivos do curso para o aluno: incluem Allfiles.exe, um arquivo executvel
autoextravel que contm todos os arquivos necessrios para os laboratrios
e as demonstraes.
Observao: para abrir a pgina da Web, coloque o CD do curso na unidade de
CD-ROM e, no diretrio-raiz do CD, clique duas vezes em StartCD.exe.
Avaliao do curso. Ao final do curso, voc ter a oportunidade de fazer uma
avaliao online para fornecer comentrios sobre o curso, sobre as instalaes
em que foi oferecido o treinamento e sobre o instrutor.

Para fornecer comentrios adicionais sobre o curso, envie um email para
support@mscourseware.com. Em caso de dvidas sobre o programa MCP
(Microsoft Certification Program), envie um email para mcphelp@microsoft.com.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
xxiv Sobreestecurso
Ambiente da mquina virtual
Esta seo fornece as informaes para configurar o ambiente de sala de aula para
dar suporte ao cenrio de negcios do curso.
Configurao da mquina virtual
Neste curso, voc usar o Hyper-V para executar os laboratrios.
A tabela a seguir mostra a funo de cada mquina virtual usada neste curso.
Mquina virtual Funo
10560A-GEN-DEV Mquina autnoma

Configurao de software
Os seguintes itens de software esto instalados em cada mquina virtual:
Visual Studio 2010 Professional (incluindo o .NET Framework 4.0)
Ajax Control Toolkit
Microsoft Silverlight 4
Ferramentas do Microsoft Silverlight 4 para o Visual Studio 2010
Windows Internet Explorer 8

Arquivos do curso
H arquivos associados aos laboratrios neste curso. Os arquivos de laboratrio
encontram-se nos computadores do aluno.
Configurao da sala de aula
Cada computador da sala de aula ter a mesma mquina virtual configurada da
mesma forma.
Nvel de hardware do curso
Para garantir uma experincia satisfatria ao aluno, o Microsoft Learning exige uma
configurao mnima de equipamento para os computadores do instrutor e do aluno
em todas as salas de aula da CPLS (Microsoft Certified Partner for Learning Solutions)
nas quais o courseware Official Microsoft Learning Product ensinado.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-1
Mdulo1
ExploraodeaplicativosWebMicrosoft
ASP.NETnoMicrosoftVisualStudio2010
Contedo:
Lio1:Introduoao.NETFramework 1-3
Lio2:VisogeraldoASP.NET 1-15
Lio3:Visogeraldoaplicativodelaboratrio 1-32
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-2 Introduo
Visoge
O Micro
sem a n
compon
distribu
tecnolog
desenvo
Neste m
sobre o
criado n
Objetiv
Depois
Des
Des
Des
aoDesenvolvimentonaW
eraldom
osoft Visual Stud
necessidade imper
nentes que modu
udos, inclusive ap
gias que fazem p
olver aplicativos W
mdulo, voc apre
ASP.NET. Tamb
nos laboratrios d
vos do mdulo
de concluir este m
screver o .NET Fr
screver o ASP.NE
screver o aplicativ
WebcomoMicrosoftV
mdulo
dio 2010 ajuda
riosa de codifica
ulam e simplificam
plicativos Web. O
arte do .NET Fra
Web.
ender sobre os p
m ver uma amo
deste curso.
o
mdulo, voc ser
ramework.
ET.
vo de laboratrio
VisualStudio2010
a desenvolver ap
o. O Microsoft
m o desenvolvim
O Microsoft ASP.N
amework, que pod
principais recurso
ostra do aplicativ
r capaz de:
o.
plicativos Web ava
.NET Framework
ento de aplicativo
NET uma das d
de ser usado para
os do .NET Fram
vo Web completo

anados
k fornece
os
diversas
a
mework e
o que ser
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Lio1
Introdu
Voc pr
para a W
o desen
desafios
desses p
Nesta li
de desen
ferrame
Objetiv
Depois
Des
List
Des
Iden
Explorao
oao.N
recisa conhecer o
Web para poder a
nvolvimento de ap
s durante a cria
problemas.
o, voc aprende
nvolvimento de a
nta de desenvolvi
vos da lio
de concluir esta l
screver o Microso
tar os benefcios
screver os compo
ntificar os princip
deaplicativosWebMicro
ETFrame
s termos e os con
analisar melhor a
plicativos Web. D
o de aplicativos W
er sobre o .NET
aplicativos Web. T
imento que pode
lio, voc ser ca
oft .NET.
de usar o .NET F
onentes do .NET
pais recursos do
osoftASP.NETnoMicro
ework
nceitos associado
a opo de usar o
Desenvolvedores
Web, e o .NET Fr
Framework 4, pri
Tambm conhecer
ser usada para cr
apaz de:
Framework.
Framework.
Visual Studio 20
osoftVisualStudio201
os ao desenvolvim
Visual Studio 20
se defrontam com
ramework resolv
incipalmente no c
r o Visual Studio
riar aplicativos W
10.
0 1-3

mento
010 para
m vrios
ve muitos
contexto
o 2010, a
Web.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-4 Introduo
Introd
Pontos
O objeti
Window
aplicativ
aplicativ
em nuv
so forn
Microso

aoDesenvolvimentonaW
duoaoMi
s principais
ivo do Microsoft
ws, aplicativos W
vos mveis, aplic
vos hospedados p
em se refere a co
necidos sob dem
oft .NET.
WebcomoMicrosoftV
crosoft.NET
.NET simplifica
Web, aplicativos p
cativos hospedado
pelo Microsoft SQ
mputao basead
manda.) O .NET

VisualStudio2010
T
ar o desenvolvim
personalizados e
os na nuvem pelo
QL Server 2008
da na Internet, na
Framework a
mento de aplicativ
servios. Isso inc
o Windows Azure
. (Nuvem ou com
a qual software e
infraestrutura d

vos do
clui
e e
mputao
dados
do
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-5
Tecnologias do Microsoft .NET
O Microsoft .NET foi construdo em uma arquitetura aberta, o que faz com que ele
possa ser facilmente estendido durante a criao e a execuo de aplicativos Web e
servios. O Microsoft .NET inclui os seguintes produtos e tecnologias:
.NET Framework. O .NET Framework um modelo de programao da
Microsoft orientado a objeto, consistente e abrangente, que fornece o ambiente
necessrio para criar aplicativos e servios independentes de dispositivo e de
plataforma. O .NET Framework a plataforma da Microsoft para a criao de
aplicativos com experincias de usurio visualmente atraentes, comunicao
segura e ininterrupta e a capacidade de modelar uma gama de processos
corporativos. No ambiente do .NET Framework, a execuo de cdigo eficiente.
Com esses recursos, o .NET Framework ajuda a minimizar os esforos
despendidos no desenvolvimento de software, alm de reduzir conflitos de
verso e promover a execuo segura de cdigo.
O .NET Framework serve de base para a criao de aplicativos e servios e,
para isso, fornece uma biblioteca comum de funes. Essa semelhana facilita
a integrao de aplicativos criados com o uso do .NET Framework.
Servidores. O Microsoft .NET fornece a infraestrutura necessria para integrar,
executar, operar e gerenciar solues baseadas no .NET Framework em
servidores como Windows Server 2008 R2, Microsoft SharePoint Server
2010 e SQL Server 2008 R2. Isso inclui servidores Web que executam o IIS
(Servios de Informaes da Internet) para hospedar servios e aplicativos
Web, alm de servidores que hospedam servios, como servios do Windows e
servios WCF (Windows Communication Foundation).
Clientes. O Microsoft .NET permite oferecer uma experincia de usurio
consistente em muitos dispositivos, como navegadores da Web, computadores
pessoais e dispositivos mveis.
Visual Studio 2010 e outras ferramentas de desenvolvedor. Usando essas
ferramentas, voc pode desenvolver rapidamente servios WCF, aplicativos
baseados no Windows, aplicativos Web e aplicativos baseados no Windows
Azure, garantindo experincias de usurio mais enriquecedoras.

Pergunta: Qual maior vantagem de usar o .NET Framework para desenvolver seu
aplicativo?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-6 Introduo
Benef
Pontos
Durante
Window
de prog
program
produti
do Micr
no tipo
Visual B
Clssico
para de
program

aoDesenvolvimentonaW
fciosdo.NE
s principais
e os primeiros an
ws, a maioria dos
gramao de apli
mao C ou C++
ividade no escrit
osoft Visual Basic
de aplicativos qu
Basic ou Visual Ba
o. Hoje em dia, co
esenvolver qualq
mao preferida.
WebcomoMicrosoftV
ETFramewor
nos do desenvol
s aplicativos era d
icativo) do Wind
. Os aplicativos
rio, computador
e da Internet, os
ue desenvolveram
asic Scripting par
om o .NET Frame
quer tipo de aplic

VisualStudio2010
rk
lvimento de apli
desenvolvida com
dows e, geralmen
de rea de traba
res domsticos e j
s desenvolvedores
m. Por exemplo, a
ra uso com o ASP
ework, voc pode
cativo e escolher
icativos baseados
m o uso da API (in
nte, das linguage
lho foram criado
jogos. Com a intr
s tiveram de se esp
aplicativos em C o
P (Active Server P
e usar suas habili
r a sua linguagem

s no
nterface
ens de
os para
roduo
pecializar
ou C++,
Pages)
idades
m de
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-7
O .NET Framework oferece vrios benefcios para o desenvolvimento de
aplicativos e servios. Esses benefcios incluem:
Padres e prticas da Web. O .NET Framework d suporte total s tecnologias
de Internet existentes, como HTML, linguagem XHTML, protocolo HTTP,
XML, protocolo SOAP, linguagem XSL Transformation, linguagem XPath e
outros padres da Web.
Modelos de aplicativo unificados. A funcionalidade de um tipo .NET est
disponvel para todos os aplicativos baseados em .NET, sejam eles baseados
no Windows ou na Web.
Facilidade de uso. O .NET Framework organiza o cdigo em classes e
namespaces hierrquicos e fornece um sistema de tipos comum (CTS,
Common Type System) que pode ser usado por qualquer linguagem
compatvel com .NET.
Classes extensveis. A hierarquia das classes do .NET Framework aberta para
o desenvolvedor. Voc pode acessar e estender classes .NET por meio de
herana, interfaces ou extenses.
Fornecendo um modelo de programao consistente e abrangente e um
conjunto comum de APIs, o .NET Framework ajuda a criar aplicativos que
funcionam da forma como voc deseja, na sua linguagem de programao
preferida, em plataformas, software, servios e dispositivos.
Instalao mais fcil de aplicativos comerciais. Muitos aplicativos da Microsoft
e de fornecedores de terceiros usam o .NET Framework para dar suporte a sua
funcionalidade principal. Se voc tiver o .NET Framework instalado no
computador local, esses aplicativos sero fceis de instalar.
Atualizaes mais fceis. O servio Windows Update atualiza o .NET
Framework automaticamente. Se voc costuma receber Atualizaes
Automticas do Windows Update, a verso do .NET Framework instalada no
seu computador ser atualizada com as correes e os service packs mais
recentes.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-8 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Suporte a dispositivo. O .NET Framework tem duas edies separadas que
foram criadas para execuo em diferentes dispositivos. O .NET Compact
Framework (http://go.microsoft.com/fwlink/?LinkID=192006&clcid=0x409)
um ambiente independente de hardware que d suporte criao e
execuo de aplicativos gerenciados em dispositivos de computao com
recursos restritos. O .NET Micro Framework (http://go.microsoft.com/
fwlink/?LinkID=192007&clcid=0x409) d suporte a dispositivos menores.
Agora possvel estender os aplicativos e os servios de modo uniforme, desde
dispositivos muito pequenos at servidores na nuvem, usando o mesmo
modelo de programao e a mesma cadeia de ferramentas em todo o processo.

Pergunta: Quais so as principais vantagens de usar o .NET Framework para
desenvolver aplicativos Web?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Comp
Pontos
O ambi
aplicativ
Sist
ope
Com
com
bs
de e
cd
de c
orig
infr
O c
cd

Explorao
ponentesdo
s principais
ente .NET consis
vos baseados em
tema operacional
eracional.
mmon Language
mponente de mq
icos como gerenc
excees, coleta d
digo em tempo de
confiana a um c
gem do compone
raestrutura de veri
cdigo gerenciado
digo no gerencia
deaplicativosWebMicro
.NETFrame
ste em vrios com
.NET.
l. O .NET Framew
Runtime. O CLR
quina virtual do .
ciamento de mem
de lixo e seguran
e execuo e aplic
componente, de a
ente. Ele promove
ificao de cdigo
o executado sob
ado no direciona

osoftASP.NETnoMicro
work
mponentes que aju
work deve ser exe
R (Common Lang
NET Framework
ria, gerenciamen
na. O componen
ca a segurana co
acordo com uma
e robustez implem
e tipo chamada C
b a administrao
a o CLR (Commo
osoftVisualStudio201
udam a criar e ex
ecutado em um s
guage Runtime)
k que fornece serv
to de threads, trat
te do CLR gerenc
oncedendo graus
srie de fatores, c
mentando uma r
CTS (common type
o do CLR, enquan
on Language Run
0 1-9

xecutar
istema
o
vios
tamento
cia
variados
como a
gida
system).
nto o
ntime).
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-10 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Durante o desenvolvimento, o CLR fornece recursos que simplificam o
desenvolvimento em vrias linguagens de programao (por exemplo,
desenvolvendo um aplicativo Web tanto em Visual Basic como em Microsoft
Visual C#). Isso significa que possvel criar algumas partes de um aplicativo
Web em uma linguagem de programao e outras partes em uma linguagem
de programao diferente.
A biblioteca de classes do .NET Framework. A biblioteca de classes do .NET
Framework uma coleo abrangente e orientada a objeto de recursos
reutilizveis que podem ser usados para necessidades comuns de
desenvolvimento, como aplicativos de linha de comando, aplicativos de GUI
(interface grfica do usurio), Web Forms e servios Web. A biblioteca de
classes do .NET Framework, tambm conhecida como BCL (Base Class
Library), fornece recursos que incluem interface do usurio, acesso a dados,
conectividade de banco de dados, criptografia, desenvolvimento de aplicativos
Web, algoritmos numricos e comunicao em rede. Ela expe recursos do
CLR e simplifica o desenvolvimento de aplicativos baseados no .NET. Alm
disso, voc pode estender classes ao criar suas prprias bibliotecas. Todos os
aplicativos e todas as linguagens baseadas no Microsoft .NET acessam as
mesmas bibliotecas de classes do .NET Framework.
Linguagens. O .NET Framework fornece uma variedade de linguagens de
desenvolvimento que permitem que os desenvolvedores transfiram suas
habilidades e tcnicas de desenvolvimento para o processo de
desenvolvimento do .NET. De modo geral, cada linguagem fornece a mesma
funcionalidade. Qualquer linguagem que esteja em conformidade com a CLS
(Common Language Specification) pode ser executada com o CLR. No .NET
Framework, a Microsoft d suporte a linguagens como Visual Basic, Visual C#,
Microsoft Visual C++ e Microsoft Visual F#. Organizaes de terceiros
tambm podem oferecer linguagens adicionais.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-11
Tecnologias do .NET Framework 4
O .NET Framework 4 possui uma coleo abrangente de classes que fornecem
recursos em muitas reas de tecnologia, como:
ASP.NET. uma estrutura de programao para criao de aplicativos Web e
servios avanados.
Windows Forms. a principal plataforma de desenvolvimento para criao de
aplicativos cliente inteligentes.
WPF (Windows Presentation Foundation). Fornece classes para aplicativos
cliente inteligentes que combinam interface do usurio, documentos e mdia.
Data Access. Oferece funcionalidade para acessar origens de dados externos,
incluindo um abrangente suporte a XML. O Data Acess implementado
basicamente no Microsoft ADO.NET, que tambm inclui a Entity Framework e
o Data Services.

Observao:paraobtermaisinformaessobreADO.NET,consulteoMdulo8,
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0.
WCF (Windows Communication Foundation). Fornece um modelo de
programao unificado para aplicativos orientados a servio.

Observao:paraobtermaisinformaessobreWCF,consulteoMdulo12,Consumo
deserviosWindowsCommunicationFoundation.
WF (Windows Workflow Foundation). Fornece um modelo de programao e
ferramentas para criar aplicativos habilitados para fluxo de trabalho que
servem de modelo para processos corporativos.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-12 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Hospedagem de aplicativos
O CLR gerencia a execuo de cdigo para vrios aplicativos e servios. Entretanto,
cada tipo de aplicativo requer um host de tempo de execuo para ser iniciado.
Esse host carrega o tempo de execuo em um processo, cria os domnios do
aplicativo dentro do processo e carrega o cdigo de usurio nos domnios do
aplicativo. O .NET Framework no s fornece vrios hosts de tempo de execuo,
como d suporte ao desenvolvimento de hosts desse tipo de terceiros. Os hosts de
tempo de execuo fornecidos pela Microsoft esto listados na tabela a seguir.
Hostdetempode
execuo Descrio
ASP.NET CarregaoCLRnoprocessoquelidacomasolicitaodaWeb.
OASP.NETtambmcriaumdomniodeaplicativoparacada
aplicativoWebqueserexecutadoemumservidorWeb.
WindowsInternet
Explorer
Criadomniosdeaplicativoparaexecutarcontrolesgerenciados.
O.NETFrameworkdsuporteaodownloadeexecuode
controlesbaseadosemnavegador.Otempodeexecuofaza
interfacecomomecanismodeextensibilidadedoInternet
ExplorerusandoumfiltroMIMEparacriardomniosde
aplicativo,afimdeexecutaroscontrolesgerenciados.Por
padro,umdomniodeaplicativocriadoparacadasite.
Executveldoshell Invocaocdigodehospedagemdetempodeexecuopara
transferirocontroleparaotempodeexecuotodavezqueum
executveliniciadoapartirdoshell.

Pergunta: Quais so os dois principais componentes do .NET Framework 4?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Princi
Pontos
O Visua
um amb
depurar
Recurs
O Visua
Sup
Fer
serv
Fer
jane
Fer
(co
Explorao
ipaisrecurso
s principais
al Studio 2010 co
biente de desenvol
r e implantar serv
sos do Visual S
al Studio 2010 po
porte a vrias ling
ramentas para cr
vios WCF, aplica
ramentas para tra
elas Apply Styles
ramentas de aces
nsulta integrada
deaplicativosWebMicro
osdoVisualS
onstitui a base do
lvimento complet
vios e aplicativos
tudio 2010
ossui os seguintes
guagens de progr
riar aplicativos W
ativos WPF e apl
abalhar com CSS
e Manage Styles
sso a dados, com
linguagem)
osoftASP.NETnoMicro
Studio2010
desenvolviment
to no qual possv
s do .NET.
s recursos:
ramao
Web, aplicativos ba
licativos habilitad
S (folhas de estilo
o suporte Entity
osoftVisualStudio201
o do Microsoft .N
vel projetar, desen
aseados no Wind
dos para WF
os em cascata), co
ty Framework e L
0 1-13

NET.
nvolver,
dows,
omo as
LINQ
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-14 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Suporte multiplataforma para permitir que os desenvolvedores selecionem a
verso do .NET Framework que o aplicativo dever direcionar
Suporte a ASP.NET, Ajax (Asynchronous JavaScript and XML), JavaScript e
jQuery
Suporte ao Microsoft Silverlight
Tratamento de erros completo, incluindo depurao local e remota, e
rastreamento
Ajuda e documentao apresentadas em um formato que pode ser facilmente
acessado

Pergunta: Por que o Visual Studio 2010 considerado um conjunto completo de
ferramentas de desenvolvimento?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Lio2
Visoge
ASP.NE
Forms A
maneira
necess
constru
Nesta li
Web AS
execu
Objetiv
Depois
Des
Des
Des
Explorao
eraldoAS
ET uma estrutur
ASP.NET, que faz
a fcil de construi
ria para criar serv
uo para desenvo
o, voc aprende
SP.NET, os comp
o de compilao
vos da lio
de concluir esta l
screver a intera
screver o ASP.NE
screver os compo
deaplicativosWebMicro
SP.NET
ra de programa
zem parte de um
ir sites dinmicos
vios WCF basea
olver aplicativos d
er sobre os princi
onentes de um ap
o dinmica do ASP
lio, voc ser ca
o cliente-servido
ET.
onentes de um ap
osoftASP.NETnoMicro
o para criar aplic
aplicativo Web A
s. O ASP.NET tam
ados na Web, que
distribudos base
ipais recursos do A
plicativo Web AS
P.NET.
apaz de:
r.
plicativo Web ASP
osoftVisualStudio201
cativos Web. Os W
ASP.NET, oferecem
mbm possui a te
e fornecem os blo
eados na Web.
ASP.NET e dos ap
SP.NET e o mode
P.NET.
0 1-15

Web
m uma
ecnologia
ocos de
plicativos
elo de
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-16 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Descrever o processo de gerar e renderizar marcao e cdigo.
Descrever o modelo de execuo de compilao dinmica do ASP.NET.
Descrever as extenses ASP.NET.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Intera
Pontos
Desenvo
de rea
HTTP
descone
servidor
Qu
con
o se
lado
arq

Explorao
aocliente-
s principais
olver aplicativos
de trabalho, com
sem monitora
ectada. Isso signif
r Web.
ando um cliente
nhecido como UR
ervidor Web resp
o do cliente refer
quivo) de volta pa
deaplicativosWebMicro
-servidor
para uso por HT
o os aplicativos W
o de estado, ou s
fica que no h n
solicita uma pgi
RL (Uniform Reso
ponde enviando o
rente ao recurso s
ara o cliente.

osoftASP.NETnoMicro
TP muito difere
Windows Forms. P
seja, a comunica
nenhuma conexo
ina digitando um
ource Locator), e
o HTML (e, possi
solicitado, como u
osoftVisualStudio201
ente de criar aplic
Por natureza, o pr
o funciona de m
o entre um client
m endereo, tamb
em um navegador
ivelmente, o cdi
uma pgina ou u
0 1-17

cativos
rotocolo
maneira
te e um
m
r da Web,
igo do
m
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-18 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
A conexo entre o cliente e o servidor aberta quando a solicitao entra e
fechada aps o envio da resposta para o cliente. Isso pode tornar difcil fazer
com que um aplicativo Web seja exibido como um aplicativo conectado.
Entretanto, o servidor Web pode ser configurado para reconhecer um usurio
que faz solicitaes repetidas. Isso envolve gerenciamento de estado. possvel,
portanto, reconhecer um usurio e qualquer informao por ele includa em
uma pgina da Web, de uma solicitao para a outra.

Observao:ogerenciamentodeestadoserabordadoemdetalhesnoMdulo13,
GerenciamentodeestadoemaplicativosWeb.
No lado do cliente, depois de carregar uma pgina, o usurio a envia para o
servidor, disparando o chamado postback. Isso acontece por meio da
funcionalidade do protocolo HTTP, incluindo os mtodos POST e GET. Em
HTML, uma funo de envio tpica pode ser disparada com a exposio de
um elemento HTML input do tipo submit para o usurio, que poder clicar
nesse elemento, o qual, por sua vez, ser renderizado como um boto na
pgina da Web.

Voc pode usar o cdigo do lado do cliente no cliente para trabalhar com informaes
e controles sem enviar ao servidor e para disparar um postback, via programao.
O cdigo de servidor executado apenas no servidor, mas tambm pode ser usado
para injetar cdigo do lado do cliente na pgina que renderizada no cliente.
O ASP.NET faz com que a interao cliente-servidor parea trivial, por causa da
programao controlada por evento que voc pode usar por HTTP.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Oque
Pontos
Antes d
tecnolog
ASP Cl
cdigo
desemp
O que
O Micro
Web. El
servios
possv
no .NET

Explorao
eASP.NET?
s principais
o .NET Framewo
gias da Microsoft
ssico. O ASP Cl
o compilado. O A
penho, tipagem fo
ASP.NET?
osoft ASP.NET u
le permite que os
s WCF baseados
vel desenvolver
T. Estes so algun
deaplicativosWebMicro
?
ork e do ASP.NET
t implementavam
ssico cdigo in
ASP.NET, ao cont
orte e associao
um conjunto de tec
s programadores
na Web. Como o
aplicativos Web
ns dos principais

osoftASP.NETnoMicro
T, os desenvolved
m sites dinmicos
nterpretado, ao co
trrio do ASP, ofe
inicial.
cnologias de dese
criem sites dinm
o ASP.NET faz pa
b ASP.NET em u
aspectos do ASP
osoftVisualStudio201
dores da Web que
usando a tecnolo
ontrrio do ASP.N
erece otimizaes
nvolvimento de a
micos, aplicativos
rte do .NET Fram
uma linguagem b
P.NET:
0 1-19

e usavam
ogia do
NET, que
s de
aplicativos
s Web e
mework,
baseada
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-20 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
O componente fundamental do ASP.NET o Web Form, que a pgina da
Web que os usurios visualizam em um navegador. O Web Form uma pgina
dinmica processada pelo servidor Web e capaz de acessar recursos do servidor.
Um aplicativo Web ASP.NET tpico consiste em um ou mais Web Forms.
Voc tambm pode usar JavaScript, VBScript, jQuery ou Ajax para processar
vrias aes de usurio no cliente. Em outras palavras, uma pgina da Web em
HTML tradicional pode executar script no cliente para realizar tarefas bsicas.
Entretanto, um Web Form ASP.NET tambm pode executar cdigo de servidor
para acessar um banco de dados, gerar Web Forms adicionais ou aproveitar a
segurana interna do servidor.
O ASP.NET independente de dispositivo e permite desenvolver um nico
Web Form que pode ser exibido na maioria dos dispositivos que tenham
acesso Internet e um navegador da Web.
O Visual Studio 2010 pode ser usado para criar e executar um aplicativo Web
ASP.NET. Isso resulta em um processo de desenvolvimento simplificado, pois
voc pode testar o aplicativo sem criar um ambiente de hospedagem externo.
A autenticao do Windows interna e a autenticao de Formulrios ajudam a
manter seguros os aplicativos Web e os dados associados.
Um aplicativo ASP.NET implantado executado como um processo no
servidor Web do IIS (Servios de Informaes da Internet).
A tecnologia ASP.NET tambm d suporte a servios WCF baseados na Web.
Esses servios so aplicativos distribudos que usam XML e SOAP para
transferir informaes entre clientes, aplicativos e outros servios WCF
baseados na Web.

Observao:ParaobtermaisinformaessobreServiosWCF,consulteoMdulo12,
ConsumodeserviosWindowsCommunicationFoundation.
O ASP.NET um modelo de desenvolvimento para a Web unificado que inclui
os servios necessrios para criar aplicativos Web de tipo corporativo com o
mnimo de cdigo. possvel codificar os aplicativos em qualquer linguagem
de programao compatvel com CLR, como Visual Basic, Visual C# e Microsoft
Jscript 8.0. Essas linguagens permitem desenvolver aplicativos ASP.NET que
aproveitem o CLR, a segurana de tipos, a herana e outros recursos do ASP.NET.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-21
A tabela a seguir descreve os diversos recursos do ASP.NET.
Recurso Descrio
Estruturadepginae
controles
Aestruturadepginaecontrolesencapsulaa
funcionalidadecomumdainterfacedousurioem
controlesfceisdeusarereutilizveis.Elatambm
fornecerecursosparacontrolaraaparnciageraldosite
usandotemaseaparncias.Almdostemas,possvel
definirpginasmestras,quepodemserusadasparacriar
umlayoutconsistenteparaaspginasnoaplicativo.
CompiladorASP.NET TodocdigoASP.NETcompilado,oquepermite
tipagemforte,otimizaesdedesempenhoeassociao
inicial,entreoutrosbenefcios.Depoisdecompilado,o
cdigoASP.NETcompiladomaisdetalhadamenteem
cdigonativopelocomponentedoCLR,oque
proporcionamelhordesempenho.
Infraestruturade
segurana
OASP.NETforneceumainfraestruturadesegurana
avanadaparaautenticareautorizaroacessodeusurios
erealizaroutrastarefasrelacionadasasegurana.Para
autenticarosusurios,vocpodeusaraautenticaodo
Windows,quefornecidapeloIIS.Outraalternativa
gerenciaraautenticaousandoseuprpriobancode
dadosdeusurioatravsdaautenticaodeformulrios
ASP.NETedaassociaodoASP.NET.
Provedorde
autenticaode
formulrios
OASP.NETsempreexecutadocomumadeterminada
identidadedoWindows,porissovocpodeprotegerseu
aplicativousandorecursosbaseadosnoWindows,como
permissesdebancodedadoseACLs(listasdecontrole
deacesso)dosistemadearquivosNTFS.
Funcionalidadede
gerenciamentode
estado
OASP.NETforneceumafuncionalidadedegerenciamento
deestadointrnsecaquepermitearmazenarinformaes
entresolicitaesdepgina(comoinformaesdocliente)
ouocontedodeumcarrinhodecompras.
Configuraodo
ASP.NET
OsaplicativosASP.NETusamumsistemadeconfigurao
quepermitedefinirparmetrosdeconfiguraoparao
servidorWeb,paraumsiteouparaaplicativosindividuais.
Vocpodedeterminaressesparmetrosdeconfigurao
duranteaimplantaodosaplicativosASP.NETe
adicion-losourevis-losaqualquermomento,com
impactomnimoemservidoreseaplicativosWeb
operacionais.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-22 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
(continuao)
Recurso Descrio
Recursosde
desempenhoe
monitoramentode
integridade
OASP.NETpossuirecursosquepermitemmonitorara
integridadeeodesempenhodoaplicativoASP.NET.O
monitoramentodeintegridadedoASP.NETforneceum
relatriodosprincipaiseventoseinformaessobrea
integridadedeumaplicativoesobrecondiesdeerro.
Suporteasoluode
problemas
OASP.NETaproveitaainfraestruturadedepuraoem
tempodeexecuoparaoferecersuportedepurao
entrecomputadoreseentrelinguagens.possvel
depurarobjetosgerenciadosenogerenciados,bem
comolinguagensdescriptetodasaslinguagensaceitas
peloCLR.Almdisso,aestruturadepginaASP.NET
forneceummododerastreamentoquepermiteinserir
mensagensdeinstrumentaoempginasdaWeb
ASP.NET.
ServiosWCF
baseadosnaWeb
OASP.NEToferecesuporteparaserviosWCFbaseados
naWeb.UmservioWCFbaseadonaWebum
componentequepossuifuncionalidadecomercialcapaz
depermitiratrocadeinformaesdosaplicativosentre
firewallsusandopadrescomomensagensXMLeHTTP.
Ambientede
hospedagem
extensvele
gerenciamentode
ciclodevidade
aplicativos
OASP.NETincluiumambientedehospedagemextensvel
quecontrolaociclodevidadeumaplicativodesdeo
primeiroacessodeumusurioaumrecurso,comouma
pginanoaplicativo,atoencerramentodoaplicativo.
Ambientededesigner
extensvel
OASP.NETincluisuporteavanadoadesignerpara
controlesdeservidorWeb,parausocomumaferramenta
dedesignvisualcomooVisualStudio2010.
ASP.NETDynamic
Data
umaestruturaquepermitecriaraplicativosWeb
ASP.NETcontroladospordadoscomfacilidade.Isso
feitopormeiodadescobertaautomticademetadados
domodelodedadosemtempodeexecuoeda
derivaodecomportamentodainterfacedousurioa
partirdela.EsseassuntoserabordadonoMdulo10.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-23

Paraobtermaisinformaessobremonitoramentodeintegridadedo
ASP.NET,consulteapginaVisoGeraldoMonitoramentoda
IntegridadedoASP.NETem
http://go.microsoft.com/fwlink/?LinkID=192014&clcid=0x409.

Paraobtermaisinformaessobreambientededesignerextensvel,
consulteapginaVisoGeralsobreosDesignersdeControledoASP.NET
emhttp://go.microsoft.com/fwlink/?LinkID=192015&clcid=0x409.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-24 Introduo
Comp
Pontos
Um apli
aplicativ
Compo
Estes s
We
apli
Con
que
Um
entr
Pg
sim

aoDesenvolvimentonaW
ponentesde
s principais
icativo Web ASP.
vo Web, voc dev
onentes de um
o os component
eb Forms ou pgin
icativo Web.
ntroles de Usuri
e funcionalidades
m exemplo um c
rada de nome de
ginas Mestras ou
mplificada e consis
WebcomoMicrosoftV
aplicativosW
.NET contm dife
ve saber como im
aplicativo Web
es de um aplicati
nas .aspx. Fornec
io ou arquivos .as
s especficas sejam
controle de usur
e usurio e senha.
arquivos .master
stente entre Web

VisualStudio2010
WebASP.NE
erentes compone
mplementar e usar
b ASP.NET
ivo Web ASP.NET
cem a interface d
scx. Fornecem a i
m reutilizadas em
rio com caixas de
.
. Fornecem uma
b Forms.
ET
entes. Para criar u
r todos os compo
T:
o usurio para o
interface do usu
m diferentes Web
e texto e validao
interface do usu

um
onentes.
rio para
Forms.
o para
rio
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-25
Arquivos code-behind. Esto associados a Web Forms e contm o cdigo de
servidor referente ao Web Form. Tambm possvel criar uma pgina ASP.NET
de arquivo nico, que contm tanto a marcao de pgina como o cdigo
do .NET Framework no mesmo arquivo. Isso significa que o cdigo e a marcao
de pgina compartilham um nico arquivo.
Arquivos de configurao. So arquivos XML que definem as configuraes
para o aplicativo Web e o servidor Web. Cada aplicativo Web tem um ou mais
arquivos de configurao web.config, mas cada servidor Web tem apenas um
arquivo machine.config.
Arquivo Global.asax. Contm cdigo para responder a eventos no nvel de
aplicativo gerados pelo ASP.NET (por exemplo, erros no tratados).
Referncias de servio WCF. Permitem que o aplicativo Web envie e receba
dados de um servio WCF baseado na Web.
Conectividade de banco de dados. Permite que o aplicativo Web transfira
dados entre origens de bancos de dados.
Itens adicionais. Arquivos que podem ser includos em um aplicativo Web,
como arquivos HTML para contedo esttico e arquivos de texto, XML e XSLT.
CSS. Os arquivos CSS e os estilos contidos so usados para projetar o aplicativo
Web, tanto em relao ao elemento posicionado em um Web Form quanto
para especificar fontes, cores e texto.

Pergunta: Quais so as ferramentas no Visual Studio 2010 que tornam o
desenvolvimento de aplicativos mais rpido, fcil e confivel?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-26 Introduo
Gera
Pontos
Voc po
s pgin
na sua m
e se com
padres
pretend
Gera
Quando
compila

Observa
noopr
sobreas

aoDesenvolvimentonaW
oerenderi
s principais
ode criar aplicativ
nas da Web. Entr
marcao e no se
mportem corretam
s que possam ser
didos.
o e renderiza
o os compiladore
ao passa por v
ao:adescrioa
rojetodeaplicativo
sdiferenasentree
WebcomoMicrosoftV
izaodema
vos no Visual Stu
retanto, durante a
u cdigo para ge
mente nos cliente
r renderizados co
o de cdigo
es so solicitados
rios estgios.
aseguirparatra
oWebASP.NET.N
essesdoistiposde

VisualStudio2010
arcaoec
dio 2010 adicion
a compilao, os c
rar marcao e c
es. Isso significa q
rretamente pelos
a compilar o cd
balharcomumpr
Nosmdulossegui
eprojeto.
digo
nando marcao e
compiladores tra
digo que sejam
que a marcao s
s navegadores do
digo para o seu si
rojetodesiteASP.N
intes,vocaprend

e cdigo
abalham
exibidos
egue
s clientes
ite, a
NET,e
ermais
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-27
Primeiro, como parte da implantao no servidor Web em que o site ser
executado, todos os arquivos no site so copiados para o servidor Web de
destino, que pode ser local ou remoto. O ASP.NET compila os arquivos
quando um usurio acessa o site.
O compilador ASP.NET gerencia o processo de compilao de forma dinmica,
individualmente. O contedo do site analisado e a compilao real de cada item
devolvida ao compilador apropriado, como o do Visual Basic ou do Visual C#.
Esse compilador ASP.NET chamado compilador JIT (Just-In-Time) ASP.NET.
Isso significa que tanto o cdigo embutido como os arquivos code-behind so
compilados. Os Web Forms ou os Controles de Usurio so transformados em
uma definio de classe com mtodos para renderizar a pgina ou o controle.
Durante a compilao, o aplicativo compilado em um ou mais assemblies na
pasta Temporary ASP.NET Files quando a primeira pgina solicitada. A primeira
pgina pode ser qualquer uma, e no apenas a home page ou a pgina padro.
Os assemblies ficam localizados em uma subpasta com um nome derivado de
uma conveno de nomenclatura especial que permite nomes de diretrio
dinmicos e aleatrios. Isso facilita a localizao dos assemblies quando solicitado.
Esse modelo de compilao pode ser muito conveniente. Os desenvolvedores
podem abrir um Web Form ou um arquivo code-behind correspondente e
fazer modificaes nele (inclusive no servidor ao vivo), pois as alteraes
entram em vigor imediatamente. Embora o cdigo-fonte esteja disponvel no
servidor Web, no significa que o usurio de um site possa acessar a marcao
e o cdigo-fonte; isso est restrito ao servidor Web. Entretanto, o cdigo-fonte
pode ser acessado por qualquer usurio na rede que tenha as permisses de
acesso corretas para as pastas no servidor Web.
Se a visibilidade do cdigo-fonte for algo que lhe preocupa, voc pode utilizar
o projeto de aplicativo Web em lugar do projeto de site ou usar o modelo de
pr-compilao.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-28 Introduo
Mode
Pontos
As pgin
por pad
compila
subsequ
A execu
compila
Neste m
para env
Primei
Quando
seguinte
1. O n
2. O a
aoDesenvolvimentonaW
elodeexecu
s principais
nas da Web ASP.
dro quando um u
ados so armaze
uentes sejam exec
uo de compila
ar explicitamente
modelo, voc apre
viar informaes
ira solicitao
o um cliente solic
es eventos:
navegador do clie
analisador ASP.NE
WebcomoMicrosoftV
odecomp
NET e os arquivo
usurio solicita u
enados em cach
cutadas com efici
o dinmica perm
e o cdigo antes d
ender como func
para um cliente
cita uma pgina d
ente emite uma so
ET interpreta o c
VisualStudio2010
pilaodinm
os de cdigo usam
um recurso pela p
e, o que garante
incia.
mite modificar o c
da implantao do
ciona a compila
solicitante.
da Web pela prim
olicitao GET HT
cdigo-fonte.
micadoASP
m compilao din
primeira vez. Os r
e que as solicita
cdigo-fonte sem
o aplicativo Web
o dinmica no A
meira vez, ocorrem
TTP para o servid
P.NET

nmica
recursos
es
m precisar
.
ASP.NET
m os
dor.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-29
3. Se o cdigo ainda no estiver compilado em uma DLL (biblioteca de vnculo
dinmico), o ASP.NET invocar o compilador.
4. O tempo de execuo carregado e executa o cdigo MSIL (Microsoft
Intermediate Language).


Observao:MSILumalinguagemdeprogramaononveldeassemblyque
executadaemtempodeexecuo.Osdiversoscompiladores,comoosdoVisualBasice
doVisualC#,compilamcdigodeVisualBasiceVisualC#emMSIL,queento
executado.
Segunda solicitao
Quando o usurio solicita a mesma pgina da Web pela segunda vez, ocorrem os
seguintes eventos:
1. O navegador do cliente emite uma solicitao GET HTTP para o servidor.
2. O tempo de execuo carregado e executa imediatamente o cdigo MSIL,
que j foi compilado durante a primeira solicitao da pgina.

Observao:ocontedo.aspxcontinuarpodendoseranalisado,principalmentesea
pginadecontedotiversidoalterada.
Pr-compilao
Voc pode optar por pr-compilar um site inteiro antes de disponibiliz-lo aos
usurios. As vantagens da pr-compilao incluem:
Menor tempo de resposta para usurios, pois as pginas e os arquivos de cdigo
no requerem compilao na primeira solicitao.
Capacidade de identificar erros de compilao antes que os usurios
acessem o site.
Capacidade de implantar o site em um servidor de produo sem o cdigo-fonte.

Pr-compilao de aplicativo Web
O ASP.NET pode pr-compilar um site antes que ele seja disponibilizado aos usurios.
Isso fornece tempo de resposta mais rpido, tratamento de erros, proteo do
cdigo-fonte e implantao eficiente.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-30 Introduo
Exten
Pontos
H vria
especfi
Data.
O que
O ASP.N
de aplic
navegad
seo ou
servidor
fazendo
servidor
tambm
do clien
coleo
que um
aoDesenvolvimentonaW
sesdoASP
s principais
as estruturas den
cas do ASP.NET.
ASP.NET Aja
NET Ajax a estru
cativos Web inter
dores populares.
u parte de uma p
r de maneira a n
o. A estrutura do A
r que produzem a
m pode serve para
nte. A estrutura do
de controles do
ma ampla bibliot
WebcomoMicrosoftV
P.NETFramew
ntro do .NET Fram
Duas delas so o
ax?
utura gratuita do M
rativos e responsi
O ASP.NET Ajax
pgina da Web pa
o distrair o usu
ASP.NET Ajax po
automaticamente
a criar controles p
o ASP.NET Ajax i
lado do cliente al
teca JavaScript.
VisualStudio2010
work
mework que forn
o ASP.NET Ajax e
Microsoft Ajax usa
ivos que funciona
x permite enviar d
ara o servidor e re
rio nem interrom
ode ser usada com
o cdigo do lado
personalizados e
inclui o Ajax Con
ltamente interativ
necem funcionalid
e o ASP.NET Dyn
ada para o desenvo
am com a maioria
de forma assncro
esponder solicit
mper o que ele est
m controles e cd
o do cliente. Essa e
cdigo JavaScrip
ntrol Toolkit, que
vos, e a biblioteca

dades
namic
olvimento
a dos
ona uma
tao do
teja
digo de
estrutura
pt do lado
e uma
a jQuery,
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-31
Desenvolvedores que estejam familiarizados com o modelo de programao de
servidor do ASP.NET podem usar os controles de servidor do ASP.NET Ajax para
adicionar funcionalidade Ajax a um aplicativo ASP.NET sem escrever nenhum
cdigo JavaScript.
A biblioteca do ASP.NET Ajax do lado do cliente ajuda a criar aplicativos do lado
do cliente elaborados.
A biblioteca jQuery uma biblioteca JavaScript de cdigo aberto.

Observao:paraobtermaisinformaessobreASP.NETAjax,consulteoMdulo11,
CriaodeumaplicativodeWebFormshabilitadoparaMicrosoftASP.NETAjax.
O que ASP.NET Dynamic Data?
O ASP.NET Dynamic Data melhora a usabilidade e altera o mtodo RAD nos
controles de dados ASP.NET existentes. O RAD consideravelmente aumentado
com o uso de uma sofisticada estrutura de scaffolding. Quando conectado a uma
origem de dados, voc pode usar o ASP.NET Dynamic Data para criar um site
controlado por dados e totalmente funcional. H suporte total a operaes CRUD
(Create, Read, Update e Delete). A validao inteligente est disponvel
automaticamente e fornece validao baseada nas restries de banco de dados
para o tipo de dados, o tamanho do campo e os campos anulveis.
Portanto, o ASP.NET Dynamic Data uma estrutura que permite criar aplicativos
Web ASP.NET controlados por dados com facilidade. Ele faz isso usando a descoberta
automtica de metadados do modelo de dados em tempo de execuo e a derivao
de comportamento da interface do usurio a partir dela. Uma estrutura de scaffolding
fornece um site funcional para exibio e edio de dados. Voc pode personaliz-
la facilmente criando novos elementos ou alterando os existentes, a fim de substituir
o comportamento padro. Os aplicativos existentes podem se integrar a elementos
de scaffolding com as pginas ASP.NET.

Observao:paraobtermaisinformaessobreASP.NETDynamicData,consulteo
Mdulo10,GerenciamentodedadosusandooMicrosoftASP.NETDynamicData.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-32 Introduo
Lio3
Visoge
Nesta li
deste cu
entende
Objetiv
Depois
Des
Des
Exp
Exp
Exi

aoDesenvolvimentonaW
eraldoap
o, voc explora
urso. Tambm ir
er algumas das su
vos da lio
de concluir esta l
screver o cenrio
screver a configur
plorar o .NET Fra
plorar o Visual St
ibir os componen
WebcomoMicrosoftV
plicativod
ar o aplicativo d
explorar uma ver
uas funcionalidad
lio, voc ser ca
de laboratrio.
rao do aplicativ
amework.
tudio 2010.
ntes de um projet
VisualStudio2010
delabora
de laboratrio que
rso completa do
des.
apaz de:
vo de laboratrio
to de aplicativo W
atrio
e ser criado no r
aplicativo de lab
o.
Web ASP.NET 4.0

restante
oratrio e
0.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Cenr
Voc u
voc pr
clientes
nenhum
pela Int
intranet
desenvo
mnimo
O desen
as funci
um apli
novo pr
Explorao
riodelabora
um desenvolvedo
recisa criar o apli
s eletronicament
m software extra n
ternet a funcionr
t. Para isso, voc p
olvimento que lh
o de codificao.
nvolvedor snior
ionalidades do .N
icativo Web ou u
rojeto
deaplicativosWebMicro
atrio
or principiante na
icativo Web Cus
te de qualquer lu
no cliente. O apli
rios em locais rem
precisa seleciona
e permitam criar
aconselhou voc
NET Framework 4
uma soluo que
osoftASP.NETnoMicro
Contoso, Ltd. Co
stomer Managem
ugar na intranet,
icativo Web tamb
motos que no es
ar uma plataforma
um aplicativo W
a se familiarizar
4 e do Visual Stud
e possa vir a ser
osoftVisualStudio201
omo parte do seu
ment para gerenc
sem precisar ins
bm ser disponib
stejam conectado
a e uma ferramen
Web simples com o
com os recursos
dio 2010, visualiz
um prottipo de
0 1-33

trabalho,
ciar os
stalar
bilizado
os
nta de
o
s e
zando
e um
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-34 Introduo
Confi
Este pas
Custom
manten
Requis
O aplica
Requisit
Requis
For
Arm
Cria
Edi
Exi
Exi
aoDesenvolvimentonaW
guraodo
sso a passo da so
mer Management
nha itens de client
sitos de aplicati
ativo deve atende
tos de interface d
sitos funcionais
rnecer recursos d
mazenar linhas de
ar novas linhas d
itar linhas de clien
ibir informaes s
ibir os nomes de
WebcomoMicrosoftV
aplicativode
oluo de laborat
para permitir que
tes e de pases.
ivo
er s exigncias li
do usurio.
s
de logon.
e cliente.
de cliente.
nte existentes.
sobre um nico c
todos os clientes
VisualStudio2010
elaboratrio
rio ajudar a cri
e a equipe de ven
istadas nas see
cliente.
em algo parecid
o
ar o aplicativo W
ndas da Contoso,
s Requisitos func
o com uma plani

Web
Ltd
cionais e
ilha.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-35
Editar uma linha de cliente em algo parecido com uma planilha.
Validar entrada de usurio, inclusive garantindo que as informaes
obrigatrias tenham sido inseridas e estejam no formato correto.
Armazenar linhas de pas.
Criar novas linhas de pas.
Editar linhas de pas existentes.
Exibir informaes sobre um nico pas.
Mostrar todos os dados relacionados ao pas em uma exibio ao estilo de
planilha.
Editar os dados relacionados ao pas em uma exibio ao estilo de planilha.
Ir diretamente para informaes relacionadas a clientes ou pases passando a
ID na URL.
Expor todas as linhas de pas a fornecedores e clientes externos usando um
servio WCF ou um Web Form independente.

Requisitos de interface do usurio
Apresentar mensagens de erro de validao de entrada no local, ou seja, ao
lado dos campos de entrada que no foram aceitos na validao de entrada.
Tornar a navegao consistente em todo o aplicativo exibindo o mesmo menu
em todas as pginas.
Exibir o caminho para a pgina ou o local atual em exibio.

Criao do aplicativo
Um nico aplicativo ser criado em todos os mdulos, mesmo se os exerccios do
laboratrio nos primeiros mdulos somente apresentarem os conceitos que sero
usados nos mdulos posteriores.
Como trabalhar com o aplicativo Customer Management
O aplicativo Customer Management foi projetado para permitir que a equipe de
vendas da Contoso Pharmaceuticals mantenha dados de clientes e pases. Um
nico cliente est localizado em um determinado pas, mas qualquer quantidade
de clientes pode viver no mesmo pas, por isso h uma relao muitos para um
entre clientes e pases.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-36 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
O aplicativo consiste nos seguintes componentes:
Home Page. uma pgina simples de saudao que o usurio v quando abre
o aplicativo.
Menu. Baseado em um arquivo XML de mapa do site, o Menu pode ser acessado
em todas as pginas e fornece as funcionalidades listadas na tabela a seguir.
Funcionalidade Descrio
Customers NewCriaumanovalinhadecliente.
AllMostratodasaslinhasdecliente.
Countries NewCriaumanovalinhadepas.
AllMostratodasaslinhasdepas.
Import ImportapasesdeumarquivoXML.
About ExibeumacaixadedilogoAboutmodal.

Navegao estrutural
Exibe o local atual no aplicativo, bem como o caminho para a pgina ou o Web Form.
Pgina Clientes
As linhas de cliente so armazenadas no banco de dados CustomerManagement na
tabela Clientes. A pgina Clientes exibe as informaes a seguir.

Campo Descrio
ID Oidentificadorexclusivodocliente.Estecamposomenteleitura
eatribudoautomaticamente.Ovalordestecampopodeser
usadoaonavegardiretamenteparaumdeterminadocliente.
FirstName Onomedoclienteestlimitadoa50caracteres.Estecampo
obrigatrio.
LastName Osobrenomedoclienteestlimitadoa30caracteres.Estecampo
obrigatrio.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-37
(continuao)

Um cliente vive em um pas e as informaes de pas so salvas na tabela Pases,
que faz referncia tabela Clientes.

Campo Descrio
Address oendereodocliente,queconsistenonomedaruaeno
nmerodacasa/prdioeapartamento.Estlimitadoa50
caracteres.Estecampoobrigatrio.
ZipCode ocdigopostaldocliente;estlimitadoa10caracteres.Este
campoobrigatrio.
City onomedacidadeondeoclientemora;estlimitadoa30
caracteres.Estecampoobrigatrio.
State Onomedoestadooudaregioondeoclientemora;est
limitadoa30caracteres.
Country aIDexclusivadopasondeoclientevive.Estecampo
obrigatrio.
Phone onmerodetelefonedocliente,salvonoformatoapropriado
paraopasondeoclientereside;estlimitadoa30caracteres.
E-mailAddress oendereodeemaildocliente;estlimitadoa50caracteres.
WebAddress oendereoWeb(URL)docliente;estlimitadoa80caracteres.
CreditLimit olimitedecrditoatribudoaocliente.Estecampo
obrigatrioesaceitacaracteresnumricosde0a9.
NewsSubscriber Estecampoboolianoindicaseoclienteassinaboletins
informativos.ExigequeocampoEndereodeEmailesteja
preenchido.
CreatedDate adataemquealinhadeclientefoicriadanoaplicativo;
atribudaautomaticamente.Essecamposomenteleitura.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-38 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Validao de entrada
O Web Form Customers fornece validao de entrada usando diversas tcnicas. A
validao de entrada, que deve ocorrer tanto do lado do cliente como no servidor,
inclui as seguintes funcionalidades:
Ser solicitado que voc insira informaes nos campos Nome, Sobrenome,
Endereo, CEP, Cidade, Pas e Endereo Web ao adicionar ou editar uma linha
de cliente. Uma mensagem ser exibida caso alguma informao obrigatria
seja deixada em branco ou quando as informaes do cliente forem salvas ou
atualizadas.
A caixa de texto referente ao campo Limite de Crdito s aceita caracteres
numricos e apenas nmeros menores ou iguais a 50.000.
O campo Endereo de Email deve conter um endereo de email vlido, se
preenchido.
O campo Endereo Web deve conter um endereo Web (URL) vlido.

Pgina Pases
As linhas de pas so armazenadas no banco de dados Contoso na tabela Pases. A
pgina Pases exibe as informaes listadas na tabela a seguir.
Campo Descrio
ID umcamposomenteleituracomoidentificadorexclusivode
umpas.Ovalordessecampopodeserusadoaosenavegar
diretamenteparaumdeterminadopas.
Name onomeeminglsdopas;estlimitadoa50caracteres.Este
campoobrigatrio.
PhoneNo.Format oformatousadoparaexibiredigitarumnmerodetelefone;
estlimitadoa30caracteres.Aformataoseraplicada
entradadousurioquandoestecampotiversidoespecificado
nobancodedados.
DialingCountry
Code
ocdigodediscageminternacionalaodiscardeforadopas,
como1paraCanadeEstadosUnidos,45paraDinamarca,
44paraGr-Bretanha,353paraIrlandae34paraEspanha.
Geralmente,exibidocomo+1ou+45paraindicaroprefixo
quedeveserusadoparadiscarforadopasdeorigemda
chamada.Estecampoobrigatrio.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-39
(continuao)
Campo Descrio
International
DialingCode
ocdigoouonmeroquedeveserusadoparadiscarum
nmeroforadopasdeorigemdachamada,como011paraos
EstadosUnidose00parapasesmembrosdaUnioEuropeia.
Estecampoobrigatrio.
InternetTopLevel
Domain
oTLD(DomniodePrimeiroNvel)especficodepaspara
domniosdaInternet,como.dkparaDinamarca,.depara
Alemanha,.ieparaIrlanda,.brparaBrasilou.auparaAustrlia.
Estecampoobrigatrio.

Validao de entrada
O Web Form Pases fornece validao de entrada ao criar ou editar pases com o
uso de diversas tcnicas. A validao de entrada, que deve ocorrer tanto no cliente
quanto no servidor, inclui as seguintes funcionalidades:
Ser solicitado que voc insira informaes nos campos Nome, Domnio de
primeiro nvel da Internet e Cdigo de discagem internacional ao adicionar ou
editar um pas. Uma mensagem ser exibida caso alguma informao seja
deixada em branco ao salvar ou atualizar as informaes de pas.
A caixa de texto referente ao campo Cdigo de discagem internacional s
aceita caracteres numricos no formato 999.

Logon
O usurio precisa fazer logon e os controles de logon ASP.NET padro devem estar
visveis em todas as pginas. Usando esses controles, o usurio pode ver quem fez
logon. Para fazer logout, basta clicar no link apropriado. Os nomes de usurio e as
senhas so armazenados no banco de dados de perfil ASPNETDB padro, que
criado no SQL Server 2008 Express Edition.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-40 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Pgina Logon
A pgina Logon para a qual usurios no autenticados so redirecionados
automaticamente permite que um usurio digite o nome de usurio e a senha para
acessar o aplicativo. A pgina Logon exibe as seguintes informaes:
Nome de Usurio: o nome de usurio daquele usurio que est tentando se
autenticar.
Senha: a senha associada ao nome de usurio fornecido. O valor neste campo
deve diferenciar maisculas de minsculas.
Logon: o boto Logon, que iniciar o processo de autenticao das credenciais
fornecidas pelo usurio.

Validao de entrada
O Web Form Logon fornece validao de entrada ao autenticar como usurio. A
validao de entrada, que deve ocorrer tanto no cliente quanto no servidor, inclui o
seguinte:
Ser solicitado que voc insira informaes nos campos Nome de Usurio e
Senha ao se autenticar. Uma mensagem ser exibida caso alguma informao
seja deixada em branco, depois que o usurio clicar no boto Logon.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-41
Banco de dados
O banco de dados CustomerManagement um banco de dados do SQL Server
2008 com duas tabelas: Clientes e Pases.
A tabela Clientes inclui os campos a seguir.
Nomedo
campo Tipodedados Tamanho Obrigatrio
Valorpadro/
FunoT-SQL
(Transact-SQL) Descrio
ID uniqueidentifier N/A Sim newsequentialid() aIDexclusivadalinha
decliente,queatribuda
automaticamentepelo
bancodedados,seno
informadadurantea
insero.achave
primria.
FirstName nvarchar 50 Sim oprimeironome
docliente.Trata-se
deumndiceno
clusterizadoeno
exclusivo,classificado
emordemcrescente.
LastName nvarchar 30 Sim Osobrenomedo
cliente.Trata-sedeum
ndicenoclusterizado
enoexclusivo,
classificadoemordem
crescente.
Address nvarchar 50 Sim oendereodo
cliente,inclusonome
daruaenmeroda
casa/apartamento.
Phone varchar 30 No onmerodetelefone
docliente,salvono
formatoapropriado
paraopasondeo
clientereside.
ZipCode nvarchar 10 Sim oCEPdocliente.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-42 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
(continuao)
Nomedo
campo Tipodedados Tamanho Obrigatrio
Valorpadro/
FunoT-SQL
(Transact-SQL) Descrio
City nvarchar 30 Sim Onomedacidade
ondeoclientemora.
Trata-sedeumndice
noclusterizadoeno
exclusivo,classificado
emordemcrescente.
State nvarchar 30 No Onomedoestadoou
daregioondeo
clientemora.
CountryID uniqueidentifier N/A Sim aIDexclusivadopas
ondeoclientevive.
umachave
estrangeira,quefaz
refernciaIDdopas
correspondentena
tabelaPases.
EmailAddr
ess
nvarchar 50 No oendereodee-mail
docliente.Trata-se
tambmdeumndice
noclusterizadoeno
exclusivo,classificado
emordemcrescente.
Url nvarchar 80 No oendereodositedo
cliente.
CreditLimit int N/A Sim 50,000 olimitedecrdito
atribudoaocliente.
NewsSubs
criber
bit No Indicaseocliente
assinaounoboletins
informativosda
Contoso.
CreatedD
ate
smalldatetime N/A Sim getdate() adataemquealinha
declientefoicriadano
aplicativo.atribuda
automaticamentepelo
bancodedados.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-43
A tabela Pases inclui os seguintes campos.
Nomedo
campo Tipodedados Tamanho Obrigatrio
Valorpadro/
FunoT-SQL
(Transact-SQL) Descrio
ID uniqueidentifier N/A Sim newsequentialid() Umcamposomente
leituracomo
Identificadorexclusivo
deumpas.achave
primria.
Name nvarchar 50 Sim onomeemingls
dopas.Trata-se
tambmdeumndice
excludoeno
clusterizado,
classificadoemordem
crescente.
PhoneNo
Format
varchar 30 No oformatousado
paraexibiredigitar
umnmerode
telefone.
DialingCountr
yCode
varchar 5 Sim ocdigode
discagem
internacionalaodiscar
deforadopas,como
1paraCanade
EstadosUnidos,45
paraDinamarca,44
paraGr-Bretanha,
353paraIrlandae34
paraEspanha.
Geralmente,exibido
como+1ou+45para
indicaroprefixoque
deveserusadopara
discarforadopasde
origemdachamada.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-44 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
(continuao)
Nomedo
campo Tipodedados Tamanho Obrigatrio
Valorpadro/
FunoT-SQL
(Transact-SQL) Descrio
International
DialingCode
varchar 5 Sim ocdigoouo
nmeroquedeveser
usadoparadiscarum
nmeroforadopas
deorigemda
chamada,como011
paraosEstados
Unidose00para
pasesmembrosda
UnioEuropeia.Este
campoobrigatrio.
InternetTLD char 2 Sim OTLDespecficode
pasparadomniosda
Internet,como.dk
paraDinamarca,.de
paraAlemanha,.ie
paraIrlanda,.nopara
Noruegaou.aupara
Austrlia.

Pases existentes
Mensalmente, uma atualizao das linhas de pas enviada eletronicamente para a
Contoso, Ltd e essas linhas so colocadas em um arquivo XML simples. Somente pases
com valor no campo PhoneNoFormat devem ser importados para a tabela Pases.
Pgina Importar Pases
O Web Form Importar Pases contm um Rtulo (um controle de seleo de
arquivos para localizar o arquivo XML com os dados de Pas a serem importados)
e botes para carregar ou importar os dados e export-los para o banco de dados
do SQL Server 2008.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Passo
Nesta d
aplicativ
mquin
acessan
D:\Labf
O Web
Manage
tambm
controle
Explorao
oapasso:aso
demonstrao, o in
vo Customer Man
na virtual e visuali
ndo o arquivo de
files\Solution\M
Form Default.asp
ement. Assim com
m se baseia na pg
es Menu ou SiteM
deaplicativosWebMicro
oluodela
nstrutor demons
nagement. Voc p
izar as etapas dem
soluo Custome
16\VB ou D:\Lab
px a home page
mo os outros Web
gina mestra Site.m
MapPath para pro
osoftASP.NETnoMicro
boratrio
strar os recursos
pode abrir a solu
monstradas. Abra
erManagement na
bfiles\Solution\M
e do aplicativo W
b Forms no aplica
master. Os usuri
ocurar outros We
osoftVisualStudio201
s e as funcionalid
o de laboratri
a o cdigo de solu
as pastas
M16\CS.
Web Customer
ativo, o Default.a
ios podem usar o
eb Forms.
0 1-45

ades do
io na
uo
aspx
os
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-46 Introduo
Demo
Pontos
Nesta d
desenvo
Framew
Etapas
Estas s
1. Abr


aoDesenvolvimentonaW
onstrao:Ex
s principais
demonstrao, voc
olvimento de apli
work, como Ajax E
s da demonstra
o as principais ta
ra o Visual Studio
No menu Inicia
clique em Micro
Visual Studio 2
WebcomoMicrosoftV
xplorandoo
c ir examinar o
icativos Web e ex
Extensions, Ajax
ao
arefas:
o 2010.
ar de 10560A-GEN
osoft Visual Stud
2010.

VisualStudio2010
.NETFramew
o .NET Framewor
xplorar as extens
Library e Dynam
N-DEV, aponte p
dio 2010 e novam
work
rk no contexto do
es do ASP.NET
mic Data.
ara Todos os Pro
mente em Micros

o
ogramas,
soft
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-47
2. Abra a soluo do laboratrio concludo.
Na janela Start page Microsoft Visual Studio (Administrator), no menu
File, clique em Open Project.
Na caixa de dilogo Open Project, na caixa File name, digite
D:\Labfiles\Starter\M16\VB\CustomerManagement.sln ou
D:\Labfiles\Starter\M16\CS\CustomerManagement.sln e clique em
Open.
3. Examine algumas das classes e dos namespaces do .NET Framework, como
System.Web e System.Web.UI, e observe a classe System.Web.UI.Page.
4. Explore os recursos de Ajax Extensions e de Ajax Library.
Execute a soluo e exiba a caixa About clicando em About no menu Help.

Observao:vocaprendermaissobreosrecursosoferecidosporAjaxExtensionse
AjaxLibrarynoMdulo11,CriaodeumaplicativodeWebFormshabilitadopara
MicrosoftASP.NETAjax.
5. Explore o funcionamento do Dynamic Data.
Execute a soluo.
No menu Customers, clique em All.
No menu Countries, clique em All.
6. Se o tempo permitir, exiba cdigo para alguns dos exerccios de laboratrio do
Mdulo 6 em diante.


Observao:vocaprendermaissobreofuncionamentodoDynamicDatanoMdulo10,
GerenciamentodedadosusandooMicrosoftASP.NETDynamicData.
Resultado:aofinaldestademonstrao,vocterumconhecimentobsicodos
recursosdo.NETFramework4nocontextododesenvolvimentodeaplicativosWeb,
incluindoalgumasdasnovasfuncionalidades,comoAjaxeDynamicData.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-48 Introduo
Demo
Visua
Nesta d
ferrame
Web Fo
Etapas
Estas s
1. Abr


aoDesenvolvimentonaW
onstrao:Ex
lStudio201
demonstrao, voc
enta para a criao
orms, adicionand
s da demonstra
o as principais ta
ra o Microsoft Vis
No menu Inici
Programas, cliq
Microsoft Visua
WebcomoMicrosoftV
xploraode
0
c aprender a us
o de aplicativos W
o cdigo e usand
ao
arefas:
sual Studio 2010
iar de 10560A-G
que em Microsof
al Studio 2010.

VisualStudio2010
eexibiese
sar o Visual Stud
Web explorando
do componentes e
.
GEN-DEV, apon
ft Visual Studio 2
econtrolesd
io 2010 como n
exibies, projeta
e controles.
te para Todos o
2010 e novament
o

nica
ando
os
te em
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-49
2. Crie um novo site ASP.NET com as seguintes configuraes:
Nome: WebSite1
Local: Sistema de arquivos
Linguagem: Visual Basic ou Visual C#
Na janela Start Page Microsoft Visual Studio, no menu File, clique em
New Web Site.
Na caixa de dilogo New Web Site, no painel esquerdo, em Installed
Templates, clique em Visual Basic ou em Visual C#.
No painel intermedirio, verifique se .NET Framework 4 est selecionado
na lista de estruturas de destino.
Na caixa de dilogo New Web Site, no painel intermedirio, clique em
ASP.NET Empty Web Site.
Na lista Web location, verifique se File System est selecionado e clique
em OK.
3. Adicione o Web Form Default.aspx ao site CustomerManagement.
No Solution Explorer, clique com o boto direito do mouse no site e, em
seguida, clique em Add New Item.
Na caixa de dilogo Add New Item, no painel intermedirio, clique em
Web Form na caixa Name, digite Default.aspx e clique em Add.
4. Abra o Web Form nos modos de exibio de fonte e design.
Na janela Default.aspx, clique em Design.
Na janela Default.aspx, clique em Source.
Na janela Default.aspx, clique em Design.
5. Adicione um controle Button ao Web Form.
Na janela Default.aspx, selecione o elemento div.
Na janela CustomerManagement Microsoft Visual Studio
(Administrator), aponte para Toolbox.
Em Toolbox, expanda Standard e clique duas vezes no controle Button.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-50 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
6. Adicione cdigo ao evento Button Click.
Na janela InsertCustomer.aspx, clique no controle Button.
Na janela Properties, clique no cone Events e, em seguida, clique duas
vezes na caixa ao lado do evento Click.

Resultado:aofinaldestademonstrao,vocentenderasvantagensdeusaroVisual
Studio2010paradesenvolveraplicativosASP.NET.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Demo
deap

Nesta d
aplicativ
ASP.NE
de infor
de cdig
Etapas
Estas s
1. Exa

2. Exa

Explorao
onstrao:Ex
plicativoWeb
demonstrao, voc
vo Web, como o
ET, Web Forms, o
rmaes de assem
go de designer.
s da demonstra
o as principais ta
amine os arquivo
No Solution Exp
identifique para
amine as pastas A
No Solution Exp
crie uma nova.
deaplicativosWebMicro
xplorandoos
bASP.NET4.
c examinar os
arquivo de solu
os arquivos code-b
mbly, as refernci
ao
arefas:
s de soluo e de
plorer, observe o
a onde vo as refe
ASP.NET.
plorer, analise as
osoftASP.NETnoMicro
scomponen
.0
diversos compon
o, o arquivo de
behind, os arquiv
as, os arquivos w
e projeto e as refe
s arquivos de sol
erncias de projet
pastas ASP.NET
osoftVisualStudio201
tesdeump
nentes de um pro
projeto, as pastas
vos de classe, o ar
web.config e os ar
erncias.
luo e de projeto
to.
e, se o tempo pe

0 1-51
rojeto

ojeto de
s
rquivo
quivos
o e
ermitir,
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-52 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
3. Examine os Web Forms, os arquivos de cdigo de designer, os arquivos
code-behind e os arquivos de classe.
No Solution Explorer, analise os diversos arquivos.
4. Examine o arquivo de informaes de assembly e os arquivos web.config.
No Solution Explorer, analise os diversos arquivos.

Resultado:aofinaldestademonstrao,vocteridentificadoeexaminadoa
funcionalidadeeaimportnciadoscomponentesdeumaplicativoWebASP.NET4.0.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Revis
Pergun
1. Qu
2. Qu
3. O q

Explorao
odolabora
ntas e respostas
al a maior vanta
al a finalidade d
que so Web Form
deaplicativosWebMicro
atrio
s de reviso
agem de usar o A
dos arquivos cod
ms?

osoftASP.NETnoMicro
ASP.NET?
de-behind no ASP
osoftVisualStudio201
.NET?
0 1-53

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
1-54 Introduo
Revisod
complem
Pergun
1. Qu
2. Qu
3. Voc
com
dev
4. Voc
vri

aoDesenvolvimentonaW
domdu
mentares
ntas e respostas
e componentes e
al a finalidade d
c precisa criar um
mpartilhado entre
ve criar?
c precisa desenv
ias verses do .N
WebcomoMicrosoftV
uloeinfo
s de reviso
esto includos no
do CLR?
m componente W
e vrios aplicativo
volver um aplicati
NET Framework. Q

VisualStudio2010
rmaes
o .NET Framewor
Web programvel
os Web. Que tipo
ivo que contenha
Que ferramenta p
rk 4?
l que possa ser
o de componente
a projetos que dir
permite fazer isso

voc
recione
o?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
ExploraodeaplicativosWebMicrosoftASP.NETnoMicrosoftVisualStudio2010 1-55
Problemas e cenrios do mundo real
1. Voc no tem certeza da funcionalidade de uma determinada classe. Como
determin-la?
Use a documentao do .NET Framework, sites ou comunidades online.
2. Voc no tem certeza se deve usar compilao dinmica ou pr-compilao.
Que fatores precisam ser considerados?
Use a compilao dinmica nas seguintes situaes:
Quando quiser modificar o cdigo-fonte sem precisar compilar
explicitamente o cdigo antes da implantao do aplicativo Web
Quando quiser estender o sistema de compilao do ASP.NET criando
provedores de compilao personalizados para novos tipos de arquivo
que so chamados durante a compilao
Use a pr-compilao nas seguintes situaes:
Quando o tempo de resposta for uma preocupao
Para identificar erros de compilao antes que os usurios acessem o site
Para implantar o site em um servidor de produo sem o cdigo-fonte

Ferramentas
Ferramenta Finalidade Ondeencontrar
VisualStudio2010 DesenvolveraplicativosWeb MenuIniciar
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-1
Mdulo2
CriaodeaplicativosWebusandoo
MicrosoftVisualStudio2010elinguagens
baseadasnoMicrosoft.NET
Contedo:
Lio1:Escolhadeumalinguagemdeprogramao 2-3
Lio2:VisogeraldoVisualStudio2010 2-15
Lio3:CriaodeumaplicativoWebsimples 2-32
Laboratrio:CriaodeaplicativosWebusandooMicrosoft
VisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-52

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-2 Introduo
Visoge
O Micro
que pod
confive
usadas a
conside
usando
e o Micr
desenvo
Usando
criar ap

aoDesenvolvimentonaW
eraldom
osoft Visual Stud
de ser utilizado
eis. Existem vria
ao desenvolver ap
erao aspectos f
duas das linguag
rosoft Visual Basi
olvimento na Web
o esses recursos e
licativos e sites M
WebcomoMicrosoftV
mdulo
dio 2010 um a
para criar solu
as linguagens de p
plicativos Micros
fundamentais ao
gens baseadas no
ic. O Visual Stud
b, alm de compon
e componentes,
Microsoft ASP.NE

VisualStudio2010
ambiente de dese
es da Web cor
programao dife
soft .NET Framew
o escrever cdigo
o .NET Framewor
dio 2010 oferece
nentes de servidor
possvel aument
ET com sucesso.
envolvimento abr
rporativas eficien
erentes que pode
work. preciso le
o e criar compon
rk: o Microsoft Vi
recursos comple
r escalveis e reuti
tar sua produtivid

rangente
ntes e
em ser
evar em
nentes
isual C#
etos de
ilizveis.
dade e
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Criaodea
Lio1
Escolhad
Pontos
Para cri
dispon
program
desenvo
linguage
tudo iss
uma lin
(Micros
convert
(Comm

plicativosWebusandoo
deumali
s principais
ar aplicativos We
veis. Por muitos
mao com base
olvimento integra
em de programa
so mudou com a
nguagem de progr
soft Intermediate
ida em cdigo de
mon Language Ru
MicrosoftVisualStudio
inguagem
eb, existem vrias
anos, os program
na plataforma, n
ado) disponveis,
o simplesment
introduo do .N
ramao. Essa ind
Language), que
e computador qu
ntime) do .NET.

o2010elinguagensba
mdeprog
s opes de lingu
madores escolhiam
na estrutura e no
embora alguns d
e por gostarem d
NET Framework,
dependncia po
executada em t
uando o programa

aseadasnoMicrosoft.NE
gramao
uagens de program
m uma linguagem
o IDE (ambiente
deles escolhessem
da sua sintaxe. Po
pois ele no dep
ossvel porque a M
empo de execu
a executado pel
T 2-3
o

mao
m de
e de
m uma
orm,
ende de
MSIL
o,
lo CLR
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-4 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Para que uma linguagem de programao seja compatvel com o .NET Framework,
o compilador correspondente (na fase de compilao) deve compilar o cdigo na
MSIL (ou IL, como se costuma cham-la). Em tempo de execuo, a MSIL compilada
pelo compilador JIT (Just in Time). Na prtica, o CLR do .NET compreende apenas
uma linguagem: a MSIL. Portanto, se o .NET Framework for a sua plataforma ou
estrutura, voc ter vrias opes ao escolher uma linguagem de programao.
Muitas linguagens de programao para o .NET Framework possuem a BCL (Base
Class Library) do .NET Framework, que inclui a maior parte da funcionalidade. Em
geral, no a funcionalidade que diferencia as linguagens de programao, mas
sim a sintaxe, a estrutura de cdigo e o editor correspondente no qual o cdigo
escrito.
O Visual Studio 2010 inclui o Visual Basic e o Visual C# para ajudar a criar
aplicativos Web. O desenvolvimento na Web tornou-se extremamente eficiente e
mais simples do que nunca com a incluso dos seguintes elementos: ASP.NET Ajax
(Asynchronous JavaScript and XML), Biblioteca Ajax, Dados Dinmicos, LINQ
(consulta integrada linguagem), diversos controles, suporte para CSS (folhas de
estilo em cascata) e scripts, como JavaScript e jQuery.
Nesta lio, voc ir explorar os recursos do Visual Basic e do Visual C# e examinar
as consideraes que devem ser feitas na hora de escolher entre essas duas
linguagens de programao. Como algumas situaes exigiro diversas linguagens
de programao no mesmo aplicativo, preciso saber como trabalhar com cdigo
em cenrios de vrias linguagens.
Objetivos da lio
Depois de concluir esta lio, voc ser capaz de:
Descrever os recursos do Visual Basic.
Descrever os recursos do Visual C#.
Descrever os cenrios para ambientes com linguagens mistas.
Descrever as consideraes que devem ser feitas na hora de escolher entre o
Visual Basic e o Visual C# para um aplicativo.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Criaodea
Recur
Pontos
Embora
Framew
verses
fcil tra
com ma
no Win
tipo de a
Window
Web co
disposi
Se tiver
pouca c
foram fe
substitu
determi
no reiv
plicativosWebusandoo
rsosdoVisua
s principais
a a verso atual d
work, se voc cos
anteriores com b
abalhar com o Vis
ais frequncia pa
ndows, o Visual
aplicativo ou serv
ws Forms, servio
om base em Ajax
tivos e aplicativo
trabalhado em u
coisa mudou, emb
eitas alteraes n
uda pelo recurso
inista e ajudando
vindicados.
MicrosoftVisualStudio
alBasic
o Visual Basic 10
stuma desenvolve
base no COM (Co
sual Basic 10.0. E
ara a criao de c
Basic 10.0 pode
vio .NET Framew
os WCF (Window
x (Asynchronous
os Microsoft Silve
uma verso anteri
bora vrios acrs
na finalizao dete
de coleta de lixo
o a reduzir o desp
o2010elinguagensba
0.0 tenha sido pro
er aplicativos no
omponent Objec
Enquanto o Visu
omponentes CO
ser utilizado par
work, incluindo ap
ws Communication
JavaScript and X
erlight.
ior do Visual Basi
cimos tenham sid
erminista com ba
o do CLR, elimina
perdcio de mem
aseadasnoMicrosoft.NE
ojetada com base
Visual Basic 6.0
t Model), perceb
al Basic 6.0 era u
OM e aplicativos b
ra desenvolver qu
plicativos Web, ap
n Foundation), ap
XML), aplicativo
ic, voc perceber
do feitos. Por exe
ase no COM, que
ando assim a fina
ria causado por
T 2-5

no .NET
ou em
er que
utilizado
baseados
ualquer
plicativos
plicativos
os de
que
emplo,
agora foi
alizao
objetos
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-6 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Editor de Texto do Visual Basic 10.0
O Editor de Texto do Visual Basic possui o recurso de codificao com cores para
palavras-chave, variveis, constantes e instrues, como a maioria das outras novas
linguagens baseadas no .NET Framework. O esquema de cores padro exibe
palavras-chave em azul e cadeias de caracteres em vermelho-escuro.
O Editor de Texto do Visual Basic tambm apresenta um modelo de compilao
em segundo plano, no qual o cdigo compilado em segundo plano enquanto
voc digita, para detectar erros de sintaxe e tempo de compilao. Os erros
detectados pela compilao em segundo plano so sublinhados com uma linha em
ziguezague e com diferentes cores, dependendo do tipo de erro. Se voc focalizar o
ponteiro sobre uma dessas linhas em ziguezague, o Microsoft IntelliSense exibir
uma descrio do erro, e essa descrio ser adicionada janela Error.
O Editor de Texto do Visual Basic adiciona automaticamente as assinaturas de
mtodos para uma interface quando voc adiciona essa interface a uma declarao
de tipo e depois pressiona ENTER. O exemplo a seguir mostra como o cdigo
(entre as linhas 2 e 33) foi inserido pelo editor pressionando ENTER aps a
instruo Implements IDisposable ter sido digitada.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-7
1 Public Class Class1
2 Implements IDisposable
3
4 #Region "IDisposable Support"
5 Private disposedValue As Boolean ' To detect redundant calls
6
7 ' IDisposable
8 Protected Overridable Sub Dispose(ByVal disposing As Boolean)
9 If Not Me.disposedValue Then
10 If disposing Then
11 ' TODO: dispose managed state (managed objects).
12 End If
13
14 ' TODO: free unmanaged resources (unmanaged objects)
and override Finalize() below.
15 ' TODO: set large fields to null.
16 End If
17 Me.disposedValue = True
18 End Sub
19
20 ' TODO: override Finalize() only if Dispose(ByVal disposing As
Boolean) above has code to free unmanaged resources.
21 'Protected Overrides Sub Finalize()
22 ' Do not change this code. Put cleanup code in Dispose(ByVal
disposing As Boolean) above.
23 ' Dispose(False)
24 ' MyBase.Finalize()
25 'End Sub
26
27 ' This code added by Visual Basic to correctly implement the
disposable pattern.
28 Public Sub Dispose() Implements IDisposable.Dispose
29 ' Do not change this code. Put cleanup code in
Dispose(ByVal disposing As Boolean) above.
30 Dispose(True)
31 GC.SuppressFinalize(Me)
32 End Sub
33 #End Region
34
35 End Class

Pergunta: como namespaces so usados no Visual Basic?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-8 Introduo
Recur
Pontos
O Visua
remane
A verso
sintaxe
ser usad
incluind
Web co

aoDesenvolvimentonaW
rsosdoVisua
s principais
al C# sempre este
scentes de verse
o atual do Visual
foi aprimorada s
do para desenvolv
do aplicativos We
m base em Ajax,
WebcomoMicrosoftV
alC#
eve voltado para o
es anteriores que
C# 4.0 apresenta
ignificativamente
ver qualquer tipo
eb, aplicativos W
aplicativos de di

VisualStudio2010
o .NET Framewo
estejam voltados
a vrios recursos
e desde a verso 1
o de aplicativo ou
Windows Forms, s
spositivo e aplica
ork, e no h recu
s para outras plat
recm-adicionad
1.0. O Visual C#
u servio .NET Fr
ervios WCF, apl
ativos Silverlight.

ursos
taformas.
dos, e a
4.0 pode
ramework,
licativos
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-9
Editor de Texto do Visual C# 4.0
O Editor de Texto do Visual C# oferece recursos de codificao com cores para
palavras-chave, variveis, constantes e instrues, como a maioria das outras novas
linguagens baseadas no .NET Framework. O esquema de cores padro exibe
palavras-chave em azul e cadeias em vermelho. O Visual C# tambm fornece um
modelo de compilao em segundo plano (semelhante ao Editor de Texto do
Visual Basic), no qual o cdigo compilado em segundo plano enquanto voc
digita, e detecta erros de sintaxe e tempo de compilao. Os erros detectados pela
compilao em segundo plano so sublinhados com uma linha em ziguezague,
com diferentes cores identificando o tipo de erro. Se voc focalizar o ponteiro
sobre uma dessas linhas em ziguezague, o IntelliSense exibir uma descrio do
erro. Os erros so adicionados janela Error quando o projeto recompilado.
Quando voc adiciona uma interface a uma declarao de tipo, possvel utilizar o
editor para adicionar as assinaturas de mtodo dessa interface, clicando com o
boto direito do mouse no nome da interface. possvel clicar na Interface
Implement e depois clicar novamente na interface Implement. No cdigo a seguir,
o cdigo entre as linhas 3 e 10 foi inserido pelo Editor de Texto do Visual C# aps
o acrscimo de IDisposable declarao de classe.
1 public class Class1 : IDisposable
2 {
3 #region IDisposable Members
4
5 public void Dispose()
6 {
7 throw new NotImplementedException();
8 }
9
10 #endregion
11 }

Durante a criao de novos tipos com o uso do Editor de Texto do Visual C#, o
namespace padro ser adicionado automaticamente medida que o cdigo for
digitado.
Existem vrias opes de refatorao de cdigo no Editor de Texto do Visual C#.
possvel chamar uma opo clicando com o boto direito do mouse em uma
palavra-chave ou texto selecionado e depois escolhendo a ao apropriada no
menu de contexto. As aes incluem:
Renomeao de variveis.
Promoo de uma varivel local a um parmetro em um mtodo.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-10 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Extrao de um mtodo, o que envolve copiar o texto existente para incluso
em um novo mtodo.
Encapsulamento de um campo, o que envolve criar uma propriedade para um
membro de campo existente.
Remoo e reordenao de parmetros.

Estrutura de cdigo e sintaxe do Visual C# 4.0
A sintaxe no Visual C# 4.0 se baseia em palavras-chave comuns no idioma ingls.
Blocos de cdigo aps uma instruo so delimitados com o uso de chaves {},
conforme indicado no cdigo a seguir.
if () {}
switch () {}
for () {}
foreach () {}
void {}
class {}
namespace {}

O cdigo no Visual C# faz distino entre maisculas e minsculas, o que torna
possvel a existncia de variveis que apenas so diferentes em termos do uso de
maisculas e minsculas no nome. No entanto, esse tipo de diferenciao no
recomendado, pois pode dificultar a leitura, a compreenso e a depurao do
cdigo.
O Visual C# totalmente orientado a objetos, o que significa que no possvel
criar variveis e constantes globais ou em nvel de aplicativo. No entanto, classes e
membros estticos possibilitam que seja criada a iluso de variveis e constantes
globais, conforme indicado no cdigo a seguir.
public static class Class1
{
public const int AppLevelConstant = 15;
public static string AppName = "Application Name";
}

A constante AppLevelConstant e a varivel AppName estaro disponveis no
projeto inteiro ao qual a classe pertence, da seguinte maneira.
int appLevel = Class1.AppLevelConstant;
string name = Class1.AppName;
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-11
No Visual C#, cada projeto tem um namespace padro, que automaticamente
aplicado a todos os tipos que voc cria. Se o namespace padro for
CompanyName.ApplicationName e voc tiver um namespace para um tipo
especfico (por exemplo, Services.Customers), o namespace real para esse tipo
ser Services.Customers, pois o namespace padro ignorado. Alm disso, tipos
em subpastas de projetos so automaticamente criados com um namespace
formado pelo namespace do projeto padro, acompanhado pelo nome da pasta.
Portanto, se um tipo estiver armazenado em uma subpasta denominada Test e o
namespace padro for CompanyName.ApplicationName, o namespace real para
esse tipo ser CompanyName.ApplicationName.Test. Voc pode substituir isso
especificando o namespace completo para o tipo no cdigo.
Instrues no Visual C# so finalizadas com um ponto-e-vrgula. Comentrios
podem se estender por uma ou vrias linhas, da seguinte maneira.
// Single line
/* Multi
line */

Por padro, a maior parte do cdigo em Visual C# inerentemente segura, mas
construes de linguagem no seguras (como ponteiros) so permitidas. Por
padro, operaes numricas no so verificadas, o que possibilita estouros
numricos positivos e negativos.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-12 Introduo
Cenr
Pontos
Ao traba
encontr
no .NET
desenvo
so gran
necess
program
quantid
em uma
soluo
Se adici
pelo me
essa a
mesmo
menos l
Pergun
aoDesenvolvimentonaW
riosparaam
s principais
alhar em um amb
rar projetos e so
T Framework, com
olvedor, necess
ndes as chances d
rio copiar uma p
mao diferente
dade de cdigo, vo
a linguagem de p
atual.
ionar um projeto
enos dois projeto
a realidade comum
sem dominar as
ler e compreende
ta: em que cenr
WebcomoMicrosoftV
bientescom
biente de program
lues em diferen
mo Visual Basic e
rio compreende
de que voc venh
arte da funcional
daquela que vo
oc copiar algum
rogramao de su
sua soluo atu
os, escritos em du
m para a maioria
duas linguagens
er o cdigo escrit
rios reais voc uti
VisualStudio2010
mlinguagens
mao com muito
ntes linguagens d
e Visual C#. Porta
er pelo menos ess
ha a trabalhar com
lidade escrita em
oc domina melh
mas linhas de cdi
ua escolha, ou ad
ual, voc ter um
uas linguagens de
dos desenvolved
, preciso que vo
to na outra lingua
iliza linguagens m
mistas
os desenvolvedor
de programao b
anto, na sua posi
sas duas linguage
m ambas. Talvez s
uma linguagem
hor. Dependend
igo e depois as co
dicionar um proj
a soluo formad
e programao dif
dores .NET. Porta
oc seja capaz de
agem.
mistas?

res, voc
baseadas
io de
ens, pois
seja
de
do da
onverter
jeto sua
da por
ferentes.
anto,
pelo
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Criaodea
Consi
Visua
Pontos
O Visua
possibil
isso tam
incio d
s vezes
novo pr
ou lder
deciso
o depar
exclusiv
conside
para o s
Tanto o
utilizad
para a e
conside
plicativosWebusandoo
deraesna
lC#paraum
s principais
al Studio 2010 ac
litando a escolha
mbm requer que
e um novo projet
s, voc tem a libe
rojeto. Porm, em
r de equipe, e voc
. Em projetos me
rtamento para o q
vo de uma dessas
eraes antes de d
seu projeto.
o Visual Basic qua
as por desenvolv
escolha de uma d
eraes.
MicrosoftVisualStudio
horadeesc
maplicativo
companha compi
de uma dessas li
e uma linguagem
to.
erdade de escolhe
m alguns casos, es
c precisa trabalh
enores, talvez voc
qual voc trabalha
s linguagens. Se is
determinar qual
anto o Visual C#
vedores em todas
elas, possvel to
o2010elinguagensba
colherentreo
iladores e editore
inguagens de pro
de programao
er a linguagem de
ssa deciso j foi
har junto com a eq
c possa fazer a es
a ainda no tenh
sso acontecer, ser
a melhor lingua
so linguagens d
as partes do mun
omar uma deciso

aseadasnoMicrosoft.NE
oVisualBasi
es Visual Basic e V
ogramao. No en
seja escolhida lo
e programao pa
tomada por um a
quipe e seguir ess
scolha caso a emp
a optado pelo us
r necessrio faze
agem de program
de programao p
ndo. Como no h
o com base nas s
T 2-13
iceo

Visual C#,
ntanto,
go no
ara um
arquiteto
sa
presa ou
o
er vrias
mao
populares
h regras
seguintes
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-14 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Consideraes para a escolha de uma linguagem de programao
Ao escolher uma linguagem de programao, necessrio avaliar as seguintes
consideraes:
Nmero de linhas de cdigo a serem escritas
Reutilizao de cdigo .NET Framework existente
Transferncia de cdigo herdado, incluindo ASP clssico
Uso de construes no seguras, como ponteiros, estouro numrico positivo e
estouro numrico negativo
Formatao do Editor de Texto
Uso de namespaces padro
Distino de maisculas e minsculas
Parmetros opcionais
Finalizao de uma instruo

Outro fator que pode influenciar a sua escolha a sua preferncia de trabalhar com
a sintaxe detalhada no Visual Basic ou a composio mais concisa do Visual C# e o
seu uso de chaves. Muitas vezes, esse o primeiro fator considerado pelos novos
desenvolvedores .NET, especialmente quando seu perfil de formao tcnica no
inclui o Microsoft Visual C++ ou o Visual Basic clssico.
Em ltima anlise, a escolha geralmente uma questo de preferncia.
Pergunta: quais so os possveis problemas que talvez voc precise enfrentar em
um ambiente com linguagens mistas?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Criaodea
Lio2
Visoge
O Visua
tipos de
servios
desenvo
verses
O IDE d
um conj
linguage
Objetiv
Depois
Des
Iden
Des
Iden
plicativosWebusandoo
eraldoVi
al Studio 2010 u
e aplicativos base
s Web. Ele consis
olvimento de ap
s 2.0, 3.0, 3.5 e 4
do Visual Studio 2
junto de ferramen
ens de programa
vos da lio
de concluir esta l
screver as vantage
ntificar os model
screver os recurso
ntificar os elemen
MicrosoftVisualStudio
sualStud
uma ferramenta a
eados no .NET Fr
ste em um IDE, n
licativos e servi
4.
2010 formado po
ntas que pode ser u
o para os quais o
lio, voc ser ca
ens de utilizar o V
los de projeto dis
os do IDE.
ntos de uma pgi
o2010elinguagensba
dio2010
abrangente para a
amework, inclusi
na integrao do .
os com base no
or uma interface d
utilizado com tod
o Visual Studio 20
apaz de:
Visual Studio 20
sponveis.
ina Inicial do Visu
aseadasnoMicrosoft.NE
a criao de todo
ive de aplicativos
NET Framework
.NET Framewor
do usurio comum
dos os tipos de pro
010 oferece suport
10.
ual Studio 2010.
T 2-15

os os
s e
k e no
rk
m e por
ojetos e
te.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-16 Introduo
Vanta
Pontos
O Visua
eficiente
fornecer
Visual S
configu
O Visua
program
linguage
desenvo
produ
entre lin

aoDesenvolvimentonaW
agensdeutil
s principais
al Studio 2010 sim
es e confiveis, al
r um conhecido a
Studio 2010 pela
raes do seu am
al Studio 2010 fo
mao e a capacid
em de programa
olvimento. O pree
o de um cdigo
nguagens contrib
WebcomoMicrosoftV
lizaroVisual
mplifica o desenvol
lm de aumentar
ambiente de dese
a primeira vez,
mbiente de desenv
rnece componen
dade de reutilizar
o. Isso ajuda a
enchimento de c
preciso. O eficien
bui para tornar os

VisualStudio2010
lStudio2010
lvimento de solu
a produtividade
envolvimento com
solicitado que v
volvimento.
ntes pr-desenvolv
r componentes es
reduzir significat
digo com base n
nte e completo su
s aplicativos mais
0
es da Web corpo
do desenvolvedo
mpartilhado. Ao i
voc especifique
vidos, assistentes
scritos em qualqu
tivamente o temp
no IntelliSense ag
uporte para depu
s robustos.

orativas
or ao
iniciar o
as
s de
uer
po de
giliza a
urao
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-17
IDE nico
O Visual Studio 2010 possui um nico IDE que proporciona uma aparncia
consistente, independentemente da linguagem de programao utilizada ou do
tipo de aplicativo desenvolvido. O Visual Studio 2010 oferece suporte para o
desenvolvimento em diversas linguagens de programao baseadas no .NET
Framework. Esse suporte faz com que voc possa trabalhar na sua linguagem de
programao preferencial, pois no mais necessrio aprender uma nova linguagem
de programao para cada novo projeto. Voc tambm pode usar o IDE na fase de
design e teste do ciclo de vida til do desenvolvimento. Por exemplo, o Visual
Studio 2010 fornece diagramas de classe e testes de unidades.
Vrias linguagens de programao
O Visual Studio 2010 oferece suporte nativo para as seguintes linguagens de
programao:
Visual Basic
Visual C#
Visual C++
Visual F#

Vrios tipos de projetos
O Visual Studio 2010 oferece suporte para o desenvolvimento de vrios tipos de
projetos, incluindo aplicativos Web ASP.NET e servios Web XML. Esse suporte
para vrios tipos de projetos permite o trabalho simultneo em vrios projetos.
Voc no precisa mudar de ambiente de desenvolvimento ou aprender novas
linguagens ou interfaces de ferramentas.
Navegador integrado
O Visual Studio 2010 contm um navegador interno que se baseia no Windows
Internet Explorer. Esse navegador integrado ao IDE e pode ser acessado em
vrias janelas e menus. A acessibilidade do navegador torna possvel a visualizao
de um site durante o ciclo de desenvolvimento, dispensando a necessidade de
utilizar outro programa.
ASP.NET Development Server
O ASP.NET Development Server foi desenvolvido para executar pginas da Web
ASP.NET no computador local. Ele fornece uma maneira eficiente de testar pginas
localmente antes de public-las ou implant-las em um servidor de teste, preparo
ou produo.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-18 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Suporte para depurao
O Visual Studio 2010 oferece suporte para depurao desde o cdigo inicial at o
lanamento do aplicativo. Esse suporte inclui pontos de interrupo, expresses de
interrupo, expresses de monitoramento e a capacidade seguir a sequncia do
cdigo, percorrendo uma instruo ou um procedimento de cada vez.

Observao:paraobtermaisinformaessobredepurao,consulteoMdulo7,
SoluodeproblemasemaplicativosWebMicrosoftASP.NET.
Suporte para implantao
Terminado o desenvolvimento de um site, voc pode implant-lo em um servidor
Web. Esse servidor Web pode ser um servidor de teste ou de produo. O Visual
Studio 2010 oferece as seguintes opes para a implantao de um site:
Copiar o site. A ferramenta Copy Web Site copia o site atual em um servidor de
destino.
Publish Web Site. O utilitrio Publish Web Site compila um site em um conjunto
de arquivos executveis que podem ser copiados no servidor de destino.

A implantao pode acontecer no sistema de arquivos local, e um site baseado no
IIS (Servios de Informaes da Internet) ou em um servidor FTP. Os dois ltimos
podem ser locais e remotos.

Observao:necessriousaroIISparahospedaroaplicativoWebimplantado.OIIS
umservidorWebdaMicrosoftfornecidocomasimplementaesdeclienteedeservidor
dosistemaoperacionalWindows.OprotocoloFTPumprotocoloderedeusadopara
efetuarointercmbioeamanipulaodearquivosemumarede,oquegeralmente
indicaasuaintenodeabrirositededestinonoservidorWebdedesenvolvimento.
Pergunta: qual o servidor Web padro para a criao de aplicativos Web no
Visual Studio 2010?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Criaodea
Mode
Pontos
O Visua
vrios ti
necess
projeto
Ao usar
modelo
tipo de
funes
Solu
Ao criar
amplo,
maneira
Solue
necess
esforos
plicativosWebusandoo
elosdeproje
s principais
al Studio 2010 fo
ipos de projetos c
rios e so uma ga
selecionado.
r esses modelos, n
escolhido cria au
projeto especfico
s nos seus projeto
es e projetos
r um projeto no V
chamado soluo
a que um contin
es permitem que v
rio para desenvo
s para os detalhes
MicrosoftVisualStudio
etosdisponv
rnece modelos q
comuns. Esses m
arantia de que o I
no necessrio
utomaticamente a
o e, portanto, voc
os.
Visual Studio 201
o. Essa soluo po
ner de projeto pod
voc se concentr
olver e implantar
s de gerenciamen
o2010elinguagensba
veis
ue oferecem supo
modelos contm to
IDE possui a con
configurar a infra
as pastas e os arq
c pode se concen
10, voc tambm
ode conter vrios
de conter vrias p
e no projeto ou n
seu aplicativo. N
nto dos objetos e
aseadasnoMicrosoft.NE
orte para a cria
odos os arquivos
nfigurao correta
aestrutura, ou sej
quivos necessrio
ntrar na incluso
cria um contine
projetos, da mes
pginas.
no conjunto de pr
o preciso direc
arquivos que as
T 2-19

o de
s
a para o
a, o
os para o
o de
er mais
sma
rojetos
cionar
definem.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-20 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Uma soluo permite que voc:
Trabalhe em vrios projetos na mesma instncia do IDE.
Trabalhe em itens, configuraes e opes aplicveis a um grupo de projetos.
Gerencie arquivos diversificados que esto fora do contexto de uma soluo
ou projeto.

possvel usar o Solution Explorer (que fornece uma exibio grfica da soluo)
para organizar e gerenciar todos os projetos e arquivos de um aplicativo.
Modelos de projetos
O Visual Studio 2010 inclui vrios modelos de projetos classificados por
linguagem e tipo. Para selecionar o modelo correto, primeiro necessrio
especificar a linguagem na qual voc deseja trabalhar.
A tabela a seguir lista alguns dos modelos de projetos Visual Basic e Visual C#
disponveis.
Modelodeprojeto Descrio
Bibliotecadeclasses Criabibliotecasecomponentesreutilizveisquepodemser
compartilhadoscomoutrosprojetos.
AplicativoWebASP.NET CriaumaplicativoWebASP.NETcomosarquivosde
servidorbsicosnecessriosparaesseaplicativo.
SiteASP.NET CriaumsiteASP.NETcomosarquivosdeservidorbsicos
necessriosparaessesite.
Aplicativodeservio
WCF
CriaumservioWCFquepodeserconsumidoporoutros
serviosWCFouaplicativosemumarede.
ServiosWCFsocomponentesdisponveisnaInternete
projetadosparainteraosomentecomoutrosaplicativos
Web.
Controledeservidor
ASP.NET
CriacontrolesdeservidorASP.NETpersonalizados.Esse
modeloadicionaositensdeprojetonecessriosparaa
criaodeumcontrole.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-21
(continuao)
Modelodeprojeto Descrio
Controledeservidor
ASP.NETAjax
CriacontrolesdeservidorASP.NETAjaxpersonalizados.
Essemodeloadicionaositensdeprojetonecessriosparaa
criaodeumcontrole.
Projetovazio Criaoseuprpriotipodeprojeto.Essemodelocriaa
estruturadearquivosnecessriaparaoarmazenamentodas
informaesdeumaplicativo.necessrioadicionar
referncias,arquivosoucomponentesmanualmente.
SitedeEntidadesde
DadosDinmicos
ASP.NET
CriaumsiteASP.NETcomosarquivosdeservidorbsicos
necessriosparaessesite,almdosuporteparaDados
DinmicoscombaseemumModelodeDadosdeEntidade.
SiteLINQToSQLde
DadosDinmicos
ASP.NET
CriaumsiteASP.NETcomosarquivosdeservidorbsicos
necessriosparaessesite,almdosuporteparaDados
DinmicoscombaseemumModelodeDadosLINQToSQL.

Pergunta: quais so alguns dos modelos de projetos adicionais que esto disponveis
no Visual Studio 2010?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-22 Introduo
Recur
Pontos
O IDE d
e servio
das jane
janelas
selecion
para tra
A janel
A janela
cdigo p
formato
edio a
gerencia

aoDesenvolvimentonaW
rsosdoambi
s principais
do Visual Studio 2
os. Muitos dos re
elas, menus e bar
do IDE, depende
nar as janelas que
ansformar janelas
la Editor
a Editor a janela
para edio e forn
o WYSIWYG (o fo
ao estilo arrastar-
ar seu design lg
WebcomoMicrosoftV
ientededes
2010 contm vri
ecursos do Visual
rras de ferrament
endo da sua prefe
e voc deseja exib
s estticas em sus
a de interface prin
nece uma interfac
ormato exibido
-e-soltar para criar
ico modificando

VisualStudio2010
envolviment
ias janelas que for
l Studio 2010 est
as do IDE. pos
erncia pessoal. U
bir. possvel clic
spensas.
ncipal do Visual S
ce grfica para a i
o resultado final
r o design do seu
o cdigo de cont
tointegrado
rnecem vrias ferr
to disponveis em
svel mover ou oc
Use o menu View
car no boto Auto
Studio 2010. Ela
insero de contr
l). Voc pode usa
u aplicativo e, em
troles da Web pa
o

ramentas
m vrias
cultar
w para
o Hide
exibe o
roles no
ar a
seguida,
dro.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-23
As opes de janela do editor so os modos Design, Split e Source:
No modo Design, possvel usar o editor para mover controles e elementos
grficos pela janela usando uma operao arrastar-e-soltar. Quando um
controle adicionado a uma pgina da Web no modo Design, o Visual Studio
2010 acrescenta o cdigo de suporte e as propriedades padro ao Web Form.
Em seguida, voc pode alternar para o modo Source e editar esse cdigo.
No modo Source, o Visual Studio 2010 reala o cdigo, de forma que os
diferentes elementos (como nomes de variveis e palavras-chave) possam ser
instantaneamente identificados. O recurso IntelliSense fornece sugestes para
preenchimento automtico e permite a construo de funes por meio da
simples seleo de opes na lista de sintaxes disponveis.
No modo Split, o editor dividido em duas janelas: uma janela para a rea de
design da pgina da Web, e a outra para o cdigo-fonte dessa pgina.

Quando a janela Editor utilizada no modo Source, duas listas suspensas ficam
visveis na parte superior da janela: a lista Class Name, esquerda, e a lista
Method Name, direita. A lista Class Name mostra todos os controles no
formulrio associado. Se voc clicar em um nome de controle nessa lista, a lista
Method Name mostrar todos os eventos para esse controle. Eventos so aes
que o controle pode executar e o seu aplicativo pode interpretar. Usando as listas
Class Name e Method Name ao mesmo tempo, possvel localizar e editar
rapidamente o cdigo no aplicativo.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-24 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Painel Solution Explorer
Clicar na guia Solution Explorer exibe o painel Solution Explorer, que lista uma
hierarquia de arquivos de projeto. Nesse painel, possvel:
Usar uma operao de arrastar-e-soltar para reorganizar itens.
Selecionar um item no painel Solution Explorer para exibir suas propriedades
na janela Properties.

Esse recurso permite alterar propriedades no nvel do projeto ou da pgina.
Para exibir as opes disponveis (que incluem adicionar, desenvolver e editar
pginas), clique com o boto direito do mouse no arquivo, projeto ou soluo. A
lista a seguir mostra alguns dos tipos de arquivo exibidos no painel Solution
Explorer:
Referncias de projeto que listam as classes usadas pelos controles de pgina e
da Web
Web Forms no projeto
Pginas code-behind que contm a lgica compatvel com os Web Forms, alm
de pastas relacionadas ao projeto e subitens


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-25
Painel Properties
O Visual Studio 2010 permite que voc ajuste as propriedades de documentos,
classes e controles usando uma nica janela Properties. Quando um item criado
ou selecionado, o painel Properties exibe automaticamente as propriedades
relacionadas.


Janela Task List
possvel usar a janela Task List para acompanhar o status de tarefas medida
que voc desenvolve seu aplicativo. A lista Categories exibe tarefas do usurio e
comentrios:
Tarefas do usurio. possvel adicionar tarefas e definir sua descrio,
prioridade e concluso. Para adicionar uma tarefa lista Categories, clique em
User Tasks e depois em Create User Task.
Comentrios. possvel adicionar comentrios TODO ao seu cdigo para tarefas
que voc precisa concluir. Para acessar essa seo de cdigo, na lista Categories,
clique em Comments e depois clique duas vezes no comentrio TODO.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-26 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Painel Output
O painel Output exibe mensagens de status para vrios recursos no IDE. Voc
pode programar seus prprios aplicativos para escrever mensagens de diagnstico
na janela em tempo de execuo.


Janela Manage Styles
A janela Manage Styles lista todas as regras de estilo CSS definidas na CSS externa
da pgina. Ela tambm lista regras de estilo definidas na pgina, mas no como
estilos embutidos. Voc pode usar essa janela para mover estilos de uma folha de
estilos externa para o elemento de estilo na pgina e para ir do elemento de estilo
na pgina at uma folha de estilos externa. Tambm pode us-la para mover a
localizao de um estilo no conjunto de regras de estilo CSS e criar um novo estilo
CSS, abrindo a caixa de dilogo Styles e anexando uma folha de estilos existente
pgina atual.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-27
Janela Apply Styles
A janela Apply Styles lista todas as regras de estilo CSS definidas para uma pgina.
Isso inclui regras de estilo definidas em folhas de estilo externas, tanto como estilos
embutidos quanto como estilos definidos na pgina. Regras de estilo com base em
classe e com base em ID aparecem sob o nome do arquivo .css externo que contm
o estilo. Se a regra de estilo estiver definida na pgina, ela aparecer sob Current
Page. Regras de estilo com base em elemento so organizadas da mesma maneira,
mas aparecem sob um ttulo separado, denominado Contextual Selectors.


Painel Toolbox
O painel Toolbox permite usar controles ao estilo de arrastar-e-soltar no aplicativo.
As ferramentas so agrupadas por categoria no painel Toolbox e apenas sero
exibidas se estiverem disponveis para uso. As categorias comuns de aplicativos
Web incluem:
Standard. Contm controles padro que voc pode usar para desenvolver a
interface de usurio de uma pgina da Web.
Data. Contm objetos que permitem ao aplicativo estabelecer uma conexo
com os dados no Microsoft SQL Server e em outros bancos de dados e
acessar esses dados.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-28 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Validation. Contm vrios controles de validao diferentes que so utilizados
para validar a entrada do usurio em controles de servidor Web.
Navigation. Contm controles de navegao para um site.
Login. Contm controles de logon para um site.
WebParts. Contm controles de Web Parts para um site.
Ajax Extensions. Contm um conjunto de controles de servidor para a
implementao da funcionalidade Ajax.
Dynamic Data. Contm controles para uso com um aplicativo Web de Dados
Dinmicos.
HTML. Contm um conjunto de controles de linguagem HTML que voc pode
adicionar sua pgina da Web. Esses controles podem ser executados no lado
do cliente ou no servidor.
Reporting. Contm um conjunto de controles de servidor usados para criar
relatrios do SQL Server.

Pergunta: quais so os quatro modos de exibio disponveis para editores e


designers?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Criaodea
Pgin
Pontos
A Pgin
acessar
confern
padro,
tambm
Na caix
inicializ
ocasio
Exi
Abr
Mo
Mo
Mo
Mo
plicativosWebusandoo
naInicialdoV
s principais
na Inicial do Visua
ou criar projetos
ncias de produto
a Pgina Inicial
m pode acess-la c
a de dilogo Opt
zao do Visual St
da inicializao:
ibir a home page
rir a ltima solu
strar a caixa de d
strar a caixa de d
strar um ambien
strar a Pgina Ini
MicrosoftVisualStudio
VisualStudio
al Studio 2010 fo
s, receber informa
os ou ler os artigo
exibida durante
clicando em Start
tions, possvel a
tudio 2010 de fo
definida no seu n
o carregada.
dilogo Open Pro
dilogo New Proj
te vazio.
icial.
o2010elinguagensba
o2010
ornece uma mane
aes sobre futur
os de desenvolvim
e a abertura do V
t Page, no menu
alterar as configu
rma a habilitar um
navegador.
oject.
ect.
aseadasnoMicrosoft.NE
eira simplificada d
os lanamentos e
mento mais recen
isual Studio 2010
View.
uraes padro de
ma das aes a se
T 2-29

de
e
ntes. Por
0. Voc
e
eguir na
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-30 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

Alm das opes mencionadas acima, a Pgina Inicial tambm possui duas opes
que afetam como e quando ela aberta e fechada. Voc pode escolher se deseja ou
no fechar a pgina aps o carregamento do projeto (Close page after project load)
ou se deseja mostrar a pgina na inicializao (Show page on startup), marcando
ou desmarcando as caixas de seleo correspondentes que esto localizadas no canto
inferior esquerdo da Pgina Inicial. Essas caixas de seleo esto marcadas por padro.
Painel Recent Projects
O painel Recent Projects na Pgina Inicial exibe uma lista de projetos recentemente
atualizados, nos quais voc pode clicar com o boto direito do mouse para abrir ou
remover dessa lista. No menu de contexto, tambm possvel abrir a pasta na qual
um projeto est localizado.
Guia Get Started
A guia Get Started da rea Content exibe uma lista de tpicos de Ajuda, sites, artigos
tcnicos e outros recursos que podem ajudar voc a aumentar a produtividade e
conhecer os recursos do produto.
Guia Guidance and Resources
A guia Guidance and Resources da rea Content na Pgina Inicial fornece
informaes gerais sobre codificao e desenvolvimento, seguindo o mesmo
formato da guia Get Started. Ela inclui as seguintes categorias: Development
Process, MSDN Resources e Additional Tools.
Guia Latest News
A guia Latest News exibe uma lista de artigos do RSS feed que est especificado na
parte superior do painel. Por padro, utilizado o RSS feed de Notcias sobre o
ASP.NET, mas voc pode especificar um RSS feed personalizado.
Personalizao da Pgina Inicial
possvel personalizar o canal de notcias utilizado pela Pgina Inicial, bem como
remover entradas do painel Recent Projects. Alm disso, voc pode fazer com que
a Pgina Inicial deixe de aparecer sempre que o Visual Studio for iniciado.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-31
Alterando o item exibido na inicializao do ambiente de
desenvolvimento
1. No menu Tools, clique em Options.
2. No canto inferior esquerdo da caixa de dilogo Options, verifique se a opo
Show all settings est selecionada.
3. Expanda Environment e clique em Startup.
4. Na lista suspensa At startup, escolha uma das opes e depois clique em OK.

Suas alteraes sero aplicadas da prxima vez em que o Visual Studio for iniciado.
Pergunta: que rea e guia da Pgina Inicial exibe uma lista de tpicos de Ajuda,
sites, artigos tcnicos e outros recursos?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-32 Introduo
Lio3
Criaod
Voc po
prprio
2010 cr
voc ap
Objetiv
Depois
Des
Des
Des
Esc
Iden
Exp
Imp
aoDesenvolvimentonaW
deumap
ode usar o Visual
aplicativo Web A
ria vrios arquivo
render a criar, d
vos da lio
de concluir esta l
screver como des
screver arquivos d
screver arquivos d
colher entre um p
ntificar arquivos
plicar como criar,
plantar um aplica
WebcomoMicrosoftV
plicativoW
Studio 2010 par
ASP.NET. Durant
os que oferecem s
desenvolver e exib
lio, voc ser ca
senvolver pginas
de projeto e pastas
de projeto e past
projeto de site e u
de aplicativos W
, desenvolver e ex
ativo Web.
VisualStudio2010
Websimp
ra desenvolver do
te o trabalho com
suporte para o seu
bir um aplicativo
apaz de:
s de aplicativos W
s de aplicativos W
as de sites no Vis
um projeto de apl
Web.
xibir um aplicativ
ples
o comeo ao fim o
m projetos, o Visu
u ambiente. Nest
Web ASP.NET s
Web ASP.NET.
eb no Visual Stud
sual Studio 2010.
licativo Web.
vo Web ASP.NET

o seu
ual Studio
ta lio,
imples.
dio 2010.
.
T.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Criaodea
Proce
Pontos
O Visua
ao fim o
ASP.NE
1. Cria
voc
apli
forn
voc
tota
esp
de r
O V
visu
faci

plicativosWebusandoo
essodedesen
s principais
al Studio 2010 co
o seu prprio site
ET usando o Visu
ar uma especifica
c utiliza para cria
icativo antes de e
nea ferramentas
c poder projetar
al do conjunto de
ecificao de desi
reescrever um c
Visual Studio disp
ualizar a estrutura
ilmente e refatora
MicrosoftVisualStudio
nvolvimento
ontm tudo o que
e ou aplicativo W
al Studio 2010, a
ao de design. A
ar um aplicativo W
escrever qualquer
para auxiliar no
r seu aplicativo co
e recursos e dos r
ign, voc tambm
digo imprprio o
ponibiliza o Class
a de classes e sua
ar classes atuais u

o2010elinguagensba
odeaplicativ
e voc precisa par
eb ASP.NET. Para
as seguintes etapa
A especificao de
Web. Reserve um
r cdigo. Embora
rpido desenvolv
om mais eficcia s
requisitos dos usu
m poupar tempo
ou redundante.
s Designer, com o
as relaes. pos
utilizando esse am
aseadasnoMicrosoft.NE
vosWeb
ra desenvolver do
a criar um aplicat
as devem ser exec
e design o esque
m tempo para proj
a o Visual Studio
vimento de uma
se tiver uma comp
urios. Usando u
ao minimizar o p
o qual possvel
ssvel criar novas
mbiente de design
T 2-33

o comeo
tivo Web
cutadas:
ema que
jetar seu
2010
soluo,
preenso
uma
otencial
classes
n visual.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-34 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
2. Criar um novo projeto. Quando um novo modelo de projeto selecionado, o
Visual Studio 2010 cria automaticamente os arquivos e o cdigo padro que
so necessrios para oferecer suporte ao projeto. Como parte desse processo
inicial de criao do projeto, necessrio transferir as principais tarefas de
codificao na sua especificao de design para a lista de tarefas do Visual
Studio 2010. Essa transferncia permite acompanhar o desenvolvimento de
acordo com a sua especificao.
3. Criar a interface e escrever o cdigo. Para criar a interface do seu aplicativo
Web, primeiro necessrio inserir controles e objetos nas pginas da Web
usando a janela Editor no modo Design. medida que objetos so adicionados a
um formulrio, possvel definir suas propriedades usando a tabela na janela
Properties ou o cdigo na janela Editor.

Observao:paraobtermaisinformaessobrecomoadicionarcontrolesaumWeb
FormASP.NET,consulteoMdulo3,CriaodeumWebFormMicrosoftASP.NET.
Depois de definir as propriedades iniciais do Web Form ASP.NET e seus
objetos, voc pode escrever os procedimentos de eventos que sero
executados quando diferentes aes forem executadas em um controle ou
objeto. Talvez tambm seja necessrio escrever cdigo para adicionar a lgica
de negcios e acessar dados.

Observao:paraobtermaisinformaessobrecomoescrevercdigoemWebForms
ASP.NET,consulteoMdulo4,InclusodefuncionalidadeemumWebFormMicrosoft
ASP.NET.
4. Desenvolver um projeto. Quando voc desenvolve um projeto, o Visual Studio
compila todo o cdigo das pginas da Web e de outros arquivos de classes em
uma DLL (biblioteca de vnculo dinmico), chamada assembly. O Visual
Studio 2010 possui duas opes de compilao: depurao e lanamento.
Quando voc desenvolve um projeto pela primeira vez, so compiladas
verses de depurao. Quando voc est pronto para lanar o projeto, criada
uma compilao de lanamento desse projeto.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-35
possvel compilar, recompilar ou limpar um projeto individual ou at mesmo
a soluo inteira.
Compilar. O Visual Studio compila apenas os arquivos de projeto e os
componentes que foram alterados desde a ltima compilao. Em geral,
voc compila apenas o projeto ou a soluo.
Recompilar. O Visual Studio limpa primeiro o projeto ou a soluo e
depois compila todos os arquivos de projeto e os componentes.
necessrio efetuar uma recompilao quando as verses do projeto esto
direcionadas a componentes fora de sincronia.
Limpar. O Visual Studio exclui qualquer arquivo intermedirio e de sada.
Apenas os arquivos de projeto e de componente so preservados e, a partir
deles, possvel compilar novas instncias de arquivos intermedirios e de
sada. Isso significa que, na verdade, voc nunca precisar limpar seu
projeto ou soluo.
5. Testar e depurar. O procedimento de teste e depurao no uma etapa que
acontece s uma vez, mas sim algo que feito interativamente no decorrer de
todo o processo de desenvolvimento. Sempre que uma alterao de grande
porte efetuada no cdigo do aplicativo, voc precisa executar uma compilao de
depurao desse aplicativo para garantir que esse cdigo esteja funcionando
conforme esperado. O Visual Studio 2010 oferece diversas ferramentas de
teste que voc pode usar para localizar e corrigir erros no seu aplicativo.

Observao:paraobtermaisinformaessobredepurao,consulteoMdulo7,
SoluodeproblemasemaplicativosWebMicrosoftASP.NET.
6. Implantar. Quando o projeto estiver totalmente depurado e uma compilao
de lanamento tiver sido criada, voc ir implantar os arquivos necessrios em
um servidor Web.

Observao:paraobtermaisinformaessobrecomoimplantarumaplicativoWeb
ASP.NETWeb,consulteoMdulo14,Configuraoeimplantaodeumaplicativo
WebMicrosoftASP.NET.

Pergunta: quais so as trs fases principais do processo de desenvolvimento de
aplicativos Web?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-36 Introduo
Arqui
Pontos
No Visu
projeto
Por defi
controle
Arquiv
Quando
Web AS
de solu
um ou m
globais.
tabela a

aoDesenvolvimentonaW
vosdeproje
s principais
ual Studio 2010,
de aplicativo We
inir recursos expl
e mais rgido em
vos de modelo d
o voc cria um ap
SP.NET, o Visual
o .sln. Esse arq
mais projetos e ta
A pasta Solution
a seguir.
WebcomoMicrosoftV
etoepastasd
possvel criar u
eb ASP.NET.
licitamente, o pro
comparao ao p
de projeto de a
plicativo Web usa
Studio 2010 cria
quivo um mapa
ambm serve com
n tambm contm

VisualStudio2010
deaplicativo
m aplicativo Web
ojeto de aplicativo
projeto de Site.
aplicativos Web
ando o modelo de
a uma pasta Solut
de todos os vrio
mo armazenamen
m as subpastas e o
osWeb
b usando o mode
o Web oferece um
b
e projeto de aplic
tion que contm o
os arquivos que v
nto para informa
os arquivos listad

elo de
m
cativo
o arquivo
vinculam
es
dos na
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-37
Tipo Nome Descrio
Pastas App_Data Umapastaquecontmarquivosde
dadosdeaplicativo,incluindoarquivos
MDF,XMLeoutrosarquivosde
armazenamentodedados.
Bin Umapastaquecontmoarquivode
assemblydoprojeto.
Obj Umapastaquecontmsubpastaspara
assuasconfirmaesdecompilao.
MyProject UmapastaespecficadoVisualBasic
queincluivriosarquivosXMLede
cdigoautomaticamentegeradospara
oferecersuporteinfraestruturado
projeto(configuraeserecursos),
entreelesApplication.Designer.vb,
Application.myapp,
Resources.Designer.vb,Resources.resx,
Settings.Designer.vbeSettings.settings.
Almdisso,apastacontmoarquivo
AssemblyInfo.vb,queinclui
informaesgeraissobreoassembly
(comosuaversoeseusatributos).
Properties UmapastaespecficadoVisualC#que
incluioarquivoAssemblyInfo.cs.Esse
arquivocontminformaesgerais
sobreoassembly,incluindosuaverso
eseusatributos.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-38 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
(continuao)
Tipo Nome Descrio
Arquivos Default.aspx OWebFormASP.NETpadro.
Default.aspx.csouDefault.aspx.vb Oarquivocode-behinddoWebForm.
Default.aspx.designer.csou
Default.aspx.designer.vb
Aclasseparcialemtempodedesign
paraoWebForm.
Web.config OarquivodeconfiguraodaWebque
contmasdefiniesdeconfigurao
paraoaplicativoWeb.
WebApplicationName.csprojou
WebApplicationName.vbproj
OdocumentoXMLquecontm
refernciasatodosositensdeprojeto
(comoformulrioseclasses),almde
refernciasdeprojetoeopesde
compilao.
WebApplicationName.csproj.user
ou
WebApplicationName.vbproj.user
Asconfiguraesdeprojetoparao
usurio.


Observao: aspastasBineObjficamocultasporpadro.NoSolutionExplorer,useo
botoShowAllFilesparaexibiraspastas.
Quando um projeto de aplicativo Web ASP.NET compilado, o Visual Studio 2010
cria um assembly na pasta Bin desse projeto. Um assembly um arquivo .dll que
criado a partir de todas as pginas code-behind que compem um aplicativo Web.
Tambm criado um arquivo de soluo, .sln. Esse arquivo tem o mesmo nome do
projeto, seguido pela extenso .sln, e contm informaes sobre o projeto e sobre
arquivos diversificados que no so especficos do projeto. Inicialmente, o arquivo
de soluo contm apenas informaes sobre o projeto do aplicativo Web. Para
abrir um projeto de aplicativo Web ASP.NET previamente criado, abra o arquivo de
soluo no Visual Studio 2010.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-39
Contineres: Solues e projetos
Solues e projetos contm itens que representam as referncias, as conexes de
dados, as pastas e os arquivos que so necessrios para voc criar seu aplicativo.
Uma soluo pode conter vrios projetos e, em geral, um projeto contm vrios
itens. Esses contineres permitem que voc utilize o IDE das seguintes maneiras:
Gerenciar configuraes para a soluo inteira ou para projetos individuais.
Usar o Solution Explorer para administrar os detalhes de gerenciamento de
arquivos, enquanto voc se concentra no desenvolvimento dos projetos.
Adicionar itens soluo ou a vrios projetos da soluo, sem fazer referncia
a um item em cada projeto individual.
Trabalhar em arquivos diversificados que so independentes de solues ou
projetos.

Itens: arquivos, referncias e conexes de dados
Itens podem ser arquivos ou outras partes do seu projeto, como referncias,
conexes de dados ou pastas. No Solution Explorer, possvel organiz-los das
seguintes maneiras:
Como itens de projeto, ou seja, os itens que compem seu projeto. Esses tipos
de itens incluem formulrios, arquivos de origem e classes dentro de um
projeto no Solution Explorer. A organizao e exibio de itens de projeto
dependem do modelo de projeto selecionado e das modificaes que voc
efetua nesse modelo.
Como itens de soluo, para arquivos de so aplicveis soluo como um
todo. Esses tipos de itens so exibidos na pasta Solution Items do Solution
Explorer.
Como arquivos diversificados que no esto associados a um projeto ou uma
soluo. Esses arquivos so exibidos na pasta Miscellaneous Files.

Pergunta: que contineres so fornecidos pelo Visual Studio?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-40 Introduo
Arqui
Pontos
No Visu
ASP.NE
Em gera
adiciona
de proje
Arquiv
Quando
Studio 2
Solution
nessa p
2010\P
das info
aplicativ

aoDesenvolvimentonaW
vosdeproje
s principais
ual Studio 2010,
ET.
al, o modelo de p
al no gerenciame
eto de aplicativo W
vos de modelo d
o voc cria um sit
2010 cria uma pa
n do projeto de a
asta. Em vez diss
Projects da pasta D
ormaes contida
vo Web. Isso ne
WebcomoMicrosoftV
etoepastasd
possvel criar u
projeto de site ofe
ento de aplicativo
Web capaz de o
de projeto de s
te usando o mod
asta Solution para
aplicativo Web, o
so, ele armazena
Documents do us
as no arquivo de p
ecessrio para ide

VisualStudio2010
desites
m site usando o m
erece mais recurso
os Web em compa
oferecer.
ites
elo de projeto de
a o projeto. Porm
arquivo de solu
ado por padro n
surio. Esse arqu
projeto, caso voc
entificar o conte
modelo de projet
os e flexibilidade
arao ao que um
e site ASP.NET, o
m, ao contrrio d
o .sln no est c
na subpasta Visua
uivo armazena alg
crie um projeto
do do projeto de

to de site
e
m modelo
Visual
da pasta
contido
al Studio
gumas
o de
e site.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-41
A pasta Solution do projeto de site contm as subpastas e os arquivos listados na
tabela a seguir.
Nomedapasta/arquivo Descrio
Account Essapastacontmvriosarquivos,todos
relacionadosautenticaodousurio.
App_Data Essapastausadaparaarmazenararquivosde
dados,comoarquivosdebancodedadosdo
SQLServer2008ExpressEdition.
Scripts EssapastacontmarquivosdescriptjQuery,mas
tambmpodeserusadaparaqualquertipode
arquivodescript.
About.aspxeAbout.aspx.vbou
About.aspx.cs
OWebFormAbouteoarquivocode-behind
correspondente.OWebFormexibeamensagem
AboutthisWebsite.
Default.aspxeDefault.aspx.vbou
Default.aspx.cs
OWebFormDefaulteoarquivocode-behind
correspondente.OWebFormahomepagedo
site.
Global.asax OArquivodeAplicativoGlobal,quecontmvrios
mtodosrelacionadosaoAplicativoWeboua
sessodousurioatual.
Site.mastereSite.master.vbou
Site.master.cs
Apginamestraeoarquivocode-behind
relacionadodosite.
Web.config Oarquivodeconfiguraodosite.

Quando voc publica um projeto de site, o Visual Studio 2010 pode criar vrios
assemblies para o site. Para abrir um projeto de site ASP.NET previamente criado,
abra o arquivo de soluo no Visual Studio 2010. Como alternativa, esse arquivo
pode ser aberto usando o comando de menu File, Open, Web Site.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-42 Introduo
Escolh
Pontos
No Visu
projeto
A escolh
trabalho
de proje
implicit
modelo
restrito
arquivo

aoDesenvolvimentonaW
haentreum
s principais
ual Studio 2010,
de aplicativo We
ha de um modelo
o de desenvolvim
eto de site ser be
tamente por resid
de projeto de ap
sobre o projeto,
de projeto.
WebcomoMicrosoftV
projetodes
possvel criar u
eb ASP.NET ou o
o de projeto depe
mento preferencia
em mais fcil de u
direm em uma pa
plicativo Web, no
uma vez que os r

VisualStudio2010
siteoudeap
m aplicativo Web
modelo de proje
ende das suas exi
al. Para alguns de
usar, pois os recu
asta. Para outros,
qual possvel t
recursos so defin
plicativoWeb
b usando o mode
eto de site ASP.NE
igncias e do seu
senvolvedores, o
ursos so definido
ser prefervel us
ter um controle m
nidos explicitame
b

elo de
ET.
fluxo de
modelo
os
sar o
mais
ente no
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-43
Aplicativos Web ASP.NET
A principal diferena entre os dois tipos de modelos de projeto de aplicativo Web
no Visual Studio 2010 a incluso de um arquivo de projeto no modelo de
aplicativo Web ASP.NET. O modelo de projeto de site ASP.NET cria um projeto
que se baseia em pasta; ou seja, todo o contedo na pasta principal do projeto de
site automaticamente parte do projeto. Na prtica, isso significa que voc pode
arrastar e soltar arquivos nessa pasta, enquanto, em um projeto de aplicativo Web,
necessrio adicionar novos arquivos ao projeto a partir do Visual Studio 2010.
Durante a compilao e formao de um aplicativo Web, todos os arquivos de
classes inclusos no projeto so compilados em um nico assembly, que inserido
na pasta Bin. O assembly a unidade binria de implantao, o que significa que
nenhuma parte do cdigo precisa ser implantada, exceto por aquela escrita nos
arquivos de marcao. Alm disso, necessrio implantar os arquivos de Web
Form (.aspx), os arquivos de controle do usurio (.ascx) e outros arquivos de
contedo esttico.
Durante a criao de um projeto de site, voc compila o cdigo para test-lo. Para
implantar um projeto de site, necessrio implantar os arquivos de origem reais e
recorrer compilao dinmica ASP.NET para compilar as pginas e as classes no
aplicativo.
Para executar ou depurar qualquer pgina de um projeto de aplicativo Web, voc
precisa compilar o projeto inteiro, enquanto, em um projeto de site, existe a opo
de configurar as opes de compilao de forma a compilar o site, compilar uma
pgina individual ou no fazer nenhuma espcie de compilao.
Devido ao uso da compilao dinmica, existe uma vantagem ntida em se utilizar
o projeto de site nos casos em que os arquivos que requerem compilao forem ser
adicionados aps a implantao inicial. No entanto, se sua preocupao estiver
voltada implantao do cdigo-fonte, convm utilizar o projeto de aplicativo Web,
j que apenas o assembly precisa ser implantado com os arquivos de marcao, os
arquivos de Web Form, os arquivos de controle do usurio e outros arquivos de
contedo esttico.
Outros motivos para utilizar o modelo de projeto de site incluem a sua inteno de
gerar um assembly para cada pgina ou o seu desejo de abrir e editar qualquer
diretrio como um projeto da Web, sem criar um arquivo de projeto.
Outro motivo para se escolher um modelo de projeto de aplicativo Web a
necessidade de controlar os assemblies de sada, o que tambm significa que voc
pode manter classes, pginas de referncia e classes de controle do usurio
autnomas. Alm disso, o modelo de projeto de aplicativo Web a melhor opo
nos casos em que necessrio desenvolver um aplicativo Web que contenha vrios
projetos da Web ou quando voc precisa adicionar etapas pr ou ps-compilao e
ter mais controle sobre a compilao.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-44 Introduo
Arqui
Pontos
No Visu
suporte
Arquiv
O Visua
arquivo
We
des
For
des
Serv
ser
con

aoDesenvolvimentonaW
vosdeaplic
s principais
ual Studio 2010,
e ao desenvolvime
vos de aplicativ
al Studio 2010 of
de aplicativo:
eb Forms ASP.NE
senvolver sites din
rms ASP.NET con
signado pela exte
vios WCF (.svc)
o acessados ape
ntratos ou interfac
WebcomoMicrosoftV
ativosWeb.
possvel criar d
ento do seu aplic
vos Web.
ferece suporte par
ET (.aspx). Voc p
nmicos que os u
ntam com o supo
nso WebForm.a
). Voc pode usar
enas por outros p
ces e arquivos co

VisualStudio2010
iferentes tipos de
cativo Web.
ra os seguintes tip
pode usar Web Fo
usurios podem a
orte de um arquiv
aspx.vb ou WebF
r servios WCF p
rogramas. Servi
ode-behind (.vb o
e arquivo para ofe
pos de extenses
orms ASP.NET p
acessar diretamen
vo code-behind qu
Form.aspx.cs.
para criar servios
os WCF se baseia
u .cs).

erecer
s de
ara
nte. Web
ue
s que
am em
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-45
Classes. Arquivos de classes usam a extenso do Visual C#, (.cs), ou a
extenso do Visual Basic (.vb). Por exemplo, o nome completo de um arquivo
de classes Test Test.cs para um projeto do Visual C# ou Test.vb para um
projeto do Visual Basic.
Arquivos JavaScript (.js). Esses arquivos so utilizados para conter scripts e
mtodos JavaScript utilizados no seu aplicativo Web.

Observao:paraobtermaisinformaessobrepginascode-behind,consulteo
Mdulo4,InclusodefuncionalidadeemumWebFormMicrosoftASP.NET.
Classes globais de aplicativo (Global.asax). O arquivo Global.asax (tambm
conhecido como arquivo de aplicativo ASP.NET) um arquivo opcional que
contm cdigo para resposta a eventos em nvel de aplicativo que so gerados
pelo ASP.NET ou por HttpModules. Em tempo de execuo, Global.asax
analisado e compilado como uma classe .NET Framework dinamicamente
gerada que derivada da classe base HttpApplication.
Arquivos de pgina mestra (.master). Pginas mestras permitem criar um
layout consistente para as pginas de um aplicativo. Uma nica pgina mestra
define a aparncia e o comportamento padro que voc deseja proporcionar a
todas as pginas (ou a um grupo de pginas) do seu aplicativo.

Observao:paraobtermaisinformaessobrepginasmestras,consulteoMdulo5,
Implementaodepginasmestrasecontrolesdousurio.
Arquivos de recurso (.resx). Um recurso consiste em qualquer dado no
executvel que logicamente implantado com um aplicativo, podendo ser
exibido nesse aplicativo como uma mensagem de erro ou como parte a
interface do usurio. Recursos podem conter dados em diversos formatos,
incluindo cadeias de caracteres, imagens e objetos persistentes. O armazenamento
de dados em um arquivo de recurso permite que esses dados sejam alterados
sem que voc precise recompilar seu aplicativo inteiro.
Styles.css. Uma CSS um mecanismo simples para adicionar estilos (como
fontes, cores e espaamento) a documentos da Web. Styles.css um arquivo
de folha de estilos padro para o aplicativo Web.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-46 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Arquivo Web.config. O arquivo web.config contm definies de configurao
que so lidas pelo componente CLR, como a poltica de associao de
assemblies e servios WCF. Esse arquivo tambm contm configuraes que o
aplicativo pode ler, bem como as classes globais de aplicativo que servem de
suporte para um projeto.
Arquivo Web.sitemap. O arquivo Web.sitemap contm elementos XML ou
itens que podem ser usados para exibir um Menu ou uma trilha no seu
aplicativo Web.

Pergunta: quais so exemplos de arquivos que no se baseiam em uma linguagem
de programao, mas que tero sua prpria extenso?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Criaodea
Demo
simpl
Pontos
Nesta d
Etapas
1. Abr

2. Ers
a.
b.
c.
plicativosWebusandoo
onstrao:co
es
s principais
demonstrao, voc
s da demonstra
ra o Visual Studio
No menu Inicia
Programas, cliq
Microsoft Visua
tellen Sie ein We
Na janela Start P
New Project.
Na caixa de dil
Basic ou Visual
No painel do m
MicrosoftVisualStudio
omocriarum
c ver como cria
ao
o 2010.
ar de 10560A-GE
que em Microsof
al Studio 2010.
ebanwendungspr
Page Microsoft
logo New Projec
l C#.
meio, clique em AS
o2010elinguagensba
mprojetode
ar um projeto de
EN-DEV, aponte p
ft Visual Studio 2
ojekt.
t Visual Studio , n
t, no painel esqu
SP.NET Web App
aseadasnoMicrosoft.NE
eaplicativoW
aplicativo Web.
para Todos os
2010 e novamen
no menu File, cliq
erdo, clique em V
plication e depois
T 2-47
Web

nte em
que em
Visual
s em OK.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-48 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
3. Adicione os controles TextBox e Button ao Web Form Default.
a. Na janela Default.aspx, clique em Design.
b. No modo de exibio Design, clique no texto You can also, clique em p,
pressione a tecla de SETA PARA A DIREITA e depois clique em ENTER.
c. Em Toolbox, expanda Standard e clique duas vezes no controle Button.
d. Em Toolbox, opo Standard, clique duas vezes no controle TextBox.
4. Adicione cdigo para o manipulador de eventos Click do controle Button.
Na janela Default.aspx, clique duas vezes no controle Button e adicione o
seguinte cdigo ao manipulador de eventos Click.
[Visual Basic]
TextBox1.Text = "You clicked the button"

[Visual C#]
TextBox1.Text = "You clicked the button";

5. Escreva cdigo para obter PostBack no manipulador de eventos Page_Load.
Digite o cdigo a seguir no manipulador de eventos Page_Load.
[Visual Basic]
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Me.IsPostBack Then
Response.Write("Server roundtrip due to postback")
Else
Response.Write("First time page is loaded")
End If
End Sub

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-49
[Visual C#]
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{
Response.Write("Server roundtrip due to postback");
}
else
{
Response.Write("First time page is loaded");
}
}

6. Compile e depure a soluo.
a. Insira o ponto de interrupo clicando com o mouse no incio do cdigo,
no local em que voc deseja verificar PostBack.
b. Na janela WebApplication1 Microsoft Visual Studio (Administrator), no
menu Debug, clique em Start Debugging.

Observao:sevocvisualizarumacaixademensagemDebugging NotEnabled,clique
emOK.
c. Execute o aplicativo no modo de depurao e percorra as linhas do cdigo
pressionando a tecla F10. Quando o navegador for aberto aps a primeira
sesso de depurao, clique em Page na barra de ferramentas e depois em
View Source para ver a origem no Internet Explorer.
d. Clique em Button para executar postback no servidor.
e. Na janela de cdigo de Default.aspx.vb ou Default.aspx.cs, percorra as
linhas do cdigo pressionando F10.
f. Na janela http://localhost:1186/Default.aspx-Original Source, clique no
boto Close.
g. Na janela http://localhost:1186/Default.aspx, clique no boto Close.

Pergunta: quando um site criado, que pastas ou arquivos so exibidos pelo
Solution Explorer?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-50 Introduo
Impla
Pontos
Depois
ASP.NE
implant
2010 au
Servido
Em um
de teste
esse apl
teste, de
submeti
usurio
poder

aoDesenvolvimentonaW
antaodeu
s principais
de criar e testar s
ET ou no modelo
tar esse aplicativo
uxilia no processo
ores
ambiente de des
e aps a conclus
licativo testado
ependendo das v
ido, que incluem
). Assim que o ap
implant-lo no se
WebcomoMicrosoftV
maplicativo
seu aplicativo We
de aplicativo We
o em um servidor
o de compilao
senvolvimento, o
o da fase de dese
de ponta a ponta
vrias fases de tes
m um teste de inte
plicativo Web tive
ervidor de produ

VisualStudio2010
oWeb
eb (seja baseado n
eb ASP.NET), voc
r de teste ou de p
de implantao d
aplicativo Web
envolvimento e te
a. comum have
te s quais um ap
egrao e um UAT
er sido totalment
uo.
no modelo de sit
c precisar comp
produo. O Visua
do seu aplicativo
implantado no s
estes pessoais. Em
er mais de um ser
plicativo Web
T (teste de aceita
te testado e lana

e
pilar e
al Studio
Web.
servidor
m seguida,
rvidor de
o do
do, voc
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-51
IIS
A Microsoft fornece um servidor Web IIS para a hospedagem de aplicativos Web.
O IIS oferece suporte para a maioria das verses do sistema operacional Windows,
incluindo todas as edies do Windows Server e muitas das edies do Windows
XP, do Windows Vista e do Windows 7.
Opes de implantao
H vrias opes de implantao disponveis com o Visual Studio 2010. Porm,
essas opes sero discutidas em mdulos posteriores.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-52 Introduo
Laborat
oMicros
baseadas

Observa
program
deprog
estiveru
fornecid
Introdu
Neste la
adiciona
Voc tam

aoDesenvolvimentonaW
rio:Cria
softVisua
snoMicr
ao:vocpodee
maoVisualBasic
ramao,consulte
usandooVisualC#
asnaSeo2da
uo
aboratrio, voc i
ar um controle d
mbm ir compil
WebcomoMicrosoftV
odeap
alStudio
rosoft.NE
executartarefasne
ouVisualC#.See
easetapasfornecid
#comolinguagem
pginadolaborat
ir criar um proje
e servidor a um W
lar e implantar um

VisualStudio2010
plicativos
2010eli
ET
estelaboratriousa
estiverusandooVi
dasnaSeo1da
mdeprogramao,
trio.
eto de site ASP.NE
Web Form e conf
m site ASP.NET.
sWebusa
inguagen
andoalinguagem
isualBasiccomoli
apginadolabora
consulteasetapa
ET simples e dep
figurar suas prop
ando
ns

de
nguagem
atrio.Se
as
pois
priedades.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-53
Objetivos
Depois de concluir este laboratrio, voc ser capaz de:
1. Criar um projeto de site ASP.NET simples.
2. Adicionar um controle de servidor a um Web Form e configurar suas
propriedades.
3. Compilar e implantar um site ASP.NET.

Configurao do laboratrio
Neste laboratrio, voc usar o ambiente de mquina virtual disponvel. Antes de
iniciar o laboratrio, voc deve:
Iniciar a mquina virtual 10560A-GEN-DEV e depois fazer logon usando a
seguinte combinao de nome de usurio e senha:
Nome de usurio: Aluno
Senha: Pa$$w0rd

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-54 Introduo
Cenr
Voc tra
possui u
persona
Sua org
seus clie
gerencia
Voc re
implant

aoDesenvolvimentonaW
riodelabora
abalha como dese
uma base global d
alizar e gerenciar
anizao decide c
entes. Alm do si
ar dados de clien
cebe a tarefa de c
t-lo em um diret
WebcomoMicrosoftV
atrio
envolvedor na Co
de clientes. Ela u
as informaes d
criar um site para
ite externo para C
ntes e servios em
criar esse site usa
trio virtual do II

VisualStudio2010
ontoso, Ltd, uma
tiliza aplicativos
dos clientes.
a simplificar e agi
Clientes, ela plane
m ASP.NET.
ndo o modelo de
S.
a grande organiza
Microsoft .NET p
ilizar a interao
eja criar um site p
e site ASP.NET e

ao que
para criar,
com
para
de
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-55
Seo1:VisualBasic
Exerccio1:CriaodeumsiteASP.NET
Estas so as principais tarefas do exerccio:
1. Criar um site ASP.NET vazio.
2. Usar uma porta esttica com o ASP.NET Development Server.
3. Salvar o arquivo de soluo.
4. Adicionar um arquivo CSS existente ao site.

Tarefa1:CriarumsiteASP.NETvazio
Faa logon na mquina virtual 10560A-GEN-DEV como Aluno, usando a
senha Pa$$w0rd.
Abra o Microsoft Visual Studio 2010.
Crie o site vazio CustomerManagement com as seguintes configuraes,
usando a caixa de dilogo New Web Site:
Modelo: Site ASP.NET vazio
Nome: CustomerManagement
Local: Sistema de arquivos
Caminho: D:\Labfiles\Starter\M2\VB\CustomerManagement
Linguagem: Visual Basic

Tarefa2:UsarumaportaestticacomoASP.NETDevelopmentServer
No Solution Explorer, clique em
D:\Labfiles\Starter\M2\VB\CustomerManagement.
Na janela Properties, na lista Use dynamic ports, clique em False.
Na janela Properties, na caixa Port number box, digite 1111 e pressione
ENTER.


Observao:talvezsejamnecessriosalgunssegundosatqueapropriedadePort
numberfiqueprontaparaediodepoisdedefinidaapropriedadeUsedynamicports.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-56 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa3:Salvaroarquivodesoluo
No Solution Explorer, clique na Soluo 'CustomerManagement' (1 project)
e depois salve o arquivo de soluo como D:\Labfiles\Starter\M2\VB\
CustomerManagement.sln, usando o comando Save As no menu File.

Tarefa4:AdicionarumarquivoCSSexistenteaosite
Crie uma pasta denominada Styles, no site CustomerManagement
Adicione o arquivo D:\Labfiles\Starter\M2\Styles\Site.css pasta Styles,
usando a caixa de dilogo Add Existing Item.

Resultados:depoisdeconcluiresteexerccio,voctercriadoumsiteASP.NET
baseadoemsistemadearquivoseadicionadoestilosaessesite.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-57
Exerccio2:Inclusoeconfiguraodecontrolesde
servidoremWebForms
Estas so as principais tarefas do exerccio:
1. Adicionar um Web Form padro ao site.
2. Fechar o Visual Studio 2010.
3. Adicionar o ttulo do aplicativo ao Web Form padro.
4. Definir as propriedades de controles do Web Form padro.
5. Aplicar o estilo predefinido ao Web Form.

Tarefa1:AdicionarumWebFormpadroaosite
Adicione o Web Form Default.aspx ao site CustomerManagement usando a
caixa de dilogo Add New Item.

Observao:oWebFormDefaultexibidonomodoSource,noqualvocperceber
queelementoscomoform,divebodyestovazios.
Tarefa2:FecharoVisualStudio2010
Salve os arquivos modificados.
Fechar o Visual Studio 2010.

Tarefa3:AdicionarottulodoaplicativoaoWebFormpadro
Abra o Microsoft Visual Studio 2010 como administrador usando o comando
Run as administrator no menu de contexto.
Abra a soluo CustomerManagement na pasta D:\Labfiles\Starter\M2\VB,
usando a caixa de dilogo Open Project.
Adicione um controle Literal da Caixa de Ferramentas ao elemento div na
janela Default.aspx e defina seu atributo Text como Customer Management e
sua propriedade ID como AppTitleLiteral, usando a janela Properties.
Salve as alteraes e visualize o Web Form padro em um navegador da Web,
usando o comando View in Browser do menu de contexto.

Observao:agora,possvelverotextoquevocinseriunocontroleLiteral.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-58 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa4:DefiniraspropriedadesdecontroledoWebFormpadro
Abra o Web Form padro no modo de exibio Design.
Defina a propriedade Visible do controle Literal como False, usando a janela
Properties, e depois salve as alteraes.
Visualize o Web Form no navegador e depois exiba a origem renderizada no
navegador usando o comando Source no menu View do Internet Explorer.
Feche as janelas abertas do Internet Explorer.
Defina a propriedade Visible do controle Literal como True.
Defina a propriedade Styles do elemento div usando as seguintes
propriedades na caixa de dilogo Modify Style, que esto acessveis na
propriedade Style da janela Property:
Font-family: Trebuchet MS
Font-size: 22
Color: Gray
Salve as alteraes e visualize o Web Form padro em um navegador da Web.
Tarefa5:AplicaroestilopredefinidoaoWebForm
Visualize as alteraes no modo Source.
Adicione uma referncia ao arquivo Site.css na pasta Styles a partir do
elemento head, arrastando o arquivo Styles/Site.css at a janela Default.aspx,
ao lado do elemento title.
Defina a propriedade Class do elemento div como appTitle e depois remova
os estilos especficos especficos aplicados para a propriedade Styles, usando a
janela Properties.
Salve as alteraes e visualize o Web Form padro em um navegador da Web.


Observao:agora,possvelverasalteraesquevocefetuounocontroleLiteral.
Resultado:depoisdeconcluiresteexerccio,vocterprojetadoaversoinicialdo
WebFormpadroparaoseusite.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-59
Exerccio3:Desenvolvimentoeimplantaodeum
aplicativoWebASP.NET
A principal tarefa deste exerccio desenvolver e implantar o site
CustomerManagement.
Tarefa1:DesenvolvereimplantarositeCustomerManagement
Abra a ferramenta Copy Web Site, selecionando o site no Solution Explorer e
depois usando o menu Website.
Estabelea uma conexo com o IIS local na ferramenta Copy Web Site.
Crie um novo diretrio virtual abaixo do site padro, selecionando Default
Web Site e depois clicando no boto Create New Virtual Directory. Use as
configuraes a seguir:
Nome do alias: CustomerManagement
Pasta: C:\inetpub\wwwroot\CustomerManagement
Selecione e abra o novo diretrio virtual na caixa de dilogo Open Web Site.
Copie o site CustomerManagement para o novo diretrio virtual no IIS local,
selecionando todos os arquivos e pastas no painel esquerdo da ferramenta
Copy Web Site e depois clicando no boto Copy selected files from source to
remote web site.
Visualize o site implantado no Internet Explorer, no endereo
http://localhost:1112/CustomerManagement.

Tarefa2:desativaramquinavirtualereverterasalteraes.
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Resultado: depoisdeconcluiresteexerccio,vocterdesenvolvidoeimplantadoo
siteCustomerManagementnoIISlocal.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-60 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Seo2:VisualC#
Exerccio1:CriaodeumsiteASP.NET
Estas so as principais tarefas do exerccio:
1. Criar um site ASP.NET vazio.
2. Usar uma porta esttica com o ASP.NET Development Server.
3. Salvar o arquivo de soluo.
4. Adicionar um arquivo CSS existente ao site.

Tarefa1:CriarumsiteASP.NETvazio
Faa logon na mquina virtual 10560A-GEN-DEV como Aluno, usando a
senha Pa$$w0rd.
Abra o Microsoft Visual Studio 2010.
Crie o site vazio CustomerManagement com as seguintes configuraes,
usando a caixa de dilogo New Web Site:
Modelo: Site ASP.NET vazio
Nome: CustomerManagement
Local: Sistema de arquivos
Caminho: D:\Labfiles\Starter\M2\CS\CustomerManagement
Linguagem: Visual C#

Tarefa2:UsarumaportaestticacomoASP.NETDevelopmentServer
No Solution Explorer, clique em
D:\Labfiles\Starter\M2\CS\CustomerManagement.
Na janela Properties, na lista Use dynamic ports, clique em False.
Na janela Properties, na caixa Port number, digite 1110 e pressione ENTER.


Observao:talvezsejamnecessriosalgunssegundosatqueapropriedadePort
numberfiqueprontaparaediodepoisdedefinidaapropriedadeUsedynamicports.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-61
Tarefa3:Salvaroarquivodesoluo
No Solution Explorer, clique na Soluo 'CustomerManagement' (1 project),
e depois salve o arquivo de soluo como D:\Labfiles\Starter\M2\CS\
CustomerManagement.sln, usando o comando Save As no menu File.

Tarefa4:AdicionarumarquivoCSSexistenteaosite
Crie uma pasta denominada Styles, no site CustomerManagement. No Solution
Explorer, clique com o boto direito no site e depois clique em New Folder.
Adicione o arquivo D:\Labfiles\Starter\M2\Styles\Site.css pasta Styles,
usando a caixa de dilogo Add Existing Item.

Resultados:Depoisdeconcluiresteexerccio,voctercriadoumsiteASP.NET
baseadoemsistemadearquivoseadicionadoestilosaessesite.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-62 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio2:Inclusoeconfiguraodecontrolesde
servidoremWebForms
Estas so as principais tarefas do exerccio:
1. Adicionar um Web Form padro ao site.
2. Fechar o Visual Studio 2010.
3. Adicionar o ttulo do aplicativo ao Web Form padro.
4. Definir as propriedades de controles do Web Form padro.
5. Aplicar o estilo predefinido ao Web Form.

Tarefa1:AdicionarumWebFormpadroaosite
Adicione o Web Form Default.aspx ao site CustomerManagement usando a
caixa de dilogo Add New Item.

Observao:oWebFormDefaultexibidonomodoSource,noqualvocpode
perceberqueelementoscomoform,divebodyestovazios.
Tarefa2:FecharoVisualStudio2010
Salve os arquivos modificados.
Fechar o Visual Studio 2010.

Tarefa3:AdicionarottulodoaplicativoaoWebFormpadro
Abra o Microsoft Visual Studio 2010 como administrador usando o comando
Run as administrator no menu de contexto.
Abra a soluo CustomerManagement na pasta D:\Labfiles\Starter\M2\CS,
usando a caixa de dilogo Open Project.
Adicione um controle Literal da Caixa de Ferramentas ao elemento div na
janela Default.aspx e defina seu atributo Text como Customer Management e
sua propriedade ID como AppTitleLiteral, usando a janela Properties.
Salve as alteraes e visualize o Web Form padro em um navegador da Web,
usando o comando View in Browser do menu de contexto.

Observao:agora,possvelverotextoquevocinseriunocontroleLiteral.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-63
Tarefa4:DefiniraspropriedadesdecontroledoWebFormpadro
Abra o Web Form padro no modo de exibio Design.
Defina a propriedade Visible do controle Literal como False, usando a janela
Properties, e depois salve as alteraes.
Visualize o Web Form no navegador e depois exiba a origem renderizada no
navegador usando o comando Source no menu View do Internet Explorer.
Feche as janelas abertas do Internet Explorer.
Defina a propriedade Visible do controle Literal como True. Defina a
propriedade Styles do elemento div usando as seguintes propriedades na
caixa de dilogo Modify Style, que esto acessveis na propriedade Style da
janela Property:
Font-family: Trebuchet MS
Font-size: 22
Color: Gray
Salve as alteraes e visualize o Web Form padro em um navegador da Web.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-64 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa5:AplicaroestilopredefinidoaoWebForm
Visualize as alteraes no modo Source.
Adicione uma referncia ao arquivo Site.css na pasta Styles a partir do
elemento head, arrastando o arquivo Styles/Site.css at a janela Default.aspx,
ao lado do elemento title.
Defina a propriedade Class do elemento div como appTitle e depois remova
os estilos especficos especficos aplicados para a propriedade Styles, usando a
janela Properties.
Salve as alteraes e visualize o Web Form padro em um navegador da Web.

Observao:agora,possvelverasalteraesquevocefetuounocontroleLiteral.

Resultados:depoisdeconcluiresteexerccio,vocterprojetadoaversoinicialdo
WebFormpadroparaoseusite.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeaplicativosWebusandooMicrosoftVisualStudio2010elinguagensbaseadasnoMicrosoft.NET 2-65
Exerccio3:Desenvolvimentoeimplantaodeumaplicativo
WebASP.NET
A principal tarefa deste exerccio desenvolver e implantar o site
CustomerManagement.
Tarefa1:DesenvolvereimplantarositeCustomerManagement
Desenvolva o site CustomerManagement e depois se certifique de que ele no
possua erros.
Abra a ferramenta Copy Web Site, selecionando o site no Solution Explorer e
depois usando o menu Web site.
Estabelea uma conexo com o IIS local na ferramenta Copy Web Site.
Crie um novo diretrio virtual abaixo do site padro, selecionando Default
Web Site e depois clicando no boto Create New Virtual Directory. Use as
configuraes a seguir:
Nome do alias: CustomerManagement
Pasta: C:\inetpub\wwwroot\CustomerManagement
Selecione e abra o novo diretrio virtual na caixa de dilogo Open Web Site.
Copie o site CustomerManagement para o novo diretrio virtual no IIS local,
selecionando todos os arquivos e pastas no painel esquerdo da ferramenta
Copy Web Site e depois clicando no boto Copy selected files from source to
remote web site.
Visualize o site implantado no Internet Explorer, no endereo
http://localhost:1112/CustomerManagement.

Tarefa2:Desativaramquinavirtualereverterasalteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Resultados:depoisdeconcluiresteexerccio,vocterdesenvolvidoeimplantado
ositeCustomerManagementnoIISlocal.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-66 Introduo
Revis
1. Com
2. Voc
cod
3. Com


aoDesenvolvimentonaW
odolabora
mo voc criou um
c sabe dizer por
de-behind associa
mo mostrar ou oc
WebcomoMicrosoftV
atrio
m site?
que um Web Fo
ado?
cultar um contro

VisualStudio2010
rm ASP.NET (.as
le de servidor?
spx) possui um ar

rquivo
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Criaodea
Revisod
complem
Pergun
1. Com
par
2. Qu
pg
3. Qu
4. List
5. Por

plicativosWebusandoo
domdu
mentares
ntas e respostas
mo voc selecion
ra criar um novo p
al a funo do C
gina ASP.NET?
al a funo da c
te algumas das lin
r que voc criaria
MicrosoftVisualStudio
uloeinfo
s de reviso
naria uma linguag
projeto de aplica
CLR (Common L
compilao JIT?
nguagens atualm
um componente

o2010elinguagensba
rmaes
gem de programa
tivo Web?
Language Runtim
mente aceitas pelo
e para um aplicati
aseadasnoMicrosoft.NE
ao baseada em .
me) na execuo d
.NET Framewor
ivo Web?
T 2-67

.NET
de uma
rk.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
2-68 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Problemas e cenrios do mundo real
1. Voc deseja criar um servio WCF. Qual a maneira mais fcil de implement-lo?
Use o modelo de projeto de Aplicativo de Servios WCF.
2. Voc deseja criar um componente reutilizvel a ser compartilhado com outros
projetos. Qual a maneira mais fcil de implement-lo?
Use o modelo de projeto de Biblioteca de Classes.

Ferramentas
Ferramenta Funo Ondeencontrar
JanelaEditor Exibeocdigoparaedioeuma
interfacegrficaparaainclusode
controles.
VisualStudioIDE
SolutionExplorer Exibeahierarquiadearquivosde
projetoepermitemovere
modificaressesarquivos.
VisualStudioIDE
JanelaProperties Permiteajustaraspropriedadesde
documentos,classesecontroles.
VisualStudioIDE
TaskList Permiteacompanharostatusde
tarefasmedidaquevoc
desenvolveseuaplicativo.
VisualStudioIDE
Output Exibemensagensdestatuspara
vriosrecursosnoIDE.
VisualStudioIDE
Toolbox Permiteusarumaoperaode
arrastar-e-soltarnoscontrolesdo
seuaplicativo.
VisualStudioIDE

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-1
Mdulo3
CriaodeumWebFormMicrosoftASP.NET
Contedo:
Lio1:CriaodeWebForms 3-3
Lio2:Inclusoeconfiguraodecontrolesdeservidoremum
WebForm 3-12
Laboratrio:CriaodeumWebFormMicrosoftASP.NET 3-37
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-2 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Visogeraldomdulo

Os Web Forms Microsoft ASP.NET so os elementos da interface do usurio


responsveis pela aparncia dos aplicativos Web. Um Web Form apresenta
informaes ao usurio em qualquer tipo de navegador e implementa lgica de
aplicativo usando cdigo do servidor. O Microsoft Visual Studio fornece uma
interface intuitiva do tipo arrastar-e-soltar para ajudar a criar a interface do usurio
para o aplicativo Web. Neste mdulo, voc aprender a criar Web Forms e a
popul-los com controles de servidor.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-3
Lio1
CriaodeWebForms

Os Web Forms consistem em uma combinao de marcao, cdigo e controles


que executada em um servidor Web, como o IIS (Servios de Informaes da
Internet). Geralmente os Web Forms so conhecidos como pginas ASP.NET ou
pginas .asp. possvel criar Web Forms usando o Microsoft Visual Basic ou o
Microsoft Visual C#. Ao criar Web Forms, voc pode escolher se deseja colocar o
cdigo em um arquivo separado.
Nesta lio, voc aprender o que um Web Form e como cri-lo. Tambm
aprender a identificar as principais caractersticas dos Web Forms.
Objetivos da lio
Depois de concluir esta lio, voc ser capaz de:
Descrever um Web Form ASP.NET.
Explicar como criar um Web Form ASP.NET.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-4 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
OqueumWebForm?

Pontos principais
Os Web Forms so os contineres para o texto e os controles que voc deseja
exibir no navegador. Eles geram HTML e o enviam para o navegador. Entretanto,
os controles que executam a interface do usurio permanecem no servidor Web. A
diviso entre a interface do lado do cliente e o cdigo do servidor uma diferena
crucial entre os Web Forms e as pginas da Web tradicionais. Em uma pgina da
Web tradicional, o navegador no lado do cliente processa o cdigo. Em contrapartida,
os Web Forms enviam para o navegador apenas a marcao e qualquer script do
lado do cliente, enquanto o processamento da pgina permanece no servidor. Essa
diviso entre a interface do lado do cliente e o cdigo do servidor aumenta o
nmero de navegadores aceitos e melhora a segurana e a funcionalidade da
pgina da Web.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-5
A extenso .aspx
Os Web Forms tm uma extenso .aspx e geralmente consistem em dois arquivos
separados:
O arquivo .aspx, que contm a interface do usurio referente ao Web Form.
O arquivo .aspx.vb (cdigo do Visual Basic) ou .aspx.cs (cdigo do Visual C#),
que contm o cdigo de suporte. chamado arquivo code-behind.
Diretivas de pgina, declaraes e elementos
Cinco nveis de diretivas, declaraes e elementos definem as funes de um Web
Form:
A diretiva Page e os atributos associados definem funes globais.
O elemento !DOCTYPE e os atributos associados especificam a DTD
(definio de tipo de documento) com a qual o Web Form est em
conformidade.
O elemento HTML e os atributos associados verificam se o Web Form contm
elementos HTML.
O elemento BODY e os atributos associados definem e contm todo o
contedo de uma pgina.
O elemento FORM e os atributos associados definem de que forma os grupos
de controles so processados.

Diretivas de pgina e atributos
A diretiva de pgina @ Page define os atributos especficos de pgina que so
usados pelo compilador e analisador de pginas ASP.NET. Voc deve incluir
apenas uma marca de diretiva de pgina para cada Web Form. Os exemplos a
seguir mostram os atributos tpicos da diretiva de pgina para um novo Web Form
do Visual C# e do Visual Basic.
[Visual Basic]
<%@ Page Title="" Language="VB" CodeFile="Default.aspx.vb"
Inherits="_Default" %>

[Visual C#]
<%@ Page Title="" Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-6 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Estes so os atributos de uma diretiva de pgina:
AutoEventWireUp. Usado para indicar se os eventos no nvel de pgina sero
automaticamente amarrados aos cdigos dos eventos. Isso significa que o
evento Page_Load, por exemplo, ser amarrado automaticamente ao cdigo se
voc adicionar o manipulador de eventos correspondente no arquivo code-
behind. Para o Visual C#, o valor padro true, mas, para o Visual Basic,
false. Quando AutoEventWireup true, o ASP.NET no exige que voc
associe explicitamente manipuladores de eventos a eventos de pgina, como
Load ou Init. Em vez disso, os manipuladores so automaticamente
associados em tempo de execuo, com base no nome e na assinatura deles.
Para cada evento, o ASP.NET procura um mtodo que seja nomeado de acordo
com o padro Page_eventname, como Page_Load ou Page_Init. Primeiro, o
ASP.NET verifica se h uma sobrecarga com a assinatura tpica de manipulador
de eventos Object e EventArgs. Se no for encontrando nenhum manipulador
de eventos com essa assinatura, o ASP.NET verificar se existe uma sobrecarga
que no tenha parmetros. Quando AutoEventWireup false, voc deve
associar explicitamente manipuladores de eventos a eventos. Nesse caso, os
nomes de mtodo no precisam seguir um padro.
CodeBehind. Especifica o nome do arquivo compilado que contm a classe
associada pgina. Esse atributo usado com projetos de aplicativo Web, os
chamados WAPs.
CodeFile. Especifica o caminho para o arquivo code-behind referenciado de
uma pgina que usa a configurao de dois arquivos. utilizado junto com o
atributo inherits para associar o arquivo code-behind responsvel por carregar
a lgica que d suporte ao Web Form. Esse atributo usado com projetos de
Site (WSP).
Inherits. Define o nome da classe code-behind que a pgina herda. Diferencia
maisculas de minsculas quando a linguagem da pgina Visual C# e no
diferencia quando ela Visual Basic. usado com o atributo CodeFile, que
contm o caminho para o arquivo de origem da classe code-behind. Observe
como o atributo CodeFile nos exemplos anteriores especifica um arquivo que
comea com Default, mas o valor para o atributo Inherits definido como
_Default. Isso ocorre porque Default uma palavra-chave no Visual Basic, e o
Visual Studio 2010 prefixa automaticamente o nome da classe com um
sublinhado para evitar conflitos de nomes. o mesmo caso do Visual C#, no
qual no h nenhuma palavra-chave Default em maisculas. Entretanto,
lembre-se que default em minsculas uma palavra-chave no Visual C#, que
diferencia maisculas de minsculas.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-7
Language. Especifica a linguagem de programao na qual escrito o cdigo
do servidor no Web Form. Inclui o arquivo code-behind, o cdigo embutido e
os blocos de declarao de cdigo na pgina. Alguns dos valores para esse
atributo so Visual C# e Visual Basic, que indicam qual compilador deve ser
usado para analisar e compilar a pgina.
Title. Especifica o ttulo da pgina, exibido na barra de ttulo do navegador, e
na guia se a seu navegador usar guias. A definio desse atributo tem o mesmo
efeito que adicionar um elemento TITLE ao elemento HTML. Entretanto, se
ambos estiverem especificados, o atributo title da diretiva Page ter
precedncia.

Observao:quandovoccriaumWebFormeselecionaaopoparacolocarcdigoem
umarquivoseparado(queopadro),osatributosCodeFileeInheritssousadosem
umaconfiguraodedoisarquivos.WebFormsdearquivoniconousamessesatributos.
Elemento !DOCTYPE e atributos
O elemento !DOCTYPE e os atributos associados especificam a DTD com a qual o
Web Form est em conformidade. Veja a seguir um elemento !DOCTYPE tpico
criado pelo Visual Studio 2010.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Geralmente, o elemento !DOCTYPE usado para especificar a verso de HTML ou
XHTML (Extensible HTML) com a qual o Web Form compatvel. Voc pode
obter mais informaes sobre o elemento de declarao !DOCTYPE na Ajuda do
Visual Studio 2010.
Elemento HTML e atributos
O elemento HTML e os atributos associados identificam que o Web Form contm
HTML. No modo compatvel com padres, o elemento HTML representa a superfcie
inteira na qual o contedo de um documento pode ser renderizado. O elemento
HTML tambm se torna o continer de posicionamento para elementos posicionados
que no tenham um pai posicionado (por exemplo, um continer ou elemento pai
que esteja posicionado de forma diferente em relao ao comportamento padro).
Veja a seguir um elemento HTML tpico. Esse elemento no renderizado e
normalmente no contm nenhum atributo.
<html>
...
</html>
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-8 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
O elemento BODY e seus atributos
O elemento BODY e os atributos associados definem como os objetos aparecem no
navegador do cliente. No modo no compatvel com padres, o elemento body
representa a superfcie inteira na qual possvel renderizar contedo. Veja a seguir
um elemento body tpico.
<body class="body" title="This page...">
</body>

Os atributos de um elemento BODY incluem:
class. Determina a classe CSS (folhas de estilos em cascata) que fornece os
elementos de estilo no corpo do Web Form.
title. Define uma string que ser usada como dica de ferramenta quando o
ponteiro do mouse for colocado em elementos HTML ou controles de servidor
que estejam no corpo de um Web Form.


Observao:vocpodeusaraCSSparadescreveraaparnciaeaformataodeum
WebFormouparaatribuirestiloapginasdaWebemHTML,especificandocores,
fontes,bordaselayout.ACSSajudaasepararamarcaodaapresentao.Issointroduz
areutilizaodeestilosemmaisdeumWebFormparaabrangerumsiteinteiro.Embora
osestilossejamreutilizados,estilosdiferentesgeralmenteseroaplicadosapginas
diferentes.NoVisualStudio2010,vocpodeusarajanelaApplyStylesparaaplicar
estilosaumdeterminadoelementoHTMLoucontroledeservidorWeb,eajanela
ManageStyles,paragerenciarecontrolartodososestilosnoaplicativoWeb.Ambas
podemseracessadasnomenuView.
O elemento FORM e seus atributos
A marca <form> diferente da marca <html> que define a pgina da Web inteira. A
marca <form> e os atributos associados definem de que forma os grupos de
controles so processados. Embora seja possvel ter muitos formulrios HTML em
uma pgina, s pode haver um formulrio de servidor em uma pgina .aspx.
Veja a seguir um elemento FORM tpico.
<form id="form1" runat="server">
...
</form>
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-9
Estes so os atributos de um elemento FORM:
id. Identifica o cdigo do servidor do formulrio quando o acesso
programtico obrigatrio.
method. Identifica o mtodo para enviar valores de controle de volta para o
servidor. As opes para este atributo so:
post. Os dados so passados em pares de nome/valor no corpo da
solicitao HTTP. Este o valor padro.
get. Os dados so passados em string de consulta.
runat. O atributo runat="server" indica que o formulrio deve ser processado
no servidor. Ele faz com que o formulrio faa o postback dos controles para a
pgina ASP.NET no servidor onde seu cdigo executado. Se o atributo runat
no for definido como "servidor" ou for omitido, o formulrio funcionar
como um formulrio HTML normal.

Pergunta: Quais so os dois componentes que constituem os Web Forms?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-10 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
ComocriarumWebForm

Pontos principais
Quando voc cria um aplicativo Web ou site novo e vazio no Visual Studio 2010,
includo apenas um arquivo web.config.
CriaodeumnovoprojetodeaplicativoWebASP.NET
1. No Visual Studio 2010, no menu File, clique em New Project.
2. Na caixa de dilogo New Project, no painel esquerdo, clique em Visual Basic
ou Visual C#.
3. No painel intermedirio, clique em Empty ASP.NET Web Application.
4. Nas caixas Name e Location, digite o nome e o local do projeto e clique em OK.
O Visual Studio 2010 criar um novo aplicativo Web.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-11
CriaodeumnovoprojetodesiteASP.NET
1. No Visual Studio 2010, no menu File, clique em New Web Site.
2. Na caixa de dilogo New Web Site, no painel esquerdo, clique em Visual
Basic ou em Visual C#.
3. No painel intermedirio, clique em Empty ASP.NET Web Site.
4. Na caixa Location, digite o local do site e clique em OK.

O Visual Studio 2010 criar um novo site.
InclusodeumWebFormemumsiteouaplicativoWebexistente
Se voc estiver expandindo um projeto existente, poder usar o Solution Explorer
para adicionar outros Web Forms.
1. No Solution Explorer, clique com o boto direito do mouse em um nome de
projeto de site ou de aplicativo Web existente e, em seguida, clique em Add
New Item. Como alternativa, no Solution Explorer, clique com o boto direito
do mouse em um nome de projeto de site ou de aplicativo Web existente e, no
menu Website, clique em Add New Item ou pressione as teclas
CTRL+SHIFT+A.
2. Na caixa de dilogo Add New Item, no painel intermedirio, clique no modelo
Web Form.
3. Na caixa Name, digite o nome do Web Form.
4. Para criar um arquivo code-behind para um projeto de site, marque a caixa de
seleo Place code in separate file e clique em Add.

O Visual Studio 2010 criar um novo Web Form e o adicionar ao site ou projeto
Web existente.
Pergunta: Que ferramenta voc pode usar para adicionar outros Web Forms se
estiver expandindo um projeto existente?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-12 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Lio2
Inclusoeconfiguraodecontrolesde
servidoremumWebForm

Os controles de servidor ASP.NET so executados no servidor e encapsulam a


interface do usurio e outras funcionalidades relacionadas. Esses controles (como
botes, caixas de texto e listas) so diferentes dos controles HTML padro em que
a lgica de suporte executada no servidor, e no no navegador do usurio.
Nesta lio, voc aprender a usar os controles de servidor ASP.NET.
Objetivos da lio
Depois de concluir esta lio, voc ser capaz de:
Descrever um controle de servidor ASP.NET.
Descrever os tipos de controle de servidor.
Salvar o estado de exibio dos controles de servidor.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-13
Adicionar e configurar controles de servidor HTML.
Adicionar e configurar controles de servidor Web.
Determinar o controle de servidor apropriado para um Web Form.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-14 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Oqueumcontroledeservidor?

Pontos principais
Os controles de servidor ASP.NET so executados no servidor e encapsulam a
interface do usurio. possvel usar controles de servidor em Web Forms
ASP.NET e utiliz-los para responder a eventos em classes code-behind de Web
Form ASP.NET.
Veja a seguir um exemplo de um controle de servidor Web Button.
<asp:Button id="SubmitButton" runat="server" Text="Submit" />

Veja a seguir um exemplo de controle de servidor HTML input.
<input type="text" value="Submit" runat="server" />

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-15
runat="server"
Os controles de servidor tm um atributo runat, que s pode ser definido como o
valor de servidor.

Observao:emalgumassituaes,oscontrolesdeservidorexigemumscriptdecliente
parafuncionarcorretamente.Seumusuriotiverdesabilitadooscriptnonavegador,os
controlespoderonofuncionarconformepretendido.Entretanto,amaioriados
controlesintrnsecosfuncionamcorretamentecomousemscriptdoladodocliente.
Outro recurso dos controles de servidor que o estado de exibio, as
configuraes e a entrada de usurio referentes ao controle so salvos
automaticamente quando a pgina passa entre o cliente e o servidor. Sem
monitorao de estado, os elementos HTML tradicionais so revertidos s suas
configuraes padro quando a pgina retorna do servidor para o cliente.

Observao:paraobtermaisinformaessobreestadodeexibio,consulteotpico
Salvaroestadodeexibio,maisfrentenestalio.
Funcionalidade interna
A funcionalidade de um controle de servidor est relacionada ao que ocorre
quando o usurio clica em um boto de comando ou em uma caixa de listagem.
Esses processos so chamados manipuladores de eventos. Como programador de
Web Forms, voc precisa determinar os manipuladores de eventos que sero
implementados para cada controle de servidor.
Modelo de objeto comum
No ASP.NET, os controles de servidor usam um modelo de objeto comum e,
consequentemente, compartilham vrios atributos. Por exemplo, quando voc
deseja definir a cor do plano de fundo para um controle de servidor Web, sempre
usa o mesmo atributo BackColor, seja qual for o controle. A marcao a seguir
para um boto de controle de servidor Web mostra alguns dos atributos tpicos de
um controle de servidor.
<asp:Button id="Button1" runat="server" BackColor="Red" Width="238px"
Height="25px" Text="Web control" />

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-16 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Criao de HTML especfico de navegador
Quando uma pgina renderizada para um navegador, os controles de servidor
Web determinam o tipo de navegador que est solicitando a pgina e fornecem o
HTML apropriado.
Por exemplo, se o navegador solicitante der suporte a scripts do lado do cliente
(Windows Internet Explorer 8, por exemplo), os controles criaro scripts do lado
do cliente para implementar a funcionalidade deles. Caso contrrio, os controles
criaro cdigo do servidor e exigiro mais viagens de ida e volta para o servidor
obter a mesma funcionalidade.
Veja a seguir o script XHTML que voc escreveria para criar uma caixa de texto
com o texto padro Digite seu nome de usurio.
<asp:TextBox id="UsernameTextBox" runat="server" Width="238px"
Height="25px">Enter your Username</asp:TextBox>

Quando um usurio com Internet Explorer 8 acessar essa pgina, o CLR (Common
Language Runtime) criar o seguinte elemento HTML, que personalizado para o
Internet Explorer 8.
<input name="UsernameTextBox" type="text" value="Enter your Username"
id="UsernameTextBox" style="height:25px;width:238px;" />

Como o controle de servidor cria HTML personalizado para os recursos disponveis
no navegador do cliente, voc pode escrever cdigo para os navegadores mais
novos e no se preocupar com erros de navegador. Seu cdigo funcionar ainda
que os usurios no tenham as verses de navegador mais recentes.
Pergunta: Que atributo transforma um controle em um controle de servidor?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-17
Tiposdecontrolesdeservidor

Pontos principais
O ASP.NET tem disponveis muitos controles de servidor diferentes. Alguns deles
se parecem muito com os elementos HTML tradicionais, enquanto outros so
especficos do ASP.NET. A vasta gama de controles ajuda voc a personalizar o
Web Form para coincidir com o seu aplicativo.
Controles de servidor HTML
Por padro, os elementos HTML em um Web Form no esto disponveis no
servidor. Eles so tratados como texto sem formatao que passado pelo
navegador. Entretanto, possvel adicionar a controles de servidor HTML o
atributo runat="server" e o valor para converter elementos HTML. Isso transforma
os elementos HTML em elementos que voc pode programar usando cdigo do
servidor.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-18 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
A tabela a seguir lista alguns dos elementos HTML mais usados. Tanto os controles
de servidor HTML como os controles de servidor Web so renderizados como um
ou mais desses elementos.
Nomedo
elemento Descrio Exemplo
a Umelementode
ancoragemquevinculaa
outrapgina,imagemou
outrorecurso.
<a href="/Page2.aspx"
title="Go To Page 2.">Page 2</a>
br Umelementode
fechamentoautomtico
queadicionaumaquebra
delinhapgina.
<br />
img Oelementode
fechamentoautomtico
queincorporauma
imagemnapgina.
<img src="/login.png"
alt="Log in to web application."
/>
input Especificadiferentestipos
deelementosdeentrada,
comobotodeenvio,
caixadetexto,caixade
seleo,botodeopo,
controledeseleode
arquivosecontroleoculto.
<input type="text"
name="UserName">
select Criaummenudeseleo
compelomenosuma
opo.
<select size="3"
name="OptionList">
<option selected
value="Option1">
Option 1</option>
<option value="Option2">
Option 2</option>
<option value="Option3">
Option 3</option>
</select>
title Especificaottuloda
pgina.
<title>Login Page</title>
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-19
Controles de servidor Web
Os controles de servidor Web incluem controles de formulrio (como botes, listas
e caixas de texto) e controles com finalidade especial, como calendrios. Os controles
de servidor Web so mais abstratos que os controles de servidor HTML. Como o
modelo de objeto no reflete necessariamente a sintaxe HTML, os controles de
servidor Web so mais flexveis e avanados que os controles de servidor HTML.
Os controles de servidor Web so criados especificamente para ASP.NET. Ao
contrrio dos controles de servidor HTML, eles no funcionaro se o atributo
runat="server" estiver ausente.
Como os controles de servidor Web se baseiam em um modelo de objeto
comum, todos os controles compartilham vrios atributos, como asp: ControlType e
um atributo id. Os controles de servidor Web esto no namespace
System.Web.UI.WebControls e podem ser usados em qualquer Web Form.
Controles de servidor Web padro
Os controles padro contm dois grupos de controles: intrnsecos e complexos.
Controles intrnsecos. Correspondem aos elementos HTML simples, como
botes, listas e caixas de texto. Voc usa esses controles da mesma maneira
que os controles de servidor HTML.
Controles complexos. Podem ser controles que funcionam com dados
estticos e dinmicos, controles que atuam como contineres para outros
controles ou controles que possuem vrias funes. Um exemplo o controle
Calendrio, que fornece um calendrio de compromissos que ajuda um
usurio a selecionar uma data no formato correto.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-20 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Os controles de servidor Web padro intrnsecos correspondem a elementos
HTML simples. A tabela a seguir descreve alguns dos mais usados.
ControledeservidorWeb ControleHTMLequivalente
Funodocontrolede
servidorWeb
<asp:Button.../> <inputtype="submit"/> Criaumbotoqueenvia
umasolicitaoao
servidor.
<asp:CheckBox.../> <inputtype="checkbox"> Criaumacaixadeseleo
queousuriopode
selecionar.
<asp:HyperLink.../> <ahref=""/> Criaumhiperlinkparauma
marcadeancoragem
HTML.
<asp:Image.../> <imgsrc=""/> Criaumaimagem.
<asp:ImageButton.../> <inputtype="image"/> Criaumbotoque
incorporaaexibiode
umaimagem,emvezde
texto.
<asp:Label.../> <span></span> Criatextoqueosusurios
nopodemeditar.
<asp:ListBox.../> <selectsize="5">
</select>
Criaumalistadeopese
permitevriasselees.
<asp:Panel.../> <div></div> Criaumadivisosem
bordanoformulrioque
servecomocontinerpara
outroscontroles.
<asp:RadioButton.../> <inputtype="radio"> Criaumnicocontrolede
botodeopo.
<asp:Table.../> <table></table> Criaumatabela.
<asp:TextBox.../> <inputtype="text"/> Criaumcontroledecaixa
detexto.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-21
Os controles padro complexos inserem funes complexas no Web Form. A
tabela a seguir descreve alguns deles.
Controle Funo
AdRotator Exibeumasequnciaaleatriaoupredefinidadeimagens.
Calendar Exibeumcalendriogrficonoqualosusuriospodem
selecionardatas.
FileUpload Forneceaosusuriosumamaneiradeenviarumarquivoparao
servidor.
Wizard Fornecenavegaoeumainterfacedousurioparacoletar
dadosrelacionadosemvriasetapas.

Controles de dados
Controles de dados contm dois grupos de controles: controles associados a dados
e controles de fonte de dados.
Controles associados a dados. So usados para exibir dados de uma fonte de
dados.
Controles de fonte de dados. So usados como controle intermedirio entre
uma fonte de dados (como um banco de dados ou um arquivo XML) e um ou
mais controles de dados.


Observao:paraobtermaisinformaessobrecontrolesdedados,consulteoMdulo8,
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-22 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
A tabela a seguir descreve alguns dos controles associados a dados mais comuns.
Controle Funo
Chart PermitecriarpginasASP.NETcomgrficossimples,
intuitivosevisualmenteatraentes,paraanlisefinanceira
ouestatsticacomplexa.
DataList Exibelinhasdeinformaesdebancosdedadosemum
formatopersonalizvel.
DetailsView Exibeumanicalinhadedadosdeumafontededados
usandoumlayouttabular,noqualcadacampodelinha
exibidocomoumalinhaprpria.
FormView Exibeumanicalinhadedadosdeumafontededados
usandoumlayoutdefinidoporummodelo.
GridView Exibedadostabularesemumagrade.
ListView Exibedadosemumformatodefinidoporvoccomouso
demodeloseestilos.Suportaimplicitamenteasoperaes
Editar,InserireExcluir,almdasfuncionalidadesde
classificaoepaginao.Issotambmvlidocasoo
controlenoestejaassociadoaumafontededados.
QueryExtender Usadoparacriarfiltrosparadadosrecuperadosdeuma
fontededados.Ocontrolepodeserusadoparafiltrar
dadosnamarcaodeumapginadaWebpormeiode
umasintaxedeclarativa.
Repeater Exibeinformaesdeumconjuntodedadosusandoum
conjuntodecontroleseelementosHTMLespecificados
porvoc.OcontroleRepeaterrepeteoelementoumavez
paracadaregistronoconjuntodedados.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-23
A tabela a seguir descreve alguns dos controles de fonte de dados mais usados.
Controle Funo
AccessDataSource ConectadadosdeumbancodedadosdoMicrosoft
Accessparausocomcontrolesassociadosadados.
EntityDataSource RepresentaumEDM(ModelodeDadosdeEntidade)para
controlesassociadosadadosemumaplicativoASP.NET.
LinqDataSource Conectaadadosdeumbancodedadosoudeuma
coleodedadosemmemria(comoumamatriz)e
expeLINQ(consultaintegradalinguagem)para
desenvolvedoresdaWeb.
SiteMapDataSource Expedadosdenavegaorecuperadosdeumprovedor
demapadosite.
SqlDataSource Conectaadadoslocalizadosemumbancodedados
relacional,comooMicrosoftSQLServer.
XmlDataSource ConectaadadosemformatoXML,quersejam
hierrquicosoutabulares.


Observao:paraobtermaisinformaessobreLINQ,consulteoMdulo9,
GerenciamentodetarefasdeacessoadadosusandoLINQ.
Controles de validao
So controles ocultos que validam a entrada do usurio em relao a padres
predeterminados. Se a entrada do usurio no estiver de acordo com os requisitos,
ser exibida uma mensagem de erro.
Os controles de validao incorporam lgica que permite testar a entrada do
usurio. Para fazer isso, voc pode associar um controle de validao ao controle
de entrada e depois especificar as condies para a entrada do usurio vlida.

Observao:paraobtermaisinformaessobrecontrolesdevalidao,consulteo
Mdulo6,Validaodeentradadousurio.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-24 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
A tabela a seguir descreve os controles de validao.
Controle Funo
CompareValidator Exigequeaentradacorrespondaaumasegunda
entradaouaumcampoexistente.
CustomValidator Exigequeaentradacorrespondaaumacondio,
comonmerosprimosoumpares.
RangeValidator Exigequeaentradaestejadentrodeumintervalo
especificado.
RegularExpressionValidator Exigequeaentradacorrespondaaumformato
especfico,comoumnmerodetelefonenosEUA,
ouaumasenhaforteformadapornmerose
letras.
RequiredFieldValidator Exigequeousurioinsiraalgumvalorantesqueo
controlesejaprocessado.
ValidationSummary Coletatodasasmensagensdeerrodecontrolesde
validaoparaexibiocentralizada.

Controles de logon
Trabalham em conjunto para fornecer uma soluo de logon robusta que requer
pouco cdigo.

Observao:paraobtermaisinformaessobrecontrolesdelogon,consulteoMdulo15,
ProtegerumaplicativoWebMicrosoftASP.NET.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-25
A tabela a seguir descreve os controles Login.
Controle Funo
ChangePassword Permitequeosusuriosalteremasenhadosite.
CreateUserWizard Adicionaumnovousurioaosite.
Login Exibeumainterfacedeusurioparaautenticaodousurio
(comoascaixasdetextodenomedeusurioesenha)eum
botoLogon.
LoginName Exibeonomedelogondeumusurio,seconectado.
LoginStatus Exibeumlinkdelogonparausuriosquequeremse
conectareumlinkdelogoutparausuriosconectados.
LoginView Exibeinformaesdiferentesparausuriosannimose
usuriosconectados.
PasswordRecovery Usadopararecuperarsenhasdeusurio.

Controles de navegao
So usados para criar ajudas de navegao em pginas da Web ASP.NET, como
menus e trilhas. A tabela a seguir descreve os controles de navegao.
Controle Funo
Menu Dsuporteexibiodeummenuprincipaledesubmenus,
mastambmpermitedefinirmenusdinmicos.
SiteMapPath Exibeumcaminhodenavegao/trilhasquemostraolocalda
pginaatual.
TreeView Exibedadoshierrquicosemumaestruturadervore.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-26 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exemplo de controles equivalentes
O exemplo a seguir mostra o cdigo HTML para trs controles de boto: um boto
HTML, um boto de controle de servidor HTML e um boto de controle de
servidor Web. Os botes de controle tm aparncia idntica no navegador do
usurio. O boto HTML gera somente eventos do lado do cliente, enquanto o
boto de controle de servidor HTML e o boto de controle de servidor Web geram
eventos de servidor.
Veja a seguir um exemplo de controle de boto HTML.
<input type="button" value="HTML Button" />

A incluso do atributo runat="server" converte o controle de boto HTML
precedente em um controle de servidor HTML que ser executado no servidor.
Observe que, alm do atributo runat="server", preciso adicionar um atributo id
para que o controle funcione como controle de servidor.
Veja a seguir um exemplo de boto de controle de servidor HTML.
<input type="button" value="HTML Server Control" id="Button1"
runat="server" />

Veja a seguir um exemplo de boto de controle de servidor Web.
<asp:Button id="Button1" runat="server" Text="Web control" />

Pergunta: Que tipos de controle de servidor existem para ASP.NET?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-27
Salvaroestadodeexibio

Pontos principais
Uma das dificuldades nos sites salvar o estado dos controles (configuraes e
entrada do usurio) enquanto o HTML transmitido entre o cliente e o servidor.
verdade que para qualquer tecnologia baseada em HTTP, os Web Forms so sem
monitorao de estado por natureza, o que significa que o servidor no retm
informaes entre solicitaes de cliente.
Os Web Forms ASP.NET salvam o estado dos controles adicionando o controle
oculto __VIEWSTATE, que registra o estado dos controles no Web Form.
Especificamente, os Web Forms adicionam __VIEWSTATE ao elemento de
formulrio do servidor e apenas registram o estado dos controles nessa seo.
Como a pgina viaja entre o cliente e o servidor, o estado de controle do servidor
mantido na pgina e pode ser atualizado no lado do cliente ou do servidor na
transao.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-28 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
O estado de exibio o mtodo utilizado pela estrutura de pgina ASP.NET para
preservar valores de controle e pgina entre viagens de ida e volta. Quando a
marcao HTML da pgina renderizada, o estado atual da pgina e os valores a
serem retidos durante o postback so serializados em strings codificadas em
base 64. Esses valores so inseridos ento no campo oculto do estado de
exibio. Esse processo torna mais fcil para os controles de servidor reterem
automaticamente seus valores entre viagens de ida e volta do servidor, sem
nenhuma codificao. O estado de exibio s til dentro do mesmo Web Form
quando ele viaja entre o cliente e o servidor. No possvel usar o estado de
exibio entre diferentes Web Forms. Ele reduz a carga do servidor, mas pode
prejudicar o desempenho devido ao aumento de tamanho do HTML, o que
significa que leva mais tempo para renderizar a pgina no cliente.
Como o estado da pgina da Web mantido dentro do formulrio do servidor, a
pgina da Web pode ser roteada aleatoriamente em um farm de servidores Web e
pode no retornar para o mesmo servidor. A vantagem do processo do estado de
exibio que o programador pode se concentrar no design da pgina e no precisa
criar infraestrutura para acompanhar o estado da pgina.
Voc pode usar o estado de exibio para manter dados de aplicativo especficos
para uma nica pgina, como uma ID de produto ou de usurio. Tambm pode
us-lo em outros cenrios (por razes estatsticas, por exemplo, caso queira saber
quantas vezes um usurio faz postback da mesma pgina em sequncia no
servidor).
Desabilitao e habilitao do estado de exibio
Por padro, um Web Form salva o estado de exibio dos controles no Web Form.
Entretanto, para Web Forms com vrios controles, o tamanho do campo de valor
das propriedades de __VIEWSTATE pode afetar o desempenho. Para melhorar o
desempenho da pgina, convm desabilitar o atributo __VIEWSTATE no nvel de
pgina e habilitar o estado de exibio somente para controles selecionados.
Para desabilitar o estado de exibio no nvel de pgina da Web, defina o atributo
EnableViewState da diretiva Page como false. O cdigo a seguir demonstra isso.
<%@ Page EnableViewState="false" %>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-29
Para desabilitar o estado de exibio para um controle especfico, defina o atributo
EnableViewState do controle como false. O cdigo a seguir demonstra isso. Tenha
em mente que, se o atributo EnableViewState da diretiva Page estiver definido
como false, voc no poder substitu-lo por um controle individual nessa pgina.
<asp:ListBox id="ListBox1" EnableViewState="false" runat="server" />

Tambm possvel usar a propriedade ViewStateMode para controlar o modo
como o estado de exibio habilitado para controles individuais (por exemplo,
quando ele desabilitado para uma pgina).
<%@ Page ViewStateMode="Disabled" %>
...
<asp:ListBox id="ListBox1" " runat="server" ViewStateMode="Enabled" />

A propriedade ViewStateMode pode ser usada para habilitar o estado de exibio
para um controle individual mesmo que o estado de exibio esteja desabilitado
para a pgina (como mostra o exemplo de cdigo acima) ou para desabilit-lo
quando ele estiver habilitado para a pgina.
A propriedade ViewStateMode pode ser definida como um destes valores:
Valor Descrio
Inherit HerdaovalordapropriedadeViewStateModedapginaoudo
controlepai.
Enabled Habilitaoestadodeexibioparaessecontrolemesmoseocontrole
paitiveroestadodeexibiodesabilitado.
Disabled Desabilitaoestadodeexibioparaessecontrole,mesmoqueo
estadodeExibiodocontroleestejahabilitado.

Estado do controle
O estado do controle ASP.NET permite armazenar informaes especficas para o
controle e no pode ser desabilitado.
Os controles podem ter tanto estado de exibio como estado do controle. O
estado de exibio usado para manter o contedo do controle, enquanto o estado
do controle serve para manter o comportamento principal do controle. Para
controles que precisam repopular seu contedo toda vez que o usurio solicita
uma pgina (por exemplo, um controle que exibe uma grade de dados), possvel
desabilitar o estado de exibio, mas no o estado do controle.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-30 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Controle HiddenField
Voc pode usar o controle de servidor Web HiddenField como mtodo adicional
para armazenar um valor que queira manter em postagens no servidor. Voc usa a
propriedade Value para especificar o valor do controle e cria um manipulador de
eventos para o evento ValueChanged. Esse evento ser chamado toda vez que o
valor do controle for alterado entre postagens no servidor. O cdigo a seguir
mostra como declarar um controle HiddenField com o valor 1.
<asp:HiddenField id="HiddenField1" runat="server" value="1"/>
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-31
InclusoeconfiguraodecontrolesdeservidorHTML

Pontos principais
Os controles HTML em um Web Form no esto disponveis no servidor.
Convertendo controles HTML em controles de servidor HTML, voc poder exp-
los como elementos no cdigo do servidor. Essa converso permite usar os
controles para disparar eventos no servidor.
Os controles de servidor HTML incluem o atributo runat="server" e devem residir
em um elemento FORM contentor.
A vantagem dos controles de servidor HTML que eles ajudam a atualizar
rapidamente pginas existentes em Web Forms. Alm disso, voc pode otimizar o
desempenho de uma pgina determinando e ajustando os controles para que
funcionem localmente no navegador, mas sejam processados no servidor.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-32 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exemplo de controle de servidor HTML
Voc pode usar a operao arrastar-e-soltar para mover elementos HTML da guia
HTML da Toolbox para o Web Form. Voc poder ento configurar os controles
definindo as propriedades na janela correspondente.
O cdigo a seguir mostra um controle de caixa de texto HTML simples que
processado pelo navegador do lado do cliente.
<input id="Text1" type="text" />

O cdigo a seguir gerado quando voc usa a operao arrastar-e-soltar para
mover o controle da Toolbox para o Web Form.
<input id="Text1" type="text" />

A incluso do atributo runat="server" converte o elemento em um controle de
servidor HTML que processado no servidor pelo ASP.NET.
<input id="Text1" type="text" runat="server" />

Pergunta: Quais so os recursos oferecidos pelos controles de servidor HTML?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-33
InclusoeconfiguraodecontrolesdeservidorWeb

Incluso e configurao de controles de servidor Web


Para adicionar e configurar controles de servidor Web, voc precisa seguir estas
etapas:
1. Abra Visual Studio 2010 e, no menu File, clique em New Web Site.
2. No painel esquerdo, clique em Visual Basic.
3. No painel do meio, clique em ASP.NET Empty Web Site.
4. Na lista Web location, clique em File System. Na caixa de texto, digite
C:\WebSite1\SampleWebSite e clique em OK.
5. No Solution Explorer, clique com o boto direito do mouse no projeto de site
SampleWebSite e, em seguida, clique em Add New Item.
6. Na caixa de dilogo Add New Item, no painel intermedirio, clique em Web
Form na caixa Name, digite Default.aspx e clique em Add.
7. Na janela Default.aspx, clique em Design.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-34 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
8. Na janela Default.aspx, clique em Toolbox.
9. Na Toolbox, expanda Standard e clique duas vezes no controle TextBox.
10. Na janela Properties, altere o valor da propriedade (ID) para SampleTextBox e
o valor da propriedade Text para Sample.
11. Em Toolbox, expanda Standard e depois clique duas vezes no controle
Calendar.
12. Na janela Properties, altere o valor da propriedade (ID) para SampleCalendar.

Quando renderizado para o cliente, o controle TextBox tem a aparncia do
exemplo de cdigo a seguir.
<input name="SampleTextBox" type="text" value="Sample"
id="SampleTextBox" />

O cdigo anterior um exemplo de converso simples de um controle de servidor
TextBox para um elemento HTML INPUT do tipo text.
Pergunta: Quais so os recursos adicionais oferecidos pelos controles de servidor
Web?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-35
Discusso:Seleodocontroledeservidorapropriado

Pontos principais
Ao criar pginas ASP.NET, voc pode usar elementos HTML, controles de servidor
HTML ou controles de servidor Web. Tambm pode combinar esses tipos de controle
na mesma pgina para atualizar rapidamente uma pgina HTML.
Como exemplo de combinao de tipos de controle, sua pgina ASP.NET poderia
incluir: um elemento de extenso HTML que lista a hora local; um boto de
controle de servidor HTML convertido a partir de um elemento HTML; e uma
caixa de texto de controle de servidor Web que acessa dados do servidor.
Entretanto, a melhor prtica evitar controles de servidor HTML. Os controles de
servidor Web so mais capazes e tm um modelo de objeto mais aprimorado que
os controles de servidor HTML.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-36 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Controles de servidor HTML
Embora a melhor prtica seja evitar controles de servidor HTML e utilizar
controles de servidor Web em seu lugar, h ocasies em que os controles de
servidor HTML devem ser usados. Eles so elementos HTML modificados que so
executados no servidor, e no navegador do cliente.
Voc poderia usar os controles de servidor HTML nas seguintes situaes:
Voc prefere um modelo de objeto parecido com HTML. Os controles de
servidor HTML quase sempre tm o mesmo cdigo HTML que os controles
HTML bsicos.
Voc deseja trabalhar com pginas HTML existentes e quer adicionar
funcionalidade de Web Form rapidamente. Como os controles de servidor
HTML so mapeados exatamente para elementos HTML, voc no precisa
substituir controles e se arriscar a ter erros de substituio ou problemas de
formatao de pgina.
A largura de banda limitada e, para reduzir seu uso, voc precisa executar
uma grande quantidade de processamento no lado do cliente.

Controles de servidor Web
Os controle de servidor Web ASP.NET so semelhantes a controles HTML. Alm
disso, incluem vrios controles novos que no existem atualmente em HTML.
possvel usar controles de servidor Web nas seguintes situaes:
Voc prefere um modelo de programao orientado a objetos. Voc pode usar
programao orientada a objeto, identificar controles pelo respectivo atributo
ID e separar facilmente a lgica de pgina da interface do usurio. Usando
controles de servidor Web, voc tambm pode criar aplicativos com controles
aninhados e capturar eventos no nvel de continer.
Voc precisa criar uma pgina da Web que possa ser visualizada com vrios
navegadores. A lgica dentro dos controles de servidor Web capaz de criar
HTML adaptado aos recursos disponveis no navegador do cliente. Voc pode
escrever cdigo para os navegadores mais recentes sem se preocupar com erros
de navegador que poderiam impedir o acesso a todas as funes da pgina da
Web aos usurios que no tenham verses de navegador mais recentes.
Voc precisa de uma funcionalidade especfica, como um calendrio ou um
anncio, que esteja disponvel apenas como controle de servidor Web.
A largura de banda no limitada, e os ciclos de solicitao-resposta dos
controles de servidor Web no causaro problemas de largura de banda.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-37
Laboratrio:CriaodeumWebFormMicrosoft
ASP.NET


Observao:vocpodeexecutartarefasnestelaboratriousandoalinguagemde
programaoVisualBasicouVisualC#.SeestiverusandooVisualBasiccomolinguagem
deprogramao,consulteasetapasfornecidasnaSeo1dapginadolaboratrio.Se
estiverusandooVisualC#comolinguagemdeprogramao,consulteasetapas
fornecidasnaSeo2dapginadolaboratrio.
Introduo
Neste laboratrio, voc ir adicionar um Web Form a um aplicativo Web ASP.NET,
incluir controles de servidor no Web Form e configurar suas propriedades.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-38 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Objetivos
Depois de concluir este laboratrio, voc ser capaz de:
Criar um novo Web Form.
Aplicar uma folha de estilo ao Web Form.
Criar um layout estilo tabela no Web Form.
Adicionar um controle de servidor ao Web Form e configurar suas propriedades.
Aplicar estilos a controles de servidor e elementos HTML.

Configurao do laboratrio
Neste laboratrio, voc usar o ambiente de mquina virtual disponvel. Antes de
iniciar o laboratrio, voc deve:
Inicie a mquina virtual 10560A-GEN-DEV e depois faa logon usando as
seguintes credenciais:
Nome de usurio: Aluno
Senha: Pa$$w0rd

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-39
Cenriodelaboratrio

Voc trabalha como desenvolvedor na Contoso, Ltd, uma grande organizao que
possui uma base global de clientes. Ela utiliza aplicativos Microsoft .NET para criar,
personalizar e gerenciar as informaes dos clientes. Sua organizao criou um site
para gerenciar servios e dados de clientes no ASP.NET.
A Contoso, Ltd deseja criar um aplicativo para manter e atualizar as informaes
dos clientes. Voc precisa personalizar o aplicativo de forma a atender aos requisitos
especficos da equipe de vendas. A atualizao das informaes dos clientes um
processo contnuo para a equipe de vendas, e o aplicativo requer atualizaes com
base nos comentrios de desenvolvedores experientes e outros participantes. Voc
precisa criar uma interface do usurio que atenda aos requisitos definidos.
Use os controles de servidor do ASP.NET para criar um aplicativo e compilar uma
interface do usurio que seja fcil de atualizar e modificar.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-40 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Seo1:VisualBasic
Exerccio1:CriaodeumWebForm
Estas so as principais tarefas do exerccio:
1. Abrir um site ASP.NET existente.
2. Adicionar um Web Form ao site.

Tarefa1:AbrirumsiteASP.NETexistente
Faa logon em 10560A-GEN-DEV como Aluno, com a senha Pa$$w0rd.
Abra o Visual Studio 2010.
Abra a soluo CustomerManagement na pasta D:\Labfiles\Starter\M3\VB.

Tarefa2:AdicionarumWebFormaosite
Adicione o Web Form InsertCustomer.aspx ao site CustomerManagement
usando a caixa de dilogo Add New Item.

Resultados:depoisdeconcluiresteexerccio,vocterabertoosite
CustomerManagementexistenteeadicionadooWebFormInsertCustomer.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-41
Exerccio2:Inclusoeconfiguraodecontrolesde
servidoremumWebForm
Estas so as principais tarefas do exerccio:
1. Adicionar uma folha de estilos existente ao Web Form.
2. Criar um layout estilo tabela no Web Form.
3. Adicionar os controles de servidor ao Web Form e configurar suas
propriedades bsicas.
4. Definir as propriedades de controle no triviais.
5. Aplicar o estilo predefinido ao Web Form.


Observao:nesteexerccio,vocestcriandoumatabeladeduascolunasusandoa
CSSparaarmazenardiversoscontrolesusadosparaexibiregerenciardadosdeclientes.
Tarefa1:AdicionarumafolhadeestiloexistenteaoWebForm
Faa referncia ao arquivo Styles/Site.css no Web Form InsertCustomer,
relativo pasta raiz, usando a janela Manage Styles.
Pressione CTRL+S para salvar InsertCustomer.aspx.
Exiba os estilos adicionados folha de estilos usando a janela Manage Styles.

Tarefa2:CriarumlayoutestilotabelanoWebForm.
Na janela InsertCustomer.aspx, posicione o cursor entre as marcas div de
abertura e fechamento.
Adicione um novo elemento div da Toolbox ao elemento div existente.
<div>
<div>
</div>
</div>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-42 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Adicione dois novos elementos div da Toolbox ao elemento div recm-adicionado.
<div>
<div>
<div>
</div>
<div>
</div>
</div>
</div>

Salve as alteraes no Web Form InsertCustomer.
Use a janela Apply Styles para aplicar o estilo customerTable ao elemento div
externo. Aplique div.customerTable da seo Contextual Selectors da janela
Apply Styles.
Clique na marca de abertura do elemento div, que um elemento filho do
elemento div com valor do atributo class igual a customerTable.
Crie um novo estilo na janela Apply Styles usando o boto New Style.
Nomeie o novo estilo como div.customerTableRow usando a caixa Selector
da caixa de dilogo New Style.
Aplique o estilo seleo de texto atual usando a caixa de seleo Apply new
style to document selection.
Defina o novo estilo no arquivo CSS Styles/Site.css existente.
Defina o layout do novo estilo como table-row usando a lista de exibio da
categoria Layout e feche a caixa de dilogo New Style.
Use a janela Apply Styles para aplicar o estilo customerTableLeftCol ao
primeiro elemento filho div do elemento div com valor do atributo class igual
a customerTableRow.
Use a janela Apply Styles para aplicar o estilo customerTableRightCol ao
segundo elemento filho div do elemento div com valor do atributo class igual
a customerTableRow.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-43
Adicione mais 11 linhas de tabela copiando o elemento div existente com
valor do atributo class igual a customerTableRow.
<div class="customerTableRow">
<div class="customerTableLeftCol">
</div>
<div class="customerTableRightCol">
</div>
</div>

Acrescente um novo elemento div da Toolbox ao elemento div com valor do
atributo class igual a customerTable, posicionando o novo elemento div
imediatamente antes da marca div de fechamento do elemento div
customerTable.
<div class="customerTable">
<div class="customerTableRow">
<div class="customerTableLeftCol">
</div>
<div class="customerTableRightCol">
</div>
</div>
...
<div>
</div>
</div>

Exiba o Web Form InsertCustomer no modo Design.

Observao:observequeduascolunasdetamanhoigualseroadicionadasao
elementodiv.
Exiba o Web Form InsertCustomer no modo Source.
Use a janela Apply Styles para aplicar o estilo customerTableFooter ao ltimo
elemento filho div do elemento div com valor do atributo class igual a
customerTable.
Salve as alteraes no Web Form InsertCustomer e no arquivo Site.css.
Na janela CustomerManagement Microsoft Visual Studio (Administrator),
no menu File, clique em Save All.
Exiba o Web Form InsertCustomer em um navegador da Web.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-44 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

Observao:emboravoctenhaaplicadoestiloaoWebFormusandooarquivoCSS,
observequenadaexibido.Issoocorreporqueoselementosdivestovazios.
Tarefa3:AdicionaroscontrolesdeservidoraoWebFormeconfigurar
suaspropriedadesbsicas
Exiba o Web Form InsertCustomer no modo Design.
Adicione o controle Label da Toolbox primeira clula da coluna esquerda
no elemento div, altere a propriedade (ID) para CustomerFirstNameLabel e
defina a propriedade Text como First Name:.
Adicione o controle TextBox da Toolbox primeira clula da coluna direita no
elemento div e altere a propriedade (ID) para CustomerFirstNameTextBox.
Adicione o controle Label da Toolbox segunda clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerLastNameLabel e
depois defina a propriedade Text como Last Name:.
Adicione o controle TextBox da Toolbox segunda clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerLastNameTextBox.
Adicione o controle Label da Toolbox terceira clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerAddressLabel e depois
defina a propriedade Text como Address.
Adicione o controle TextBox da Toolbox terceira clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerAddressTextBox.
Adicione o controle Label da Toolbox quarta clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerZipCodeLabel e depois
defina a propriedade Text como Zip Code:.
Adicione o controle TextBox da Toolbox quarta clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerZipCodeTextBox.
Adicione o controle Label da Toolbox quinta clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerCityLabel e depois
defina a propriedade Text como City:.
Adicione o controle TextBox da Toolbox quinta clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerCityTextBox.
Adicione o controle Label da Toolbox sexta clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerStateLabel e depois
defina a propriedade Text como State:.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-45
Adicione o controle TextBox da Toolbox sexta clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerStateTextBox.
Adicione o controle Label da Toolbox stima clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerCountryLabel e depois
defina a propriedade Text como Country:.
Adicione o controle DropDownList da Toolbox stima clula da coluna
direita do elemento div e altere a propriedade (ID) para
CustomerCountryDropDownList.
Adicione o controle Label da Toolbox oitava clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerPhoneLabel e depois
defina a propriedade Text como Phone:.
Adicione o controle TextBox da Toolbox oitava clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerPhoneTextBox.
Adicione o controle Label da Toolbox nona clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerEmailAddressLabel e
depois defina a propriedade Text como Email Address:.
Adicione o controle TextBox da Toolbox nona clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerEmailAddressTextBox.
Adicione o controle Label da Toolbox dcima clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerWebAddressLabel e
depois defina a propriedade Text como Web Address:.
Adicione o controle TextBox da Toolbox dcima clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerWebAddressTextBox.
Adicione o controle Label da Toolbox dcima primeira clula da coluna
esquerda do elemento div, altere a propriedade (ID) para
CustomerCreditLimitLabel e depois defina a propriedade Text como Credit
Limit:.
Adicione o controle TextBox da Toolbox dcima primeira clula da coluna
direita do elemento div e altere a propriedade (ID) para
CustomerCreditLimitTextBox.
Adicione o controle Label da Toolbox dcima segunda clula da coluna
esquerda do elemento div, altere a propriedade (ID) para
CustomerNewsSubscriberLabel e depois defina a propriedade Text como
News Subscriber:.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-46 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Adicione o controle CheckBox da Toolbox dcima segunda clula da coluna
direita do elemento div e altere a propriedade (ID) para
CustomerNewsSubscriberCheckBox.
Salve as alteraes e visualize o Web Form InsertCustomer em um navegador
da Web.
Adicione o controle Button da Toolbox ao rodap da tabela no elemento div,
altere a propriedade (ID) para CustomerInsertButton e defina a propriedade
Text como Insert.
Adicione o controle Button da Toolbox ao rodap da tabela no elemento div,
altere a propriedade (ID) para CustomerCancelButton e defina a propriedade
Text como Cancel.
Salve as alteraes e visualize o Web Form InsertCustomer em um navegador
da Web.

Tarefa4:Definiraspropriedadesnotriviaisdecontrole
Defina a propriedade MaxLength dos controles CustomerFirstNameTextBox,
CustomerAddressTextBox e CustomerEmailAddressTextBox como 50.
Defina a propriedade MaxLength dos controles CustomerLastNameTextBox,
CustomerCityTextBox, CustomerStateTextBox e CustomerPhoneTextBox
como 30.
Defina a propriedade MaxLength dos controles CustomerZipCodeTextBox e
CustomerCreditLimitTextBox como 10.
Abra o Web Form InsertCustomer no modo Source.
Defina a propriedade MaxLength do controle CustomerWebAddressTextBox
como 80.
Salve as alteraes e visualize o Web Form InsertCustomer em um navegador
da Web.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-47
Tarefa5:AplicaroestilopredefinidoaoWebForm
Aplique o estilo do modelo predefinido ao elemento body do Web Form
InsertCustomer.
Salve as alteraes e visualize o Web Form InsertCustomer em um navegador
da Web.

Tarefa6:Desativaramquinavirtualereverterasalteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Resultados:Depoisdeconcluiresteexerccio,vocterprojetadoaversoinicialdo
WebFormInsertCustomerparaoseusite.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-48 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Seo2:VisualC#
Exerccio1:CriaodeumWebForm
Estas so as principais tarefas do exerccio:
1. Abrir um site ASP.NET existente.
2. Adicionar um Web Form ao site.

Tarefa1:AbrirumsiteASP.NETexistente
Faa logon na mquina virtual 10560A-GEN-DEV como Aluno, usando a
senha Pa$$w0rd.
Abra o Visual Studio 2010.
Abra a soluo CustomerManagement, localizada na pasta
D:\Labfiles\Starter\M3\CS.

Tarefa2:AdicionarumWebFormaosite
Adicione o Web Form InsertCustomer.aspx ao site CustomerManagement
usando a caixa de dilogo Add New Item.

Resultados:depoisdeconcluiresteexerccio,vocterabertoosite
CustomerManagementexistenteeadicionadooWebFormInsertCustomer.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-49
Exerccio2:Inclusoeconfiguraodecontrolesde
servidoremumWebForm
Estas so as principais tarefas do exerccio:
1. Adicionar uma folha de estilos existente ao Web Form.
2. Criar um layout estilo tabela no Web Form.
3. Adicionar os controles de servidor ao Web Form e configurar suas
propriedades bsicas.
4. Definir as propriedades de controle no triviais.
5. Aplicar o estilo predefinido ao Web Form.


Observao:nesteexerccio,vocestcriandoumatabeladeduascolunasusandoa
CSSparaarmazenardiversoscontrolesusadosparaexibiregerenciardadosdeclientes.
Tarefa1:AdicionarumafolhadeestiloexistenteaoWebForm
Faa referncia ao arquivo Styles/Site.css no Web Form InsertCustomer,
relativo pasta raiz, usando a janela Manage Styles.
Pressione CTRL+S para salvar InsertCustomer.aspx.
Exiba os estilos adicionados folha de estilos usando a janela Manage Styles.

Tarefa2:CriarumlayoutestilotabelanoWebForm.
Na janela InsertCustomer.aspx, posicione o cursor entre as marcas div de
abertura e fechamento.
Adicione um novo elemento div da Toolbox ao elemento div existente.
<div>
<div>
</div>
</div>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-50 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Adicione dois novos elementos div da Toolbox ao elemento div recm-adicionado.
<div>
<div>
<div>
</div>
<div>
</div>
</div>
</div>

Salve as alteraes no Web Form InsertCustomer.
Use a janela Apply Styles para aplicar o estilo customerTable ao elemento div
externo. Aplique div.customerTable da seo Contextual Selectors da janela
Apply Styles.
Clique na marca de abertura do elemento div, que um elemento filho do
elemento div com valor do atributo class igual a customerTable.
Crie um novo estilo na janela Apply Styles usando o boto New Style.
Nomeie o novo estilo como div.customerTableRow usando a caixa Selector
da caixa de dilogo New Style.
Aplique o estilo seleo de texto atual usando a caixa de seleo Apply new
style to document selection.
Defina o novo estilo no arquivo CSS Styles/Site.css existente.
Defina o layout do novo estilo como table-row usando a lista de exibio da
categoria Layout e feche a caixa de dilogo New Style.
Use a janela Apply Styles para aplicar o estilo customerTableLeftCol ao
primeiro elemento filho div do elemento div com valor do atributo class igual
a customerTableRow.
Use a janela Apply Styles para aplicar o estilo customerTableRightCol ao
segundo elemento filho div do elemento div com valor do atributo class igual
a customerTableRow.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-51

Adicione mais 11 linhas de tabela copiando o elemento div existente com
valor do atributo class igual a customerTableRow.
<div class="customerTableRow">
<div class="customerTableLeftCol">
</div>
<div class="customerTableRightCol">
</div>
</div>

Acrescente um novo elemento div da Toolbox ao elemento div com valor do
atributo class igual a customerTable, posicionando o novo elemento div
imediatamente antes da marca div de fechamento do elemento div
customerTable.
<div class="customerTable">
<div class="customerTableRow">
<div class="customerTableLeftCol">
</div>
<div class="customerTableRightCol">
</div>
</div>
...
<div>
</div>
</div>

Exiba o Web Form InsertCustomer no modo Design.

Observao:observequeduascolunasdetamanhoigualseroadicionadasao
elementodiv.
Exiba o Web Form InsertCustomer no modo Source.
Use a janela Apply Styles para aplicar o estilo customerTableFooter ao ltimo
elemento filho div do elemento div com valor do atributo class igual a
customerTable.
Salve as alteraes no Web Form InsertCustomer e no arquivo de folha de
estilo Site.css.
Exiba o Web Form InsertCustomer em um navegador da Web.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-52 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

Observao:emboravoctenhaaplicadoestiloaoWebFormusandooarquivoCSS,
observequenadaexibido.Issoocorreporqueoselementosdivestovazios.
Tarefa3:AdicionaroscontrolesdeservidoraoWebFormeconfigurar
suaspropriedadesbsicas
Exiba o Web Form InsertCustomer no modo Design.
Adicione o controle Label da Toolbox primeira clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerFirstNameLabel e
depois defina a propriedade Text como First Name:.
Adicione o controle TextBox da Toolbox primeira clula da coluna direita no
elemento div e altere a propriedade (ID) para CustomerFirstNameTextBox.
Adicione o controle Label da Toolbox segunda clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerLastNameLabel e
depois defina a propriedade Text como Last Name:.
Adicione o controle TextBox da Toolbox segunda clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerLastNameTextBox.
Adicione o controle Label da Toolbox terceira clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerAddressLabel e depois
defina a propriedade Text como Address.
Adicione o controle TextBox da Toolbox terceira clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerAddressTextBox.
Adicione o controle Label da Toolbox quarta clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerZipCodeLabel e depois
defina a propriedade Text como Zip Code:.
Adicione o controle TextBox da Toolbox quarta clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerZipCodeTextBox.
Adicione o controle Label da Toolbox quinta clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerCityLabel e depois
defina a propriedade Text como City:.
Adicione o controle TextBox da Toolbox quinta clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerCityTextBox.
Adicione o controle Label da Toolbox sexta clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerStateLabel e depois
defina a propriedade Text como State:.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-53
Adicione o controle TextBox da Toolbox sexta clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerStateTextBox.
Adicione o controle Label da Toolbox stima clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerCountryLabel e depois
defina a propriedade Text como Country:.
Adicione o controle DropDownList da Toolbox stima clula da coluna
direita do elemento div e altere a propriedade (ID) para
CustomerCountryDropDownList.
Adicione o controle Label da Toolbox oitava clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerPhoneLabel e depois
defina a propriedade Text como Phone:.
Adicione o controle TextBox da Toolbox oitava clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerPhoneTextBox.
Adicione o controle Label da Toolbox nona clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerEmailAddressLabel e
depois defina a propriedade Text como Email Address:.
Adicione o controle TextBox da Toolbox nona clula da coluna direita do
elemento div e altere a propriedade (ID) para
CustomerEmailAddressTextBox.
Adicione o controle Label da Toolbox dcima clula da coluna esquerda do
elemento div, altere a propriedade (ID) para CustomerWebAddressLabel e
depois defina a propriedade Text como Web Address:.
Adicione o controle TextBox da Toolbox dcima clula da coluna direita do
elemento div e altere a propriedade (ID) para CustomerWebAddressTextBox.
Adicione o controle Label da Toolbox dcima primeira clula da coluna
esquerda do elemento div, altere a propriedade (ID) para
CustomerCreditLimitLabel e depois defina a propriedade Text como Credit
Limit:.
Adicione o controle TextBox da Toolbox dcima primeira clula da coluna
direita do elemento div e altere a propriedade (ID) para
CustomerCreditLimitTextBox.
Adicione o controle Label da Toolbox dcima segunda clula da coluna
esquerda do elemento div, altere a propriedade (ID) para
CustomerNewsSubscriberLabel e depois defina a propriedade Text como
News Subscriber:.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-54 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Adicione o controle CheckBox da Toolbox dcima segunda clula da coluna
direita do elemento div e altere a propriedade (ID) para
CustomerNewsSubscriberCheckBox.
Salve as alteraes e visualize o Web Form InsertCustomer em um navegador
da Web.
Adicione o controle Button da Toolbox ao rodap da tabela no elemento div,
altere a propriedade (ID) para CustomerInsertButton e defina a propriedade
Text como Insert.
Adicione o controle Button da Toolbox ao rodap da tabela no elemento div,
altere a propriedade (ID) para CustomerCancelButton e defina a propriedade
Text como Cancel.
Salve as alteraes e visualize o Web Form InsertCustomer em um navegador
da Web.

Tarefa4:Definiraspropriedadesnotriviaisdecontrole
Defina a propriedade MaxLength dos controles CustomerFirstNameTextBox,
CustomerAddressTextBox e CustomerEmailAddressTextBox como 50.
Defina a propriedade MaxLength dos controles CustomerLastNameTextBox,
CustomerCityTextBox, CustomerStateTextBox e CustomerPhoneTextBox
como 30.
Defina a propriedade MaxLength dos controles CustomerZipCodeTextBox e
CustomerCreditLimitTextBox como 10.
Abra o Web Form InsertCustomer no modo Source.
Defina a propriedade MaxLength do controle CustomerWebAddressTextBox
como 80.
Salve as alteraes e visualize o Web Form InsertCustomer em um navegador
da Web.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-55
Tarefa5:AplicaroestilopredefinidoaoWebForm
Aplique o estilo do modelo predefinido ao elemento body do Web Form
InsertCustomer.
Salve as alteraes e visualize o Web Form InsertCustomer em um navegador
da Web.

Tarefa6:Desativaramquinavirtualereverterasalteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Resultados:Depoisdeconcluiresteexerccio,vocterprojetadoaversoinicialdo
WebFormInsertCustomerparaoseusite.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-56 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Revisodolaboratrio

1. Quais so as vantagens dos controles de Web Form?


2. Que tipos de controle de servidor Web so usados no laboratrio?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
CriaodeumWebFormMicrosoftASP.NET 3-57
Revisodomduloeinformaes
complementares

Perguntas e respostas de reviso


1. Como voc pode verificar se uma pgina da Web com uma extenso .aspx em
um site ASP.NET um Web Form?
2. Como voc pode verificar se uma pgina da Web com uma extenso .aspx
contm controles de servidor Web ASP.NET intrnsecos?
3. Que tipo de marcao ou script gerado por um controle de servidor Web no
cliente?
Um controle de servidor Web gera HTML e JavaScript, se o servidor Web

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
3-58 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Problemas e cenrios do mundo real
1. Voc deseja adicionar ao aplicativo Web uma pgina com a qual possa
trabalhar usando cdigo do servidor. Qual a maneira mais fcil de
implement-lo?
Voc adiciona um novo item usando o modelo de item de Web Form.
2. Voc deseja adicionar um ttulo a um Web Form. Qual a maneira mais fcil
de implement-lo?
Voc especifica um valor para o atributo title da diretiva Page.

Prticas recomendadas
Os Web Forms devem expor um ttulo de pgina que seja exibido como a
legenda do navegador, e na guia se a sesso do seu navegador for com guias.
Isso facilita a identificao de uma determinada pgina pelos usurios.
Sempre use o controle de servidor Web apropriado para a tarefa (por exemplo,
um controle Label em vez de um controle TextBox) para exibir texto somente
leitura.
Siga uma conveno de nomenclatura ao nomear elementos HTML e controles
de servidor Web. Neste curso, uma conveno de nomenclatura consiste no
que o controle ou o elemento contm e vem acompanhada do sufixo referente
ao tipo de controle usado, como FirstNameTextBox para um controle
TextBox que expe o nome de uma pessoa. Dessa forma, tambm possvel
ter um controle Label FirstNameLabel que indique ao usurio o que o
controle TextBox contm. Em geral, todos os elementos HTML e controles de
servidor Web devem receber um nome ou uma ID, pois pode ser necessrio
fazer referncia aos controles a partir de outros controles ou a partir de cdigo
do lado do cliente ou do servidor.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-1
Mdulo4
InclusodefuncionalidadeemumWebForm
MicrosoftASP.NET
Contedo:
Lio1:Comotrabalharcomarquivoscode-behind 4-4
Lio2:Manipulaodeeventosdecontroledoservidor 4-14
Lio3:CriaodeclassesecomponentesusandooVisualStudio2010 4-37
Lio4:Tratamentodeeventosdepgina 4-61
Laboratrio:InclusodefuncionalidadeemumWebForm
MicrosoftASP.NET 4-72

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-2 Introduo
Visoge
Voc po
vrios m
embutid
adio d
Manipu
por exe
clicado.
so disp
Para cri
ciclo de
vida se
voc pre
de estad

aoDesenvolvimentonaW
eraldom
ode adicionar cd
mtodos com bas
do e misto, o uso
de cdigo a Web
uladores de event
mplo, quando um
Em geral, os ma
parados pela int
iar manipulador
e vida da pgina. V
desenvolver cont
ecisar inicializar c
do de Exibio e
WebcomoMicrosoftV
mdulo
digo ao seu aplica
e em suas necess
de arquivos cod
Forms no Micro
tos so procedime
ma pgina carre
anipuladores de e
erao com o us
es de eventos co
Voc tambm dev
troles personaliza
controles, preenc
executar um cd

VisualStudio2010
ativo Web Micros
sidades. Embora s
e-behind o mt
soft Visual Stud
entos que manip
egada no servidor
eventos de contro
surio e do func
om eficincia, n
ver estar familia
ados. Isso se aplic
cher propriedade
digo de comportam
soft ASP.NET us
seja possvel usar
todo preferencial
dio 2010.
ulam um evento,
r ou quando um
oles de servidores
cionalidade ao ap
necessrio compr
arizado com esse
car especificame
s de controle com
mento de control

sando
r cdigo
para a
, como,
boto
s Web
plicativo.
reender o
ciclo de
ente se
m dados
le.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-3
O cdigo discutido neste mdulo totalmente baseado em servidor. Isso significa
que ele executado no servidor, e todo o seu processamento ocorre antes que uma
pgina solicitada seja retornada ao cliente. Isso tambm se aplicar mesmo quando
alguns controles do servidor emitirem automaticamente cdigo do lado do cliente
de modo que um usurio possa interagir com o controle no cliente, sem uma
viagem de ida e volta ao servidor.
Neste mdulo, voc conhecer os diversos mtodos para adicionar cdigo ao seu
aplicativo Web ASP.NET. Voc tambm aprender a usar controles de servidor
Web, manipuladores de eventos, arquivos code-behind e componentes. Finalmente,
voc aprender a usar eventos de pgina, especialmente o evento OnLoad, que
manipulado pelo manipulador de eventos Page_Load.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-4 Introduo
Lio1
Comotra
Voc po
conted
de scrip
cdigo e
contm
Nesta li
com o V
Objetiv
Depois
Des
Des
Des
Exp
For
aoDesenvolvimentonaW
abalharc
ode adicionar cd
do Web. Tambm
pt separada ou em
em sees separa
a lgica de progr
o, voc aprend
Visual Studio 201
vos da lio
de concluir esta l
screver os mtod
screver a diferen
screver arquivos c
plicar como usar
rms.
WebcomoMicrosoftV
comarqu
digo misto ao seu
m pode adicionar
m um arquivo sep
adas de um nico
ramao de uma
der sobre os trs
10, bem como as
lio, voc ser ca
os usados para a
a entre cdigo m
code-behind.
arquivos code-be
VisualStudio2010
uivoscode
u Web Form no m
cdigo no mesm
parado. O cdigo
o arquivo .aspx. O
nica pgina da
mtodos usados
diferenas entre
apaz de:
dicionar cdigo.
misto e cdigo em
ehind para adicio
e-behind
mesmo arquivo qu
mo arquivo em um
embutido usa H
Os arquivos code-
Web.
s para adicionar c
esses mtodos.
mbutido.
onar funcionalida
d

ue o
ma seo
TML e
-behind
cdigo
de a Web
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Mto
Pontos
Voc po
Cd
mis
Cd
sep
Cod
mar
o V
arq

dosparaaim
s principais
ode adicionar cd
digo misto. O cd
sturado com marc
digo embutido. O
parados do mesm
de-behind. O cd
rcao. O arquivo
Visual Studio 2010
quivo code-behind
Inclusodefunc
mplementa
digo ao seu Web
digo colocado n
cao.
O cdigo coloca
mo arquivo que o c
digo colocado em
o fonte chamad
0, o mtodo padr
d.

ionalidadeemumWebF
odecdig
Form das trs ma
no mesmo arquiv
ado em um ou ma
contedo de mar
m um arquivo di
do arquivo code-b
ro colocar todo
FormMicrosoftASP.NE
o
aneiras a seguir:
vo que o conted
ais elementos de
rcao.
ferente do conte
behind. Quando v
o o cdigo em um
T 4-5

o Web,
script
do de
voc usa
m
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-6 Introduo
Cdig
Cdigo
O cdig
alguns d
de cdig
Cdigo
Embora
Studio 2
utilizam
Quando
encontr
permi
podem
o cdigo
tornar
mesmo

aoDesenvolvimentonaW
gomistoeem
o misto
go misto tambm
desenvolvedores u
go de misto pode
o embutido
a o mtodo padr
2010 seja usar um
m cdigo embutid
o cdigo embutid
ram-se em sees
itir maior clareza.
existir em qualqu
o da marcao, am
difcil para dois d
tempo.
WebcomoMicrosoftV
mbutido
conhecido com
usem cdigo misto
em ser de difcil l
o para a implem
m arquivo code-b
do.
do usado para u
separadas de um
. Entretanto, func
uer local da pgin
mbos ainda estar
desenvolvedores

VisualStudio2010
mo blocos de cdig
o, isso deve ser ev
eitura e manuten
entao de cdig
behind, voc pode
uma pgina da W
arquivo .aspx. O
cionalmente, o c
na. Mesmo que o
ro misturados n
trabalharem na m
go incorporados.
vitado porque os a
no.
go do servidor no
er encontrar pg
Web, a marcao e
objetivo dessa se
digo e a marca
o cdigo embutid
o mesmo arquivo
marcao e no c

Embora
arquivos
o Visual
ginas que
o cdigo
eparao
o HTML
o separe
o, o que
digo ao
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-7
Estes so alguns exemplos de cdigo embutido.
[Visual Basic]
<html xmlns="http://www.w3.org/1999/xhtml">
...
<asp:Button ID="Button1" runat="server" Text="Button" />
...
</html>
<script Language="VB" runat="server">
Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles Button1.Click
...
End Sub
</script>

[Visual C#]
<html xmlns="http://www.w3.org/1999/xhtml">
...
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click"
Text="Button" />
...
</html>

<script Language="C#" runat="server">
private void Button1_Click(object sender, System.EventArgs e)
{
...
}
</script>

Pergunta: Como possvel usar o mesmo mtodo no Visual Basic e no Visual C#,
embora o processo de wiring do evento OnClick seja diferente nas duas
linguagens?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-8 Introduo
Arqui
Pontos
O mto
2010 u
program
A separa
enquan
Os arqu
Cada W
Por pad
qual est
ou .aspx
Form1.a
ou um a

aoDesenvolvimentonaW
voscode-be
s principais
do padro para a
usar arquivos cod
mao mantida
ao da lgica e d
to os designers d
uivos code-behind
Web Form em um
dro, um arquivo
t associado. No e
x.cs, dependendo
aspx ter um arq
arquivo code-beh
WebcomoMicrosoftV
ehind
a implementao
de-behind. Quan
em um arquivo d
do design permite
da interface do us
d contm a lgica
aplicativo Web p
code-behind pos
entanto, o arquiv
o da linguagem n
quivo code-behind
hind chamado Fo

VisualStudio2010
de cdigo do ser
ndo esses arquivo
diferente dos elem
e que voc trabalh
surio trabalham
a de programao
possui o seu prp
ssui o mesmo nom
vo code-behind te
nele usada. Por ex
d chamado Form
rm1.aspx.vb no V
rvidor no Visual S
s so usados, a l
mentos visuais da
he no arquivo cod
na pgina ASP.N
o de um nico W
prio arquivo code
me que o Web Fo
er a extenso .as
xemplo, o Web Fo
m1.aspx.cs no Visu
Visual Basic.

Studio
gica de
a pgina.
de-behind
NET.
Web Form.
e-behind.
orm ao
spx.vb
orm
ual C#
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-9
Com arquivos code-behind, tambm possvel implementar uma classe em dois
ou mais arquivos de cdigo separados usando a palavra-chave Partial/partial. O
cdigo a seguir mostra como usar a palavra-chave Partial/partial para trabalhar
com classes parciais.
[Visual Basic]
Partial Public Class _Default

[Visual C#]
public partial class _Default

Observao:umarquivocode-behindspodercontercdigoemumanicalinguagem.
NoserpossvelmisturarVisualC#eVisualBasicnomesmoarquivocode-behind.Entretanto,
vocpodermisturarWebFormsearquivosdediferenteslinguagensnomesmosite.
O arquivo code-behind o mtodo padro usado para escrever cdigo para Web
Forms ASP.NET. Ele tambm o mtodo preferencial de muitos desenvolvedores
(se no da maioria deles). Geralmente um arquivo code-behind contm uma nica
classe, sendo que o nome do Web Form usado como o nome da classe. O cdigo
a seguir mostra o Web Form Default (Default.aspx), onde o nome da classe
_Default.
[Visual Basic]
Partial Class _Default
Inherits System.Web.UI.Page

End Class

[Visual C#]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
}
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-10 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Todo o contedo dos arquivos code-behind Default.aspx.vb e Default.aspx.cs foi
mostrado, e no apenas a definio da classe. Entretanto, h uma diferena no
cdigo gerado para o Visual Basic e o Visual C#. O Visual Basic no adiciona os
namespaces usados para um Web Form, pois eles so referenciados ou importados
automaticamente por meio das configuraes de projeto. O Visual C# tambm
adiciona o mtodo de manipulador de eventos para o evento Page.OnLoad porque
mais difcil adicionar esse cdigo manualmente nessa linguagem do que no
Visual Basic. Esse manipulador de eventos usado na maioria dos Web Forms.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Usod
Pontos
Para qu
adequad
arquivo
navegad
Cada p
o arquiv
execu
2010 qu
(just in

dearquivosc
s principais
ue os Web Forms
da, cada pgina .a
deve ser compila
dor do cliente qu
gina do Web Fo
vo code-behind
tado. O Web For
uando voc cria o
time) quando o u
Inclusodefunc
code-behind
baseados em arq
aspx deve estar a
ado antes de as in
e solicitou a pgi
rm consiste em d
que formam um
rm code-behind p
o projeto do aplic
usurio acessa a p

ionalidadeemumWebF

quivos code-behin
associada a um ar
nformaes serem
ina.
dois arquivos sep
ma nica unidade
pode ser pr-com
cativo Web ou co
pgina pela prim
FormMicrosoftASP.NE
nd funcionem de
rquivo code-behin
m retornadas ao
parados a pgin
quando o aplica
pilado pelo Visua
mpilado pelo m
meira vez.
T 4-11

e forma
nd, e esse
na .aspx e
ativo Web
al Studio
todo JIT
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-12 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Vinculao de arquivos .aspx e code-behind
O arquivo .aspx deve estar associado ao arquivo code-behind. Para fazer isso, o Visual
Studio 2010 adiciona os trs atributos a seguir diretiva Page da pgina .aspx:
CodeBehind. Esse atributo especifica o nome do arquivo compilado que
contm a classe associada pgina. CodeBehind usado com Web Forms em
um projeto de aplicativo Web (WAP).
CodeFile. Este atributo especifica um caminho para o arquivo code-behind
referenciado relativo a uma pgina do Web Form. Ele usado junto com o
atributo Inherits para associar um arquivo code-behind a uma pgina da Web.
CodeFile usado com Web Forms em um WSP (Web Site project).
Inherits. Este atributo permite que a pgina .aspx herde uma classe do arquivo
code-behind. O atributo Inherits define uma classe code-behind a ser herdada pela
pgina. Ela poder ser qualquer classe derivada da classe Page. usado com o
atributo CodeFile, que contm o caminho para o arquivo code-behind da classe.

Observao:oatributoInheritsdiferenciamaisculasdeminsculasnoVisualC#,mas
nonoVisualBasic.
Alm dos trs atributos mencionados, o atributo AutoEventWireup indica se o
autowiring de eventos de pgina est habilitado para uma pgina do Web Forms.

Observao: noVisualC#,oatributoAutoEventWireUpdefinidocomotruepor
padro.Odesignergeraautomaticamenteumcdigoparaassociaroseventosaos
respectivosmtodosdemanipuladordeeventos.NoVisualBasic,esseatributo
definidocomofalseporpadro.Parafazeressaassociaodeeventos,odesignerusaa
instruoHandlesnadeclaraodomtododomanipuladordeeventos.
O cdigo a seguir mostra a diretiva Page referente a um Web Form chamado
Default.aspx.
[Visual Basic]
<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default.aspx.vb" Inherits="_Default" %>

[Visual C#]
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-13
Compilao e implantao
O Visual Studio 2010 oferece suporte a dois tipos de projetos de aplicativo Web:
WAP e WSP. Ambos oferecem tipos diferentes de compilao.
WAP. Durante a criao do projeto, o cdigo compilado em MSIL (Microsoft
intermediate language) e est contido em um nico assembly, que
geralmente colocado na subpasta Bin da pasta do projeto. Isso permite
implantar facilmente apenas a marcao e o assembly compilado. Aps a
primeira solicitao do aplicativo, o assembly compilado copiado para a
pasta de arquivos ASP.NET temporrios, onde compilado pelo mtodo JIT
em um cdigo binrio que pode ser executado pelo sistema operacional. Isso
ocasiona um ligeiro atraso na resposta da primeira solicitao em relao s
solicitaes subsequentes.
WSP. Por padro, um site ASP.NET no pr-compilado. Em vez disso, o
ASP.NET compila o site na primeira vez que uma pgina solicitada. Esse
procedimento tambm conhecido como compilao in-loco. O aplicativo
compilado em um ou mais assemblies na pasta de arquivos ASP.NET
temporrios quando h a primeira solicitao. A implantao de um site
ASP.NET conveniente, pois permite que voc faa modificaes em um Web
Form ou em um arquivo code-behind e implante o Web Form no servidor sem
compilar o cdigo-fonte.

Pr-compilao
Voc pode pr-compilar um projeto de site ASP.NET em um ou mais assemblies
que podem ser implantados, em vez de implantar o cdigo-fonte real. Para fazer
isso, use a opo Publish Web Site no menu Build ou clique com o boto direito
do mouse no site no Solution Explorer e, em seguida, clique em Publish Web Site.

Paraobtermaisinformaessobreaimplantaodesites,consulteo
Mdulo14,ConfiguraoeimplantaodeumaplicativoWeb
MicrosoftASP.NET.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-14 Introduo
Lio2
Manipula
Os man
um Web
servidor
no com
servido
process
do lado
servidor
Ao dese
eventos
precisar
manipu
para seu
manipu

aoDesenvolvimentonaW
aodee
nipuladores de ev
b Form. H dois
r. Os manipulado
mputador que sol
r exigem que as
amento e geralm
do cliente, espec
r, como um banc
envolver seus apli
s do lado do clie
r saber as vanta
uladores de event
us aplicativos ASP
uladores de event
WebcomoMicrosoftV
eventosd
ventos o ajudam a
tipos de manipul
ores de eventos do
licita o Web Form
informaes sej
mente so mais efi
cialmente no que
co de dados.
icativos ASP.NET
nte e do servido
agens e as desvan
os, a fim de pode
P.NET. Voc tam
os a controles de

VisualStudio2010
decontrol
a tratar das intera
ladores de evento
o lado do cliente s
m. Os manipulad
am enviadas ao
cientes que os m
e diz respeito ao a
T, voc precisar u
or de forma adeq
ntagens de usar
er determinar o ti
bm precisar sa
e servidor Web.
ledoserv
aes com o usu
os: do lado do cli
so eventos manip
dores de eventos
servidor Web pa
manipuladores de
acesso a recursos
usar manipulado
quada. Para isso,
esses dois tipos
ipo de evento ade
aber como adicion
vidor

rio em
iente e do
pulados
s do
ara
eventos
do
ores de
voc
de
equado
nar
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-15
Objetivos da lio
Depois de concluir esta lio, voc ser capaz de:
Descrever manipuladores de eventos.
Descrever manipuladores de eventos do lado do cliente.
Descrever manipuladores de eventos do servidor.
Explicar como os manipuladores de eventos do lado do cliente e do servidor
so processados.
Descrever o processo de criao de manipuladores de eventos do servidor.
Explicar como criar manipuladores de eventos do servidor.
Trabalhar com controles de servidor Web usando manipuladores de eventos.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-16 Introduo
Oque
Pontos
Os Web
usurio
disparad
platafor
vezes, e
fecha o
aplicativ
ao no
Ao inter
aplicativ
Um man
ao even
porque
linear. O
o aplicat
Se um u
cancelam
aoDesenvolvimentonaW
esomanipu
s principais
b Forms dinmico
. Voc pode usar
dos pela intera
rma de desenvolv
xpem eventos. E
aplicativo, clica e
vo. Quando um e
aplicativo; para i
ragir com um We
vo Web para exec
nipulador de eve
to acionado. Os W
os eventos no o
Os eventos o ajud
tivo execute uma
usurio cancelar e
mento que instru
WebcomoMicrosoftV
uladoresde
os e interativos re
manipuladores d
o com o usurio
vimento orientada
Esses eventos so
em um boto ou p
evento acionado
sso, necessrio
eb Form, o usuri
cutar as tarefas ap
entos contm o c
Web Forms so or
ocorrem na ordem
dam a separar tare
tarefa de classifica
essa tarefa, o apli
ua o processo de
VisualStudio2010
eventos?
espondem a even
de eventos para m
em um Web For
a a objeto, e os ob
o disparados qua
posiciona o pont
o, ele no dispara
escrever o cdigo
io aciona um eve
propriadas quand
digo com a ao
rientados a event
m esperada para o
efas. Por exemplo
ao separadamen
icativo podercap
classificao a se
ntos ou a entrada
manipular os even
rm. O ASP.NET
bjetos, na maioria
ando um usurio
teiro sobre um lin
a automaticamen
o para manipular o
nto. Voc precisa
do um evento a
o que ocorre em r
os, embora indire
o seu processame
o, voc pode fazer
nte do aplicativo p
pturar um evento
r interrompido.

s do
ntos
uma
a das
inicia ou
nk no
te uma
o evento.
a criar o
acionado.
resposta
etamente,
ento
com que
principal.
de
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-17
Exemplos de manipulador de eventos
Vrios Web Forms permitem que o usurio insira informaes e clique no boto
Submit, o que gera um evento. Um manipulador de eventos criado para esse
evento de clique poder enviar as informaes do usurio para um banco de dados
do Microsoft SQL Server, carregar um arquivo no servidor Web ou simplesmente
redirecionar o usurio para outra pgina. Estes so alguns exemplos de cdigos de
manipulares de eventos.
[Visual Basic]
<html>
...
<body>
<form runat="server">
...
<asp:Button ID="Button1" Text="Home" runat="server"/>
...
</form>
</body>
</html>

''' <summary>
''' Redirects to home page
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
' Redirect to home page
Response.Redirect("~/Default.aspx")
End Sub

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-18 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

[Visual C#]
<html>
...
<body>
<form runat="server">
...
<asp:Button ID="Button1" Text="Home" OnClick="Button1_Click"
runat="server"/>
...
</form>
</body>
</html>

/// <summary>
/// Redirects to home page
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
// Redirect to home page
Response.Redirect("~/Default.aspx");
}

Pergunta: Como os tipos de eventos so classificados para o ASP.NET?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Oque
Pontos
H dois
manipu
comput
informa
interpre
Os man
HTML.
servidor
sempr
manipu
Servido
onmou

esomanipu
s principais
s tipos de manipu
uladores de event
tador cliente que
aes no so env
eta o cdigo e exe
nipuladores de eve
Tambm podem
r, mas somente p
re consituda de
uladores de even
r Web especifican
seover, conforme
Inclusodefunc
uladoresde
uladores de event
os do lado do cli
solicita o Web Fo
viadas para o serv
ecuta a ao.
entos do lado do c
m existir eventos
para a parte do co
um ou mais elem
ntos do lado do c
ndo-o no atributo
e mostrado no c

ionalidadeemumWebF
eventosdol
tos: do lado do cl
ente representam
orm. Quando um
vidor; em vez diss
cliente s podem s
s do lado do clien
ontrole de servido
mentos HTML. V
cliente diretamen
o de evento, com
digo a seguir.
FormMicrosoftASP.NE
ladodoclien
liente e do servid
m eventos manipu
m evento dispar
so, o navegador d
ser usados com ele
nte para control
or que renderiz
Voc pode anexa
nte a um control
o, por exemplo, o
T 4-19
nte?

or. Os
ulados no
ado, as
do cliente
ementos
es de
ada, que
ar
le de
o evento
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-20 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
...
<script type="text/javascript">
function changeColor()
{
window.event.srcElement.style.color = "#FF0000";
}
</script>
...
<asp:Button id="Button1" runat="server" text="Button1"
onmouseover="changeColor();" />

Tambm possvel atribuir um manipulador de eventos via programao usando o
mtodo Add da propriedade Attributes, conforme mostrado no cdigo a seguir.
[Visual Basic]
Button1.Attributes.Add("onmouseover", "changeColor();")

[Visual C#]
Button1.Attributes.Add("onmouseover", "changeColor();");

O cdigo exige que a funo JavaScript faa parte da marcao. Isso poder ser
feito de forma explcita como mostrado no exemplo anterior ou por meio do
registro da funo como um script do servidor. A funo JavaScript tambm pode
estar localizada em um arquivo vinculado externamente. Use o mtodo
ClientScriptManager.RegisterClientScriptBlock, colocado no manipulador de
eventos Page Load, conforme mostrado no cdigo a seguir.
[Visual Basic]
Dim buttonClientScriptManager As ClientScriptManager = Me.ClientScript
buttonClientScriptManager.RegisterClientScriptBlock(Button1.GetType(),
"changeColorScript",
"function changeColor() { window.event.srcElement.style.color =
'#FF0000'; }", True)

[Visual C#]
ClientScriptManager buttonClientScriptManager = this.ClientScript;
buttonClientScriptManager.RegisterClientScriptBlock(Button1.GetType(),
"changeColorScript",
"function changeColor() { window.event.srcElement.style.color =
'#FF0000'; }", true);

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-21
Voc pode fazer referncia classe ClientScriptManager a partir da propriedade
ClientScript do objeto de pgina. Os manipuladores de eventos do lado do cliente
nunca tm acesso direto aos recursos do servidor. Por exemplo, no possvel usar
um script do lado do cliente para acessar diretamente um banco de dados do SQL
Server.
Utilizaes de manipuladores de eventos do lado do cliente
Os manipuladores de eventos do lado do cliente so teis no caso de eventos que
voc deseja gerar imediatamente. Esses manipuladores no exigem uma viagem de
ida e volta ao servidor Web. Isso significa que no necessrio enviar informaes
ao servidor Web e aguardar uma resposta.
Por exemplo, talvez voc queira validar as informaes de uma caixa de texto antes
de envi-las ao servidor. Voc pode usar scripts do lado do cliente para validar as
informaes de forma rpida e eficaz antes de envi-las ao servidor Web para
processamento adicional. Esses scripts podem ser usados para aprimorar a
experincia do usurio com pginas da Web mais sofisticadas e responsivas que
so executadas de maneira muito semelhante aos aplicativos cliente tradicionais.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-22 Introduo
Oque
Pontos
Diferent
de even
para pro
de mani
esses m
eventos
recurso
Manipu
Os man
reside n
partir d
recursos
de even

aoDesenvolvimentonaW
esomanipu
s principais
temente dos man
ntos do servidor e
ocessamento. Em
ipuladores de eve
manipuladores ger
do lado do client
s do servidor, com
uladores de ev
nipuladores de ev
no servidor Web.
e controles de se
s do servidor que
ntos do lado do cl
WebcomoMicrosoftV
uladoresde
nipuladores de eve
exigem que as inf
mbora haja uma p
entos do servidor
ralmente so mai
te, principalmente
mo um banco de
entos do servid
ventos do servido
Voc pode us-lo
rvidor HTML e W
e normalmente n
liente.

VisualStudio2010
eventosdos
entos do lado do
formaes sejam
penalidade para o
devido viagem
s eficazes do que
e quando neces
e dados.
dor
or consistem em u
os para manipula
Web. Esses manip
o esto disponve
servidor?
cliente, os manip
enviadas ao servi
o desempenho co
de ida e volta ao
e os manipulador
ssrio acessar dire
um cdigo compi
ar os eventos gera
puladores tm ac
eis para os manip

uladores
idor Web
m o uso
servidor,
res de
etamente
ilado que
ados a
esso a
puladores
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-23
Os exemplos a seguir usam o atributo runat="server" na marca <script> de
abertura para especificar um manipulador de eventos do servidor.
[Visual Basic]
<script type="text/VB" runat="server">...</script>

[Visual C#]
<script type="text/C#" runat="server">...</script>

Suporte a eventos
Os manipuladores de eventos do servidor oferecem suporte a um nmero limitado
de tipos de eventos de controle devido viagem de ida e volta ao servidor Web
exigida por esses manipuladores. Com os manipuladores de eventos do lado do
cliente, possvel incluir cdigo para processamento de eventos de tecla ou do
mouse e eventos onChange. Embora os manipuladores de eventos do servidor
ofeream suporte a eventos de clique e a uma verso especial do evento onChange,
no h suporte para eventos que ocorrem com frequncia, como eventos de tecla
ou do mouse. Isso afetaria seriamente o desempenho da pgina Web, bem como
inutilizaria um aplicativo.
A tabela a seguir mostra algumas das diferenas entre os manipuladores de eventos
do lado do cliente e do servidor.

Doladodo
cliente Doservidor
Linguagemde
programao
JavaScript Qualquerlinguagembaseadano.NET
Framework,comoVisualBasicouVisualC#
Processadonocliente Sim No
Processadonoservidor No Sim
Compilado No Sim
Interpretado Sim No
Acessamrecursosdo
servidordiretamente
No Sim


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-24 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Embora o JavaScript esteja disponvel em algumas implementaes diferentes, essa
ainda a nica linguagem de programao compatvel com vrios navegadores. Se
usar o Windows Internet Explorer exclusivamente para acessar um portal da
intranet, voc tambm poder usar o Microsoft Visual Basic Scripting Edition
(VBScript) para criar manipuladores de eventos e cdigos do lado do cliente.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Como
servid
Pontos
Nesta an
do servi
1. O c
2. O s
Por
pg
caix
3. O u
clie
red
info
4. O u

oosmanipul
dorsoproce
s principais
nimao, voc ve
idor so processa
cliente solicita ao
servidor retorna p
r exemplo, essa p
gina tambm con
xa de texto
usurio insere inf
ente gera uma caix
duz o trfego da re
ormao enviad
usurio corrige as
Inclusodefunc
ladoresdeev
essados
er como os mani
ados no cliente e
servidor Web um
para o cliente um
gina contm um
tm um script do
formaes invlid
xa de mensagem
ede e melhora os
da ao servidor.
s informaes na

ionalidadeemumWebF
ventosdola
ipuladores de eve
no servidor.
ma pgina de We
ma pgina contend
m controle TextBo
o lado do cliente q
das na caixa de te
m. O processamen
s tempos de respo
caixa de texto e c
FormMicrosoftASP.NE
adodoclient
entos do lado do
b Forms ASP.NE
do a marcao e o
ox e um boto Su
que valida o cont
exto, e o script do
nto do lado do cli
osta porque nenh
clica no boto Su
T 4-25
teedo

cliente e
T.
o script.
ubmit. A
tedo da
o lado do
ente
huma
ubmit.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-26 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
5. As informaes so validadas no lado do cliente e enviadas ao servidor, onde o
ocorre o processamento do servidor.
6. O servidor repete a validao e armazena as informaes da caixa de texto em
um banco de dados.
7. Os recursos do servidor podem ser usados para o processamento de outros
dados porque o script do lado do cliente no acessa diretamente esses
recursos.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Cria
Pontos
Para cri
deve seg
1. Cria
2. For
man
3. Vin
oco

odemanip
s principais
ar um manipulad
guir trs etapas:
ar o controle que
rnecer o cdigo d
nipula o evento.
ncular o manipula
orrer em qualquer
Inclusodefunc
puladoresde
dor de eventos do
e gera o evento no
do manipulador d
ador de eventos a
r ordem, depend

ionalidadeemumWebF
eventosdo
o servidor no Visu
o Web Form.
de eventos no arq
ao evento de cont
dendo de como vo
FormMicrosoftASP.NE
servidor
ual Studio 2010,
quivo code-behind
trole. Essas etapa
oc prefere trabal
T 4-27

voc
d que
as podem
lhar.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-28 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Criao de um manipulador de eventos do lado do servidor
Quando voc clica duas vezes em um controle no Visual Studio 2010, o Visual
Studio cria um manipulador de eventos vazio. Quando voc usa o Visual Basic, o
Visual Studio 2010 tambm adiciona a palavra-chave Handles, a qual vincula o
manipulador de eventos aos eventos de controle. A palavra-chave Handles permite
criar vrios manipuladores para um nico evento ou um nico manipulador para
vrios eventos.
Criao de um manipulador de eventos do lado do servidor em Visual
Basic
No Visual Basic, o atributo runat="server" e a instruo Handles so usados para
criar manipuladores de eventos ASP.NET. O cdigo HTML a seguir mostra um
Web Form que contm um boto com o atributo de ID Button1 e o atributo
runat="server" indica que o evento Click do boto ser manipulado no servidor.
[Visual Basic]
<form id="form1" method="post" runat="server">
<asp:Button ID="Button1" runat="server"/>
</form>

No cdigo do Visual Basic a seguir que mostra o manipulador de eventos referente
ao evento Click, a palavra-chave Handles indica que o manipulador executado
em resposta ao evento Click do controle Button1.
[Visual Basic]
Protected Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
...
End Sub

Criao de um manipulador de eventos do lado do servidor em Visual C#
No Visual C#, o manipulador de eventos adicionado propriedade do evento do
controle. O cdigo HTML a seguir mostra um Web Form que contm um boto
com o atributo de ID Button1 e o evento de clique do boto que ser manipulado
no servidor.
[Visual C#]
<form id="form1" method="post" runat="server">
<asp:Button ID="Button1" onclick="Button1_Click" runat="server"/>
</form>
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-29
O atributo onclick definido como o nome do manipulador de eventos. No
arquivo code-behind, a propriedade Click da varivel Button1 manipulada da
seguinte maneira.
[Visual C#]
protected void Button1_Click(object sender, System.EventArgs e)
{
...
}

Se desejar ter maior controle sobre a maneira como os manipuladores de eventos
so vinculados a eventos de controle, voc poder criar manualmente a configurao
do vnculo conforme mostrado a seguir.
[Visual C#]
Button1.Click += new EventHandler(Button1_Click);

Usando esse mtodo, voc pode criar vrios manipuladores para um nico evento
ou um nico manipulador para vrios eventos.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-30 Introduo
Demo
servid
Pontos
Nesta d
para um
executa
Etapas
1. Fa


aoDesenvolvimentonaW
onstrao:Co
dor
s principais
demonstrao, o in
m boto em uma p
ar a demonstrao
s da demonstra
a logon em 1056
Para fazer logon
usurio:
Nome de us
Senha: Pa$
WebcomoMicrosoftV
omocriarm
nstrutor mostrar
pgina da Web q
o usando o Visua
ao
60A-GEN-DEV co
n em 10560A-GE
surio: Aluno
$w0rd

VisualStudio2010
anipuladore
como criar um
que altera o texto
al C# ou o Visual
omo Aluno, com
EN-DEV, use as se
sdeeventos
manipulador de
de um rtulo. Vo
Basic.
a senha Pa$$w0r
eguintes credenci
sdo

eventos
oc pode
rd.
iais de
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-31
2. Crie um Site usando o Visual Studio 2010.
No menu Iniciar de 10560A-GEN-DEV, aponte para Todos os Programas,
clique em Microsoft Visual Studio 2010 e clique em Microsoft Visual
Studio 2010.
Na janela Start Page Microsoft Visual Studio, no menu File, clique em
New Web Site.
Na caixa de dilogo New Web Site, no painel esquerdo, clique em Visual
Basic ou Visual C#, no painel do meio, verifique se a opo ASP.NET
Empty Web Site est selecionada e clique em OK.
3. Adicione um novo Web Form chamado Default.aspx ao site.
No Solution Explorer, clique com o boto direito do mouse no site e
depois clique em Add New Item.
Na caixa de dilogo Add New Item, no painel intermedirio, verifique se a
opo Web Form est marcada, na caixa Name, digite Default.aspx e
clique em Add.
4. Adicione os controles Button e Label ao Web Form.
Na janela Default.aspx, clique em Design e aponte para Toolbox.
Em Toolbox, expanda Standard e clique duas vezes no controle Button.
Na Toolbox, em Standard, clique duas vezes no controle Label.
5. Exiba o cdigo do manipulador de eventos Click padro.
Na janela Default.aspx, clique duas vezes no controle Button para abrir o
arquivo code-behind.
Na janela Default.aspx.vb ou Default.aspx.cs, exiba o manipulador de
eventos vazio criado pelo Visual Studio 2010.
[Visual Basic]
Protected Sub Button1_Click(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Button1.Click
...
End Sub

[Visual C#]
protected void Button1_Click(object sender, System.EventArgs e)
{
...
}
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-32 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
6. Adicione o seguinte cdigo no manipulador de eventos Click do controle
Button.
[Visual Basic]
Label1.Text = "You clicked the button"

[Visual C#]
Label1.Text = "You clicked the button";

7. Verifique o processo de associao do manipulador de eventos.
Na linguagem de programao Visual Basic, observe a instruo Handles
no manipulador de eventosButton1_Click.
[Visual Basic]
Protected Sub Button1_Click(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Button1.Click

Na linguagem de programao Visual C#, o procedimento associado ao
manipulador de eventos por meio da adio do atributo onclick
marcao. Voc pode exibir o cdigo a seguir no modo Source do Web
Form Default.aspx.
[Visual C#]
...
<asp:Button ID="Button1" runat="server" Text="Button"
onclick="Button1_Click"/>
...

8. Salve as alteraes e exiba o Web Form no navegador.
Pressione as teclas CTRL+SHIFT+S.
No Solution Explorer, clique com o boto direito do mouse no Web Form
Default.asp e, em seguida, clique em View in Browser.

Observao:paraabrirocdigo-fonterenderizado,cliqueemViewSourcenomenu
Pageeobservequeocdigodomanipuladordeeventosnorenderizadonocliente.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-33
9. Dispare o manipulador de eventos usando o controle Button.
Na janela http://localhost:49157/WebSite1/Default.aspx Internet
Explorer, clique no controle Button no Web Form. Observe que o texto
do rtulo alterado.
Na janela http://localhost:49157/WebSite1/Default.aspx Internet
Explorer, clique no boto Close.
No Visual Studio 2010, clique na janela Default.aspx e, em seguida, clique
em Design.
Na janela Default.aspx, clique no controle Button.
Na janela Properties do controle Button, altere a propriedade ID do
controle Button para SubmitButton.
Na janela Default.aspx, clique duas vezes no controle Button para abrir o
arquivo code-behind. Observe que Button1 foi alterado para
SubmitButton no arquivo code-behind.

Observao:nalinguagemdeprogramaoVisualBasic,noarquivocode-behind,
observequeapalavra-chaveHandlesfoiatualizadapararefletironovonomedeobjeto,
SubmitButton.Click.Issomantmaassociaocomomanipuladordeeventoscorreto.
OnomedomanipuladordeeventosnofoialteradoepermanececomoButton1_Click.
NalinguagemdeprogramaoVisualC#,noarquivocode-behind,observequeonovo
nomedobotofoialteradonamarcao.Oatributoonclickpermanecedefinidocomo
Button1_Click.OVisualStudionoalteraaassociaodoeventoparaoprocedimento;
somenteapropriedadeIDdocontrole.
10. Salvar e visualizar o Web Form no navegador
No menu File, clique em Save Default.aspx.vb ou
Save Default.aspx.cs.
No Solution Explorer, clique com o boto direito do mouse no Web Form
Default.aspx e depois clique em View in Browser.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-34 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
11. Dispare o manipulador de eventos usando o controle Button.
Na janela http://localhost:49157/WebSite1/Default.aspx Internet
Explorer, clique no controle Button no Web Form.

Observao:observequeomanipuladordeeventosClickaindadisparadoquando
vocusaonovonomedocontrole.
Na janela http://localhost:49157/WebSite1/Default.aspx Internet
Explorer, clique no boto Close.
Na janela WebSite1 Microsoft Visual Studio, clique no boto Close.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Como
manip
Pontos
Em vri
de um f
isso, use
Leitura
Em um
um con
controle
<form
<as
<as
</form
otrabalharc
puladoresde
s principais
os aplicativos We
formulrio como
e manipuladores
a de propriedad
manipulador de
ntrole de servidor
e Textbox e outro
id="form1" run
sp:TextBox ID="
sp:Button ID="S
m>
Inclusodefunc
omcontrole
eeventos
eb, voc precisa es
para gravar nos c
de eventos do se
des de um cont
eventos do lado
. O cdigo a segu
o Button.
nat="server">
NameTextBox" ru
SubmitButton" ru
ionalidadeemumWebF
esdeservido
screver o cdigo t
controles do mes
ervidor.
trole de servido
do servidor, po
uir contm um fo
unat="server" /
unat="server" /
FormMicrosoftASP.NE
orWebusand
tanto para ler os c
smo formulrio. P
or Web
ossvel ler inform
rmulrio com um
/>
/>
T 4-35
do

controles
Para fazer
aes de
m

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-36 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Quando o usurio clica no boto, o texto digitado por ele na caixa de texto
exibido. O cdigo a seguir atribui a varivel string greetingString a uma
concatenao do texto Hello e do texto da caixa de texto NameTextBox.
O texto digitado no controle NameTextBox recuperado por meio de sua
atribuio varivel greetingString.
[Visual Basic]
Dim greetingString As String = "Hello " & NameTextBox.Text

[Visual C#]
string greetingString = "Hello " + NameTextBox.Text;

Por exemplo, se o usurio digitar o texto Shannon no controle NameTextBox, a
varivel greetingString conter a string Hello Shannon.
Definio das propriedades do controle de servidor Web
Voc pode exibir informaes diretamente em um controle de servidor Web
usando as propriedades do controle. Por exemplo, voc poder ter um controle de
servidor Web Label na pgina ASP.NET, conforme mostrado a seguir.
<asp:Label ID="GreetingLabel" runat="server" Text="Greeting" />

O cdigo do servidor apresentado a seguir atribui uma string a propriedade Text
do controle de servidor Web GreetingLabel.
[Visual Basic]
GreetingLabel.Text = "new text"

[Visual C#]
GreetingLabel.Text = "new text";

A leitura e a definio das propriedades do controle nos eventos de controle do
servidor ocorrem geralmente quando algum tipo de manipulao ou clculo do
resultado deve ser executado no servidor. Caso contrrio, a interao do lado do
cliente pode ser uma opo melhor.
Na maioria das vezes, os manipuladores de eventos de pgina e os manipuladores
de eventos de controle de servidor so usados em conjunto para leitura e gravao
nas propriedades do controle quando uma pgina submetida ao ciclo de vida
correspondente.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Lio3
Criaod
VisualSt
Ao usar
poder
Visual S
aplicativ
Nesta li
a criar u
em outr
Objetiv
Depois
Des
Cria

declasses
tudio201
r uma linguagem
usar os tipos e os
Studio 2010 para
vos.
o, voc aprend
um componente c
ros aplicativos.
vos da lio
de concluir esta l
screver tipos, com
ar um componen
Inclusodefunc
secomp
10
orientada a objet
s componentes e
criar um compo
der sobre classes
com o Visual Stu
lio, voc ser ca
mponentes e class
nte.

ionalidadeemumWebF
ponentes
to para desenvolv
xistentes. Tamb
nente, o qual pod
s e componentes.
dio 2010 e, depo
apaz de:
ses.
FormMicrosoftASP.NE
usandoo
ver um aplicativo
m possvel usar
der ser usado em
Voc tambm ap
ois, usar esse com
T 4-37
o

o, voc
r o
m outros
prender
mponente
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-38 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Explicar como criar uma classe no Visual Studio 2010.
Adicionar variveis de membro e constantes a uma classe.
Adicionar propriedades e mtodos a uma classe.
Adicionar construtores de classe.
Acessar componentes em um Web Form ASP.NET.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Oque
Pontos
Ao usar
desenvo
existent
vrios ti
Defini
Tipos s
Eles pod
estrutur
fora do
memri
coletor
baixo d

esotipos,c
s principais
r uma linguagem
olver um aplicativ
tes. Por exemplo,
ipos, como Syste
o de tipo
o grupos de inst
dem ser agrupad
ra um tipo de va
escopo. Por outr
ia heap, e o geren
de lixo (Garbage
e alocao e desa
Inclusodefunc
componente
orientada a objet
vo, voc poder u
, a biblioteca de c
em.String e Syste
trues de cdigo
dos em duas categ
alor salvo na pilh
ro lado, uma class
nciamento da mem
e Collector). Em g
alocao.

ionalidadeemumWebF
eseclasses?
to como Visual B
utilizar os tipos e
classes do .NET F
em.Object.
o que no aprese
gorias distintas
ha ou em linha e
se um tipo de re
mria usada pela
geral, os tipos de
FormMicrosoftASP.NE
asic ou Visual C#
os componentes
Framework consi
entam interface d
estruturas e clas
desalocado qua
eferncia salvo na
a classe tratado
valor tm um cu
T 4-39

# para
s
ste em
o usurio.
ses. Uma
ando est
a
pelo
sto mais
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-40 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Os tipos fornecem a funcionalidade de um aplicativo. Voc pode us-los para
organizar funes e atribuir a eles um nico nome por meio do qual eles so
referenciados. Os tipos tambm possuem propriedades e mtodos. Voc pode usar
propriedades para definir as caractersticas de um tipo e usar mtodos para invocar
as aes de um tipo. Para usar um tipo e os respectivos mtodos, voc deve criar
uma instncia do tipo.
Definio de componente
Os componentes consistem em um ou mais tipos que so compilados em um
assembly DLL (biblioteca de vnculo dinmico). Como o componente uma
unidade de implantao e geralmente consiste de um nico arquivo, voc pode
reutiliz-lo em diversas partes de um aplicativo ou at mesmo em aplicativos
diferentes. Voc pode fazer referncia a um componente em um aplicativo e
acessar os tipos do componente.
Compartilhamento de tipos e componentes
Se voc criar um tipo que calcule o aumento salarial recebido por um funcionrio,
esse clculo se basear em diversas frmulas especficas de sua organizao, como
salrio base atual, avaliao de desempenho e tempo de permanncia na empresa.
Os clculos so muito complexos e demorados. Alm disso, a empresa frequentemente
altera a frmula com base na qual os aumentos salariais so calculados.
Aps criar o tipo, voc poder us-lo em outros aplicativos incluindo-o em um
projeto. Por exemplo, voc pode ter um aplicativo Windows que usado pelo
departamento de Recursos Humanos para determinar o novo salrio de um
funcionrio no prximo contracheque. Tambm pode criar um aplicativo Web que
utilize o mesmo tipo para permitir que os funcionrios determinem o seu novo
salrio. Alm disso, voc poder ter um servio WCF (Windows Communication
Foundation) que use o mesmo tipo.
Utilizando um tipo para tratar dos clculos, bastar criar o algoritmo complicado
uma vez e, depois disso, todos os aplicativos podero usar o algoritmo.
No entanto, nesse cenrio, a reutilizao da classe cria um problema, porque tambm
necessrio gerenciar as alteraes efetuadas nela. Se um grupo fizer alteraes na
classe no aplicativo que ele estiver usando, essas alteraes no sero compartilhadas
automaticamente com outros grupos de desenvolvedores. Alm disso, muito
pouco provvel que a sua organizao compartilhe o cdigo-fonte com outras
organizaes. Portanto, voc precisa criar um componente que armazene o tipo.
Nesse caso, quando ocorrerem alteraes, somente o tipo precisar ser atualizado;
no ser necessrio atualizar os aplicativos que o utilizam.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-41
Classe
Nas linguagens orientadas a objeto, o conceito de abstrao importante. Abstrao
uma forma de organizao em que os mtodos, os dados e as funes que tm um
objetivo comum so agrupados. Um componente fundamental da abstrao a
criao e o uso de classes. Uma classe o modelo de um objeto. Esse modelo
define os atributos para o armazenamento de dados, bem como as operaes para
a manipulao desses dados. A classe tambm define um conjunto de restries
que voc pode usar para permitir ou negar acesso aos seus atributos e operaes.
Voc pode criar uma classe em qualquer projeto do Visual Studio 2010. Tambm
pode criar uma nova biblioteca de classes, que, por padro, contm uma nica
classe e os respectivos mtodos, mas no a interface do usurio. Se voc criar uma
classe em um projeto existente, ela existir no namespace do projeto. Se voc criar
uma nova biblioteca de classes, o Visual Studio 2010 criar um namespace padro
e, em seguida, colocar a nova classe nesse namespace.
Quando uma classe criada em um projeto, o arquivo da classe compilado no
assembly do aplicativo e no pode ser reutilizado por outros aplicativos. Se voc
criar uma biblioteca de classes, ser criado um componente que poder ser
reutilizado.
Pergunta: Quais so as diferenas entre uma estrutura, uma classe, uma
propriedade, um mtodo, um objeto e um componente?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-42 Introduo
Cria
Paracr
1. No
2. Na
ou V
3. Klic
4. Na
5. No
nov

aoDesenvolvimentonaW
odeumco
riarumcompo
Visual Studio 20
caixa de dilogo
Visual C#.
cken Sie im mittle
caixa Name, digi
menu Build, cliq
va classe.
WebcomoMicrosoftV
mponente
onente
010, no menu File
New Project , no
eren Bereich auf
ite o nome da bib
que em Build Sol

VisualStudio2010
e, clique em New
o painel esquerdo
Klassenbiblioth
blioteca de classe
lution a fim de cr
w Project.
o, clique em Visu
hek.
es e clique em OK
riar o component

ual Basic
K.
te para a
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-43
Alterao do namespace
No Visual C#, o namespace est contido, por padro, no arquivo de classe, e voc
pode alter-lo editando o arquivo. No Visual Basic, um namespace padro criado
para a classe com o mesmo nome do projeto. Voc tambm pode usar a palavra-
chave Namespace no Visual Basic da seguinte maneira.
[Visual Basic]
Namespace YourComponentNamespace
Public Class Class1
End Class
End Namespace

ParaalteraronomedonamespacedoprojetonoVisualBasic
1. No Solution Explorer, clique com o boto direito do mouse no projeto e, em
seguida, clique em Properties.
2. Na guia Application, defina o Root namespace como o novo nome do seu
componente.

Os namespaces fornecem um agrupamento lgico de classes que pode ser usado
por todas as linguagens de desenvolvimento compatveis com o .NET. Cada
namespace contm tipos que podem ser usados no aplicativo. Os namespaces so
organizados hierarquicamente, o que ajuda a reduzir os conflitos de nomes e
aumenta a capacidade de reutilizao do cdigo. Todos os namespaces fornecidos
pela Microsoft comeam com Microsoft ou System, como Microsoft.VisualBasic
ou System.Web.
A seguir so apresentados conceitos importantes que sero descritos nos prximos
mdulos e exerccios de laboratrio:
Propriedade: especifica o comportamento dos objetos.
Construtor: inicializa um objeto quando ele criado.
Campos existentes: tambm conhecidos como variveis de membro, fornecem
o armazenamento para as propriedades.
Mtodos: usados para executar aes nos dados do tipo contido.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-44 Introduo
Demo
Pontos
Nesta d
cham-l
Etapas
1. Crie
Visu
a.
b.
c.
aoDesenvolvimentonaW
onstrao:Co
s principais
demonstrao, voc
la a partir de um
s da demonstra
e um projeto de B
ual Studio 2010.
No menu Inicia
Programas, cliq
Microsoft Visua
No menu File d
Na caixa New W
Visual C#, no p
Site est selecio
caixa de texto, d
WebcomoMicrosoftV
omocriarum
c ver como cria
aplicativo Web.
ao
Biblioteca de Clas
ar de 10560A-GE
que em Microsof
al Studio 2010.
do Visual Studio 2
Web Site, no pain
painel do meio, ve
nada, na lista We
digite C:\WebSit
VisualStudio2010
maclassenoV
ar uma biblioteca
sses chamado He
EN-DEV, aponte p
ft Visual Studio 2
2010, clique em N
nel esquerdo, cliq
erifique se a op
eb location, cliqu
te1 e clique em O
VisualStudio
a de classes e, dep
elloWorld na sol
para Todos os
2010 e novament
New Web Site.
que em Visual Ba
o ASP.NET Emp
ue em File System
OK.
o2010

pois,
uo do
te em
asic ou
pty Web
m, na
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-45
d. No Solution Explorer, clique com o boto direito do mouse em Solution
WebSite1 (1 Project), aponte para Add e clique em New Project.
e. Na caixa de dilogo Add New Project, no painel esquerdo, clique em
Visual Basic ou Visual C#, no painel do meio, clique em Class Library,
na caixa Name, digite HelloWorld e clique em OK.

Observao:observequeumaclassepadro(Class1.vb ou Class1.cs)criadano
SolutionExplorereabertanajaneladoEditordecdigos.
2. Renomeie o arquivo Class1.vb ou Class1.cs comoHello.vb ou Hello.cs.
a. No Solution Explorer, clique com o boto direito do mouse em Class1.vb
ou Class1.cs, clique em Rename, altere o texto para Hello.vb ou Hello.cs
e pressione ENTER.
b. Na caixa de mensagem do Microsoft Visual Studio, clique em Yes.
3. Crie um mtodo que retorne uma string no arquivo de Classe.
Crie um mtodo SayHello que retorne uma string usando o cdigo a
seguir.
[Visual Basic]
Function SayHello() As String
Return "Hi from Visual Basic component."
End Function

[Visual C#]
public string SayHello()
{
return "Hi from C# component.";
}

4. Compile o projeto de Biblioteca de Classes.
No menu Build do Visual Studio 2010, clique em Build Solution.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-46 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
5. Adicione uma referncia ao projeto de Biblioteca de Classes HelloWorld.
a. No Solution Explorer, clique com o boto direito do mouse em
C:\...\WebSite1\, adicione a referncia e clique em Add Reference.
b. Na guia Projects da caixa de dilogo Add Reference, em ProjectName,
verifique se HelloWorld est selecionado e clique em OK.
c. No Solution Explorer, na pasta Bin, verifique se o assembly
HelloWorld.dll foi copiado.
d. Na janela WebSite1 Microsoft Visual Studio, clique no boto Close.
e. Na caixa de mensagem do Microsoft Visual Studio, clique em Yes.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Inclus
Pontos
Depois
normalm
varivei
desenvo
campos
definido
classe C
namesp
[Visua
Public
'
Pr
'
Pr
'
Pr
End Cl
sodevarive
s principais
de criar a classe,
mente so memb
is de membro e c
olvimento da clas
s existentes para p
os ou obtidos por
Customer que con
pace foi omitido.
al Basic]
c Class Custome
The default cr
rivate Const cr
Current custom
rivate customer
Current custom
rivate customer
lass
Inclusodefunc
eisdememb
adicione as vari
bros privados da c
onstantes um p
sse. As variveis d
propriedades pb
r uma propriedad
ntm trs constan
er
redit limit
reditLimit As In
mer ID (nullable
rID? As Guid = N
mer name
rName As String
ionalidadeemumWebF
broeconstan
veis de membro
classe. Lembre-se
processo contnuo
de membro costu
blicas, pois armaz
de. Os exemplos
ntes e variveis d
nteger = 50000
e)
Nothing
= Nothing
FormMicrosoftASP.NE
ntesemuma
e as constantes, q
e de que a adio
o durante o
umam ser usadas
zenam os valores
a seguir mostram
de membro privad
T 4-47
classe

que
de
como
s
m a
do. O
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-48 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

[Visual C#]
class Customer
{
// The default credit limit
private const int creditLimit = 50000;
// Current customer ID (nullable)
private Guid? customerID = null;
// Current customer name
private string customerName = null;
}

Observao:aadiodeconstantesevariveisdemembro,construtores,propriedades
emtodosaumaclassepodeocorreremqualquerordem,enoapenasdamaneira
indicadanestetpico.Noentanto,comoosconstrutores,osmtodoseaspropriedades
geralmentefazemrefernciasvariveisdemembro,recomendvelcomearcom
essasvariveis.Lembre-sedequeesseumprocessocontnuoeiterativo,especialmente
nocasodeclassesmaioresemquetalvezvocnosaibaexatamentequaisdadose
operaesadicionar.
O campo existente customerID um tipo GUID (identificador global exclusivo),
mas tambm permite valor nulo (nullable), o que indicado pelo uso do sufixo ?.
Um GUID um tipo de valor, o que significa que ele sempre contm um valor. Ele
difere dos tipos de referncia que podem ser definidos como null (Nothing no
Visual Basic); nesse caso, eles foram definidos para no conter nada e, portanto,
no possuem nenhum valor. No entanto, os tipos de valor tambm podem ser
definidos como nullable; isso significa que eles podem receber null ou Nothing,
como os tipos de referncia. Isso poder ajudar a determinar se uma varivel
definida como nullable possui um valor inicial atribudo.

Observao:umtipodedadosumtipodevalorsearmazenarosdadosemsua
prpriaalocaodememrianapilha.Umtipoderefernciacontmumponteirona
pilhaparaoutrolocaldamemriaheapquearmazenaosdadosreais.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-49
Ao adicionar grupos de cdigo a uma classe especialmente se um grupo ou bloco
de cdigo for longo em geral, prefervel coloc-lo em uma regio, que pode ser
recolhida e expandida conforme necessrio. Para criar uma regio, use as palavras-
chave Region/region seguidas de End Region/endregion. necessrio colocar o
sinal de hash (#) antes da regio, conforme mostrado no exemplo a seguir.
[Visual Basic]
#Region "Member fields"
' The default credit limit
Private Const creditLimit As Integer = 50000
...
#End Region

[Visual C#]
#region Member fields
// The default credit limit
private const int creditLimit = 50000;
...
#endregion
Geralmente o cdigo contm valores constantes usados em todo o tipo. Esses
valores (frequentemente denominados constantes) tambm podem ser usados para
atribuir um nome amigvel a certos nmeros difceis de lembrar ou que no tm
um significado bvio. Nesses casos, voc poder melhorar a legibilidade do seu
cdigo e facilitar sua manuteno com o uso de constantes. Uma constante um
nome significativo usado no lugar de um nmero ou de uma string que no pode
ser alterado. As constantes armazenam valores, que, como o nome implica,
permanecem constantes durante toda a execuo de um aplicativo.
Voc declara uma constante com a instruo Const/const usando as mesmas
diretrizes utilizadas para criar um nome de varivel. No Visual Basic, se Option Strict
estiver definido como On, voc dever declarar explicitamente o tipo da constante.
O escopo de uma constante o mesmo de uma varivel declarada no mesmo local.
Para criar uma constante existente dentro do escopo de determinado procedimento,
declare-a dentro do procedimento. Para criar uma constante disponvel em todo
um aplicativo, declare-a usando a palavra-chave Public na seo de declaraes da
classe. Embora as constantes assemelhem-se s variveis, no ser possvel modific-
las nem atribuir novos valores a elas, como no caso das variveis. As constantes
usadas no cdigo podem ser intrnsecas ao modelo de objeto dos controles ou
dos componentes com os quais voc trabalha ou podem ser definidas pelo usurio.
Pergunta: O que so constantes e variveis de membro?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-50 Introduo
Inclus
Pontos
Aps cr
proprie
exemplo

aoDesenvolvimentonaW
sodepropr
s principais
iar a classe e adic
dades de acesso p
os a seguir mostr
WebcomoMicrosoftV
riedadesem
cionar as varivei
pblico ou privad
ram duas proprie

VisualStudio2010
mtodosaum
is de membro, vo
do que usaro es
edades da classe C
maclasse
c poder adicion
sas variveis. Os
Customer.

nar as
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-51
[Visual Basic]
''' <summary>
''' The unique customer ID
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property ID() As Guid?
Get
Return Me.customerID
End Get
Private Set(ByVal value As Guid?)
Me.customerID = value
End Set
End Property

''' <summary>
''' The full customer name
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property Name() As String
Get
Return Me.customerName
End Get
Set(ByVal value As String)
' Null value?
If value Is Nothing Then
Me.customerName = ""
Else
' Only get the first 50 characters
If (value.Length > 50) Then
Me.customerName = value.Substring(0, 50)
Else
Me.customerName = value
End If
End If
End Set
End Property

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-52 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
[Visual C#]
/// <summary>
/// The unique customer ID
/// </summary>
public Guid? ID
{
get
{
return this.customerID;
}
private set
{
this.customerID = value;
}
}

/// <summary>
/// The full customer name
/// </summary>
public string Name
{
get
{
return this.customerName;
}
set
{
// Null value?
if (value == null)
this.customerName = "";
else
// Only get the first 50 characters
if (value.Length > 50)
this.customerName = value.Substring(0, 50);
else
this.customerName = value;
}
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-53
As duas propriedades de leitura-gravao, ID e Name, so pblicas para qualquer
usurio da classe. Observe que os setters e getters que so usados para definir e
obter o valor da propriedade ou do campo existente da propriedade podem ter
um modificador de acesso diferente da propriedade em si. No caso da propriedade
Name, como nenhum modificador de acesso foi especificado para o getter ou o
setter, o modificador de acesso public da propriedade aplicado. Entretanto, para
a propriedade ID, apenas o getter herda o modificador de acesso da propriedade,
enquanto o setter privado. Como o setter privado, a propriedade s poder ser
definida dentro da classe. Isso ajuda a garantir que o ID no seja alterado aps ser
criada uma instncia da classe.
Adio de mtodos para uma classe
Vrias classes necessitam de pelo menos um mtodo para executar operaes em
seus respectivos dados. Embora voc possa usar as propriedades para fazer isso,
essa no a inteno nem a prtica recomendada. Os exemplos a seguir mostram
um nico mtodo para a classe Customer.
[Visual Basic]
''' <summary>
''' Returns the total order amount for the current customer until
today
''' </summary>
''' <param name="startDate">Start accumulating from this date</param>
''' <returns>The total order amount</returns>
''' <remarks></remarks>
Public Function GetTotalOrderAmount(ByVal startDate As DateTime) As
Double
' Get total order amount from database
Return dbObject.GetOrderTotal(ID, startDate)
End Function

[Visual C#]
/// <summary>
/// Returns the total order amount for the current customer until
today
/// </summary>
/// <param name="startDate">Start accumulating from this date</param>
/// <returns>The total order amount</returns>
public double GetTotalOrderAmount(DateTime startDate)
{
// Get total order amount from database
return dbObject.GetOrderTotal(ID, startDate);
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-54 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
dbObject um objeto privado que acessa a tabela Customers em um banco de
dados, passando a ID do cliente e a data inicial a partir da qual o valor do pedido
deve ser acumulado e retornando o valor total do pedido para o cliente.
Se no for preciso controlar o nome do campo existente ou o modo como o valor
atribudo a um campo por meio de uma propriedade, voc poder usar
propriedades implementadas automaticamente. Essas propriedades o ajudam a
escrever o cdigo com mais rapidez, bem como facilitam a sua leitura. A seguir
apresentado um exemplo de propriedade implementada automaticamente.
[Visual Basic]
Public Property Name() As String

[Visual C#]
public string Name { get; set; }

Quando o compilador v o cdigo, ele gera automaticamente o cdigo para o
campo existente, bem como para os getters e setters.
A distino entre propriedades e mtodos importante e deve se refletir na forma
como eles so nomeados, como, por exemplo, Name para uma propriedade e
GetName para um mtodo. Em geral, o nome do mtodo deve ser precedido de
um verbo.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Inclus
Pontos
Toda cla
para cri
essas cla
deve de
uma ins
constru

sodeconst
s principais
asse a menos q
ar uma instncia
asses so criadas
erivar ou herdar s
stncia e inicializa
utores para a class
Inclusodefunc
rutoresdec
que seja abstrata
dela. No poss
basicamente com
suas prprias clas
ar a classe. Os ex
se Customer.

ionalidadeemumWebF
lasse
precisa de pelo
svel criar instnc
mo um tipo genr
sses. Um constru
xemplos a seguir m
FormMicrosoftASP.NE
o menos um cons
ias de classes abs
rico a partir do q
tor usado para
mostram dois
T 4-55

trutor
stratas;
ual voc
criar
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-56 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
[Visual Basic]
''' <summary>
''' Default parameterless constructor
''' </summary>
''' <remarks></remarks>
Public Sub New()
' Initialize member backing fields with default values
Me.ID = Guid.NewGuid()
End Sub

Public Sub New(ByVal id As Guid?)
' Initialize member backing fields with passed values
Me.ID = id
End Sub

[Visual C#]
/// <summary>
/// Default parameterless constructor
/// </summary>
public Customer()
{
// Initialize member backing fields with default values
this.ID = Guid.NewGuid();
}

public Customer(Guid? id)
{
// Initialize member backing fields with passed values
this.ID = id;
}

Observe como os construtores atribuem valores aos campos existentes por meio
das propriedades, e no diretamente. Essa uma prtica recomendada que deve ser
seguida, uma vez que as propriedades podem conter qualquer lgica para restringir
os valores que podem ser atribudos a esses campos. Voc pode adicionar a mesma
lgica aos construtores, mas isso duplicaria o cdigo.
Se o mesmo tipo de cdigo e possivelmente partes grandes de cdigo (como
construtores genricos) for usado por vrios desenvolvedores, em geral ser uma
boa ideia criar e distribuir um trecho de cdigo. Trechos de cdigos ficam
disponveis nos editores de texto e cdigo no local apropriado do Visual Studio.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Acess
Pontos
Aps cr
compon
ao comp
compon
DLL CO
classe, v
namesp
Fazer r
Antes d
ao proje

soacompon
s principais
iar tipos pblicos
nentes para outro
ponente da DLL.
nente .NET Fram
OM (Component
voc dever criar
pace e ao nome de
referncia DL
e usar os tipos em
eto do componen
Inclusodefunc
entesemum
s em um compon
s programas. Para
(O componente
mework; ele poder
t Object Model). E
uma instncia do
e classe correspo
LL
m um componen
nte.

ionalidadeemumWebF
mWebForm
nente, voc poder
a isso, necessri
no precisa ser n
r ser outro proje
Em seguida, para
o objeto da classe
ndentes.
nte, necessrio a
FormMicrosoftASP.NE
mASP.NET
r disponibilizar
io primeiro fazer r
necessariamente
eto de sua soluo
a acessar os mto
e fazendo refern
adicionar uma ref
T 4-57

esses
referncia
um
o ou uma
dos da
ncia ao
ferncia
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-58 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Paraadicionarumarefernciaaoprojetodocomponente
Se a sua soluo contiver o aplicativo Web e o projeto do componente, voc
poder adicionar uma referncia ao projeto.
1. Abra o Visual Studio 2010.
2. No menu File, clique em Open Project.
3. Na caixa de dilogo Open Project, na caixa Name, digite
D:\Labfiles\Starter\M4\VB\CustomerManagement.sln.
4. No Solution Explorer, clique com o boto direito do mouse em
D:\Labfiles\Starter\M4\VB\CustomerManagement e, em seguida, clique
em Add Reference.
5. Na caixa de dilogo Add Reference, na guia Projects, clique duas vezes no
projeto de biblioteca de classes necessrio e, em seguida, clique em OK.
O componente ser adicionado pasta References no Solution Explorer. A
referncia torna o namespace do componente acessvel ao aplicativo.


Observao:sevocmantiveroprojetodoaplicativoWebeodabibliotecadeclasses
namesmasoluo,todasasalteraesefetuadasnocomponenteserorefletidas
automaticamentepelareferncia.
ParaadicionarumarefernciaDLLdocomponente
1. Abra seu projeto no Visual Studio 2010.
2. No Solution Explorer, clique com o boto direito do mouse no projeto e
depois clique em Add Reference.
3. Na caixa de dilogo Add Reference, exiba as seguintes guias:
.NET. Exibe os componentes que fazem parte da biblioteca de
classes .NET Framework, alm de outros componentes registrados.
COM. Exibe as DLLs COM que foram registradas no computador.
Project. Exibe uma lista de todos os componentes reutilizveis que foram
criados a partir de projetos locais.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-59
Browse. Se um componente no tiver sido registrado como um
componente .NET ou COM, voc poder procurar sua localizao.
Recent. Exibe uma lista dos componentes adicionados recentemente a
projetos em seu computador.
4. Selecione o componente necessrio e clique em OK.
O componente adicionado pasta References (WAP) ou pasta Bin (WSP)
no Solution Explorer. A referncia torna o namespace do componente acessvel
ao aplicativo.

Criao de uma instncia do objeto
Aps adicionar uma referncia ao componente, voc poder criar uma instncia do
objeto da classe. As linhas de cdigo a seguir declaram uma nova varivel chamada
currentCustomer, da classe Customer, no namespace ComponentNamespace.
[Visual Basic]
Dim currentCustomer As New ComponentNamespace.Customer

[Visual C#]
ComponentNamespace.Customer currentCustomer = new
ComponentNamespace.Customer();

Voc tambm pode usar a instruo using (Visual C#) ou Imports (Visual Basic)
para importar o namespace e, em seguida, criar uma instncia da classe
diretamente. Os exemplos a seguir ilustram isso.
[Visual Basic]
Imports ComponentNamespace
...
Dim currentCustomer As New Customer

[Visual C#]
using ComponentNamespace;
...
Customer currentCustomer = new Customer();

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-60 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Acesso ao objeto
Uma vez criada uma instncia do objeto, voc poder us-lo como qualquer outro
objeto em seu projeto. Todas as propriedades e os mtodos pblicos da classe
esto disponveis para uso. Por exemplo, o cdigo a seguir passa um parmetro
para a funo GetTotalOrderAmount da classe Customer e atribui o valor
retornado varivel total.
[Visual Basic]
Dim total as Double = currentCustomer.GetTotalOrderAmount(startDate)

[Visual C#]
double total = currentCustomer.GetTotalOrderAmount(startDate);

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Lio4
Tratame
Quando
realiza u
da pgin
manute
renderiz
escrever
pretend
conhece
preench
executa
Nesta li
aprende
ordem d
Page.IsP
solicitad

ntodeev
o executada, uma
uma srie de etap
na e dos controle
eno do estado, a
zao. Voc deve
r o cdigo no est
dido. Alm disso,
er o ciclo de vida
her as propriedad
ar o cdigo de com
o, voc aprend
er sobre o ciclo d
dos eventos. Voc
PostBack para co
da inicialmente.
Inclusodefunc
ventosde
a pgina ASP.NET
pas de processam
es, a criao de in
a execuo do c
compreender o c
gio adequado d
caso desenvolva
da pgina para in
des dos controles
mportamento do
der a usar manip
de vida dos even
tambm aprend
ontrolar a execu

ionalidadeemumWebF
epgina
T passa por um ci
mento. Essas etapa
nstncias dos con
digo do manipul
ciclo de vida da p
esse ciclo a fim d
controles person
nicializar corretam
com dados de es
s controles.
puladores de even
tos de pgina, o p
der a usar a prop
o do cdigo qua
FormMicrosoftASP.NE
iclo de vida em q
as incluem a inici
ntroles, a restaura
lador de eventos
pgina para que p
de alcanar o obje
nalizados, voc de
mente os control
stado de Exibio
ntos de pgina. V
processo de postb
priedade
ando a pgina for
T 4-61

que
ializao
o e a
e a
possa
etivo
ever
les,
o e
oc
back e a
r
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-62 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Objetivos da lio
Depois de concluir esta lio, voc ser capaz de:
Descrever o ciclo de vida de um evento de pgina.
Descrever o processo de postback.
Manipular postbacks.
Explicar como manipular eventos de pgina.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Ciclo
Pontos
Quando
eventos
evento d
Ciclo d
O ciclo
na segu
1. Pag
2. Pag
3. Pag
carr
valo

devidadeu
s principais
o uma pgina ASP
s sempre ocorrem
de pgina.
de vida de um e
de vida de um ev
uinte ordem:
ge_Init. Ocorre d
ge_Load. Ocorre
ge_LoadComplet
regados. Voc po
ores a todos os co
Inclusodefunc
umeventod
P.NET solicitad
m na mesma ordem
evento de pgin
vento de pgina in
depois que todos
aps a inicializa
te. Ocorre depois
ode usar esse even
ontroles.

ionalidadeemumWebF
epgina
da, vrios eventos
m, a qual denom
na
nclui os seguinte
os controles so
o dos controles
s que todos os co
nto para se referir
FormMicrosoftASP.NE
de pgina ocorre
minada ciclo de v
es eventos, que oc
inicializados.
s e da carga de to
ontroles da pgina
r a valores ou atr
T 4-63

em. Esses
vida do
correm
dos eles.
a so
ibuir
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-64 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
4. Eventos de controle. Consistem em eventos de alterao (por exemplo,
Textbox1_Changed) e de ao (por exemplo, Button1_Click).
5. Page_Unload. Ocorre quando a pgina fechada ou quando o controle
passado para outra pgina.

No final do ciclo de vida do evento de pgina, a pgina descartada da memria.
A maioria dos eventos de controle ocorre somente aps ser feito o postback do
Web Form no servidor. Por exemplo, os eventos Change so manipulados em uma
ordem aleatria no servidor depois que o formulrio postado. Os eventos Click,
por outro lado, podem fazer com que o formulrio seja enviado imediatamente ao
servidor.
Por exemplo, se um usurio inserir texto em vrios controles de um formulrio e
clicar no boto Submit, os eventos Change dos controles de texto s sero
processados depois que o formulrio for enviado ao servidor em resposta ao
evento Click.

Pergunta: Quais so os eventos mais usados do ciclo de vida da pgina?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Opro
Pontos
Para com
funcion
Page_L
como fa
Qu
Pag
ex
Em
Qu
as i
O s
ela
bem
ocessodePo
s principais
mpreender o pro
nam no ASP.NET,
oad seja executad
azer o postback d
ando o usurio s
ge.IsPostBack no
xecutado.
m seguida, o servid
ando o usurio a
nformaes so e
servidor pode det
mesma. Portanto
m-sucedido, e o c
Inclusodefunc
ostBack
ocesso de postbac
, como fazer com
do somente na p
dos controles no s
olicita pela prime
o evento Page_Lo
dor retorna a pg
altera a seleo na
enviadas de volta
terminar que est
o, o teste de Page
digo do bloco n
ionalidadeemumWebF
ck, voc precisa s
m que o cdigo do
rimeira vez que u
servidor imediata
eira vez uma pgi
oad ocorre com
gina para o usuri
a caixa de listagem
a ao servidor.
ocorrendo o pos
e.IsPostBack no e
no executado.
FormMicrosoftASP.NE
aber como os for
o manipulador de
uma pgina exib
amente.
ina do servidor, o
xito, e o cdigo d
io.
m e clica no bot
stback dessa pg
evento Page_Loa
T 4-65

rmulrios
e eventos
bida e
o teste de
do bloco
o Submit,
ina para
ad no
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-66 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Em vez disso, os manipuladores de eventos dos controles do formulrio (a
caixa de listagem e o boto) so executados. Nesse cenrio, o manipulador de
eventos da caixa de listagem altera o rtulo para refletir a nova seleo da caixa.
Em seguida, o servidor retorna as informaes atualizadas para o cliente. O
usurio exibe a mesma pgina, mas agora o rtulo foi alterado para refletir a
seleo da caixa de listagem.
Para que o novo valor da caixa de listagem seja enviado ao servidor
imediatamente sem que voc precise esperar que o usurio clique no boto
Submit, defina a propriedade AutoPostBack do controle da caixa de listagem
como True.
Com a propriedade AutoPostBack definida como True, assim que o usurio
alterar a seleo na caixa de listagem, as informaes sero enviadas ao
servidor.
O servidor atualizar o rtulo para refletir a alterao e enviar as informaes
atualizadas de volta ao cliente.

Pergunta: Qual propriedade pode ser usada em todos os eventos e no apenas no
evento Load?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Tratam
Pontos
O event
primeira
A prop
Como o
o cdigo
Entretan
cdigo n
que o c
Os exem

mentodepo
s principais
to Page_Load e
a solicitao da p
priedade Page.I
o evento Page_Lo
o do evento Page
nto, se voc usar
novamente. Voc
digo seja execut
mplos a seguir ilu
Inclusodefunc
ostbacks
executado sempre
pgina ou um pos
IsPostBack
oad executado t
e_Load ser exec
eventos de postb
poder usar a pr
tado apenas quan
ustram isso.

ionalidadeemumWebF
e que uma pgina
stback.
toda vez que uma
cutado a cada soli
back, no ser ne
ropriedade Page.
ndo a pgina for s
FormMicrosoftASP.NE
a solicitada, seja
a pgina solicita
icitao da pgina
cessrio executar
.IsPostBack para
solicitada inicialm
T 4-67

a essa a
ada, todo
a.
r todo o
a garantir
mente.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-68 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
[Visual Basic]
Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load

If Not Page.IsPostBack Then
' Executes only on initial page load.
End If

' This code executes on every request.
...
End Sub

[Visual C#]
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// Executes only on initial page load.
}

// This code executes on every request.
...
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Demo
Pontos
Nesta d
manipu
Etapas
Paraex
1. Abr
D:\
2. Exe
3. Alte
man
4. Alte
onstrao:Co
s principais
demonstrao, voc
uladores de event
s da demonstra
xibirocdigo
ra a soluo Even
\Demofiles\M4\
ecute o aplicativo
erne para o Visua
nipulador de eve
erne para o Intern
Inclusodefunc
omomanipu
c exibir a ordem
os e a sada da p
ao
simpleseoma
ntOrder na pasta
\CS.
o Web.
al Studio 2010; de
entos Page_Unloa
net Explorer e ma
ionalidadeemumWebF
ulareventos
m dos eventos de
gina.
anipuladorde
D:\Demofiles\M
epois exiba o cd
ad.
arque o evento P
FormMicrosoftASP.NE
depgina
e pgina, incluind
eventos
M4\VB ou
digo simples e o
Postback.
T 4-69

do os

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-70 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Na prxima demonstrao, voc ver a ordem dos eventos de pgina, incluindo os
manipuladores de eventos e a sada da pgina. Voc pode executar essas tarefas
usando o Visual Basic ou o Visual C#.
importante compreender a ordem em que os eventos so disparados e quando
necessrio diferenciar um postback e um no postback de uma pgina.

Observao:oarquivodasoluoEventOrder.slnnapastaD:\Demofiles\M4\CSou
D:\Demofiles\M4\VBcontmumasoluocompletaparaestademonstrao.
Paraexibiraordemdoseventosdepgina
1. Abra a soluo EventOrder, localizada na pasta D:\Demofiles\M4\VB ou
D:\Demofiles\M4\CS.
No menu Iniciar de 10560A-GEN-DEV, aponte para Todos os Programas,
clique em Microsoft Visual Studio 2010 e clique em Microsoft Visual
Studio 2010.
No menu File do Visual Studio 2010, clique em Open Project.
Na caixa de dilogo Open Project, em File name, digite
D:\Demofiles\M4\CS\EventOrder.sln ou
D:\Demofiles\M4\VB\EventOrder.sln e clique em Open.
2. Execute o aplicativo Web.
No menu Debug do Visual Studio 2010, clique em Start Without
Debugging.

Observao:najanelahttp://localhost:49241/EventOrder/InternetExplorer,observe
quetodososeventostmsadanortuloesquerda.
3. Alterne para o Visual Studio 2010; depois exiba o cdigo simples e o
manipulador de eventos Page_Unload.
Alterne para a janela do Visual Studio 2010 clicando no boto Visual
Studio na barra de tarefas.
No Solution Explorer, expanda Default.aspx, clique com o boto direito
do mouse em Default.aspx.vb ou Default.aspx.cs e, em seguida, clique
em Open.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-71
Na janela Default.aspx.vb ou Default.aspx.cs, mostre o cdigo simples e o
manipulador de eventos Page_Unload, que tambm apresentado no
rtulo, mas que no mostrado na pgina renderizada porque a
renderizao da sada concluda nesse estgio.
[Visual Basic]
Protected Sub Page_Unload(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Unload
If Not Me.IsPostBack Then
NonPostBackEventLabel.Text &= "Unload event<br />"
Else
PostBackEventLabel.Text &= "Unload event<br />"
End If
End Sub

[Visual C#]
protected void Page_Unload(object sender, EventArgs e)
{
if (!this.IsPostBack)
NonPostBackEventLabel.Text += "Unload event";
else
PostBackEventLabel.Text += "Unload event";
}

4. Alterne para o Internet Explorer e marque o evento Postback.
a. Clique no boto Internet Explorer na barra de tarefas.
b. Na janela http://localhost:49241/EventOrder/ Internet Explorer, clique
no boto Postback.
c. Na janela EventOrder Microsoft Visual Studio, clique no boto Close.
d. Na janela http://localhost:49241/EventOrder/default.aspx Internet
Explorer, clique no boto Close.

Pergunta: Descreva o uso do boto Events na janela Properties.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-72 Introduo
Laborat
WebFor

Observa
program
deprog
Seestive
fornecid
Introdu
Neste la
um site
Web. Al
no site.

aoDesenvolvimentonaW
rio: Inclu
rmMicro
ao:vocpodee
maoVisualBasic
ramao,consulte
erusandooVisual
asnaSeo2do
uo
aboratrio, voc i
ASP.NET e criar
lm disso, voc im

WebcomoMicrosoftV
usodef
softASP.
executarastarefas
ouVisualC#.See
easetapasfornecid
C#comolinguag
documentodolab
implementar o c
um component
mplementar eve

VisualStudio2010
uncionali
.NET
nestelaboratrio
estiverusandooVi
dasnaSeo1do
emdeprograma
boratrio.
cdigo e os proce
te, ao qual far re
entos de controle
idadeem
usandoalinguage
isualBasiccomoli
odocumentodola
o,consulteaseta
edimentos de even
eferncia no aplic
de pgina e de se
mum

emde
nguagem
aboratrio.
apas
nto em
ativo
ervidor
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-73
Objetivos
Depois de concluir este laboratrio, voc ser capaz de:
Implementar o cdigo em um aplicativo Web.
Criar procedimentos de evento.
Criar um componente de entidade e, em seguida, fazer referncia a ele em um
aplicativo Web.
Manipular eventos de controle de servidor e pgina.

Configurao do laboratrio
Neste laboratrio, voc usar o ambiente de mquina virtual disponvel. Antes de
iniciar o laboratrio, voc deve:
Inicie a mquina virtual 10560A-GEN-DEV e depois faa logon usando as
seguintes credenciais:
Nome de usurio: Aluno
Senha: Pa$$w0rd

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-74 Introduo
Cenr
Voc tra
possui u
persona
Sua org
seus clie
inserir e
Para faz
que o ap
disso, v
desemp
compila

aoDesenvolvimentonaW
riodelabora
abalha como dese
uma base global d
alizar e gerenciar
anizao utiliza u
entes. Ela deseja
e salvar detalhes d
zer isso, voc prec
plicativo possa re
oc precisa garan
penho adicionand
ado, o que econom
WebcomoMicrosoftV
atrio
envolvedor na Co
de clientes. Ela u
as informaes d
um site separado
tornar o site din
dos clientes com
cisa anexar o cd
esponder s ae
ntir que o aplicati
do o cdigo a um
mizar um tempo

VisualStudio2010
ontoso, Ltd, uma
tiliza aplicativos
dos clientes.
para simplificar
mico a fim de qu
um tempo de re
digo necessrio
s do usurio e a o
ivo alcance um n
m arquivo de class
o considervel de
a grande organiza
Microsoft .NET p
e agilizar a intera
ue os usurios po
torno mnimo.
interface do usu
outros eventos. A
vel especificado
se code-behind pr
e processamento.

ao que
para criar,
ao com
ossam
rio para
Alm
de
r-
.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-75
Seo1:VisualBasic
Exerccio1:ImplementaodecdigoemumaplicativoWeb
Estas so as principais tarefas do exerccio:
1. Abrir um site ASP.NET existente.
2. Abrir o arquivo code-behind de um Formulrio Web existente.

Tarefa1:AbrirumsiteASP.NETexistente
Faa logon na mquina virtual 10560A-GEN-DEV como Aluno, com a senha
Pa$$w0rd.
Abra o Visual Studio 2010.
Abra a soluo CustomerManagement, localizada na pasta
D:\Labfiles\Starter\M4\VB.

Tarefa2:Abriroarquivocode-behinddeumFormulrioWeb
existente
Abra o arquivo code-behind do Formulrio Web InsertCustomer usando o
comando de menu de contexto View Code.

Resultados:Depoisdeconcluiresteexerccio,vocterabertoosite
CustomerManagementexistenteeoarquivocode-behinddoFormulrioWeb
InsertCustomer.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-76 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio2:Criaodeprocedimentosdeevento
Estas so as principais tarefas do exerccio:
1. Criar um procedimento de evento para o evento Click do boto Insert.
2. Criar um procedimento de evento para o evento Click do boto Cancel.
3. Criar um procedimento de evento para o evento Page_Load.
4. Criar um procedimento de evento para o evento Page_LoadComplete.
5. Criar um procedimento de evento para o evento Page_Unload.

Tarefa1:CriarumprocedimentodeeventoparaoeventoClickdo
botoInsert
Abra o Formulrio Web InsertCustomer no modo Design e crie um
procedimento de evento para o evento Click do boto Insert, clicando duas
vezes no controle Button.

Observao:observequeoprocedimentodeeventoinicialdoeventoClickdocontrole
CustomerInsertButtonadicionadonajaneladecdigo.

Tarefa2:CriarumprocedimentodeeventoparaoeventoClickdo
botoCancel
Abra o Formulrio Web InsertCustomer no modo Design e crie um
procedimento de evento para o evento Click do boto Cancel, clicando duas
vezes na caixa ao lado do evento Click na janela Properties, com o controle
Button selecionado no Designer.

Observao:observequeoprocedimentodeeventoinicialparaoeventoClickdo
controleCustomerCancelButtonadicionadoclassenajaneladecdigo.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-77
Tarefa3:CriarumprocedimentodeeventoparaoeventoPage_Load
Crie um procedimento de evento para o evento Page_Load.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

End Sub

Tarefa4:Criarumprocedimentodeeventoparaoevento
Page_LoadComplete
Crie um procedimento de evento para o evento Page_LoadComplete.
Protected Sub Page_LoadComplete(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.LoadComplete

End Sub

Tarefa5:Criarumprocedimentodeeventoparaoevento
Page_Unload
Crie um procedimento de evento para o evento Page_Unload.
Protected Sub Page_Unload(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Unload

End Sub

Resultados:Depoisdeconcluiresteexerccio,voctercriadoprocedimentosde
eventoparacontrolesdeboto,oeventoPage_Load,oeventoPage_LoadComplete
eoeventoPage_Unload.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-78 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio3:Criaodeumcomponentedeentidade
Estas so as principais tarefas do exerccio:
1. Criar um componente de entidade.
2. Adicionar os campos de membros da classe
3. Adicionar as propriedades.
4. Adicionar os construtores.
5. Fazer referncia ao projeto CustomerManagementEntities a partir do projeto
CustomerManagement.
6. Adicionar uma declarao de membro do cliente.

Tarefa1:Criarumcomponentedeentidade
Crie o projeto de biblioteca de classes CustomerManagementEntities usando
o item de projeto Class Library na caixa de dilogo Add New Project.
Coloque o novo projeto na pasta D:\Labfiles\Starter\M4\VB.

Observao:observequeoprojetodebibliotecadeclassesCustomerManagementEntities
adicionadosoluo.
Renomeie o arquivo de classe padro Class1.vb como Customer.vb.

Tarefa2:Adicionaroscamposdemembrosdaclasse
Na classe Customer, adicione uma regio chamada Class member fields, logo
abaixo da declarao da classe.
#Region "Class member fields"
#End Region

Na classe Customer, na regio Class member fields, adicione um campo de
membro privado chamado customerFirstName para o nome do cliente, do
tipo String, e inicialize-o como Nothing.
Private customerFirstName As String = Nothing

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-79
Na classe Customer, na regio Class member fields, adicione um campo de
membro privado denominado customerLastName para o sobrenome do
cliente, do tipo String, e inicialize-o como Nothing.
Private customerLastName As String = Nothing

Na classe Customer, na regio Class member fields, adicione um campo de
membro privado denominado customerAddress para o endereo do cliente,
do tipo String, e inicialize-o como Nothing.
Private customerAddress As String = Nothing

Acrescente os campos existentes restantes usando um trecho de cdigo
chamado Customer class backing fields. O trecho de cdigo foi fornecido
pelo desenvolvedor snior e colocado na pasta My Code Snippets. Posicione
o cursor e clique com o boto direito do mouse na linha aps a declarao do
campo existentes customerAddress e insira o trecho clicando em Insert Snippet.
Private customerZipCode As String = Nothing
Private customerCity As String = Nothing
Private customerState As String = Nothing
Private customerCountryID As Guid? = Nothing
Private customerPhone As String = Nothing
Private customerEmailAddress As String = Nothing
Private customerWebAddress As String = Nothing
Private customerCreditLimit As Integer = 0
Private customerNewsSubscriber As Boolean = False
Private customerCreatedDate As DateTime? = Nothing
Private customerCreatedBy As String = Nothing
Private customerModifiedDate As DateTime? = Nothing
Private customerModifiedBy As String = Nothing

Tarefa3:Adicionaraspropriedades
Na classe Customer, adicione uma regio chamada Properties, abaixo da
regio Class member fields.
#Region "Properties"
#End Region


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-80 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Na classe Customer, na regio Properties, acrescente um a propriedade
pblica implementada automaticamente chamada ID, do tipo nullable Guid.
''' <summary>
''' The unique customer ID
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property ID() As Guid?

Na classe Customer, na regio Properties, adicione uma propriedade pblica
chamada FirstName, do tipo String, que defina e obtenha o campo existente
de membro privado chamado customerFirstName, e certifique-se de que ele
tenha no mximo 50 caracteres usando as linhas de cdigo a seguir.
''' <summary>
''' The customer first name
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property FirstName As String
Get
Return Me.customerFirstName
End Get

Set(ByVal value As String)
' Null value?
If Value Is Nothing Then
Me.customerFirstName = String.Empty
Else
' Only get the first 50 characters
If (Value.Length > 50) Then
Me.customerFirstName = value.Substring(0, 50)
Else
Me.customerFirstName = value
End If
End If
End Set
End Property

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-81
Na classe Customer, na regio Properties, adicione uma propriedade pblica
denominada LastName, do tipo String, que defina e obtenha o campo existente
de membro privado denominado customerLastName, e certifique-se de que
ele tenha no mximo 30 caracteres usando as linhas de cdigo a seguir.
''' <summary>
''' The customer last name
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property LastName As String
Get
Return Me.customerLastName
End Get

Set(ByVal value As String)
' Null value?
If value Is Nothing Then
Me.customerLastName = String.Empty
Else
' Only get the first 30 characters
If (value.Length > 30) Then
Me.customerLastName = value.Substring(0, 30)
Else
Me.customerLastName = value
End If
End If
End Set
End Property

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-82 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Na classe Customer, na regio Properties, adicione uma propriedade pblica
denominada Address, do tipo String, que defina e obtenha o campo existente
de membro privado denominado customerAddress, e certifique-se de que ele
tenha no mximo 50 caracteres usando as linhas de cdigo a seguir.
''' <summary>
''' The customer address, including street name, house number and
floor
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property Address As String
Get
Return Me.customerAddress
End Get

Set(ByVal value As String)
' Null value?
If value Is Nothing Then
Me.customerAddress = String.Empty
Else
' Only get the first 50 characters
If (value.Length > 50) Then
Me.customerAddress = value.Substring(0, 50)
Else
Me.customerAddress = value
End If
End If
End Set
End Property

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-83
Acrescente as propriedades restantes regio Properties, usando um trecho
de cdigo chamado Customer class properties. O trecho de cdigo foi
fornecido pelo desenvolvedor snior e colocado na pasta My Code Snippets.
Posicione o cursor e clique com o boto direito do mouse na linha aps a
declarao da propriedade Address e insira o trecho clicando em Insert Snippet.
''' <summary>
''' The customer zip code or postal code
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property ZipCode() As String
Get
Return Me.customerZipCode
End Get
Set(ByVal value As String)
' Null value?
If value Is Nothing Then
Me.customerZipCode = ""
Else
' Only get the first 10 characters
If (value.Length > 10) Then
Me.customerZipCode = value.Substring(0, 10)
Else
Me.customerZipCode = value
End If
End If
End Set
End Property

''' <summary>
''' The name of the city in which the customer lives
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-84 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Public Property City() As String
Get
Return Me.customerCity
End Get
Set(ByVal value As String)
' Null value?
If value Is Nothing Then
Me.customerCity = ""
Else
' Only get the first 30 characters
If (value.Length > 30) Then
Me.customerCity = value.Substring(0, 30)
Else
Me.customerCity = value
End If
End If
End Set
End Property

''' <summary>
''' The name of the state or region in which the customer lives
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property State() As String
Get
Return Me.customerState
End Get
Set(ByVal value As String)
' Null value?
If value Is Nothing Then
Me.customerState = ""
Else
' Only get the first 30 characters
If (value.Length > 30) Then
Me.customerState = value.Substring(0, 30)
Else
Me.customerState = value
End If
End If
End Set
End Property
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-85

''' <summary>
''' The ID of the country in which the customer lives
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property CountryID() As Guid?
Get
Return Me.customerCountryID
End Get
Set(ByVal value As Guid?)
Me.customerCountryID = value
End Set
End Property

''' <summary>
''' The customer phone number
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property Phone() As String
Get
Return Me.customerPhone
End Get
Set(ByVal value As String)
' Null value?
If value Is Nothing Then
Me.customerPhone = ""
Else
' Only get the first 30 characters
If (value.Length > 30) Then
Me.customerPhone = value.Substring(0, 30)
Else
Me.customerPhone = value
End If
End If
End Set
End Property

''' <summary>
''' The customer e-mail address
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
(O cdigo continua na prxima pgina.)
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-86 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Public Property EmailAddress() As String
Get
Return Me.customerEmailAddress
End Get
Set(ByVal value As String)
If (value Is Nothing) Then
Me.customerEmailAddress = ""
Else
' Only get the first 50 characters
If (value.Length > 50) Then
Me.customerEmailAddress = value.Substring(0, 50)
Else
Me.customerEmailAddress = value
End If
End If
End Set
End Property

''' <summary>
''' The customer web address
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property WebAddress() As String
Get
Return Me.customerWebAddress
End Get
Set(ByVal value As String)
If (value Is Nothing) Then
Me.customerWebAddress = ""
Else
' Only get the first 80 characters
If (value.Length > 80) Then
Me.customerWebAddress = value.Substring(0, 80)
Else
Me.customerWebAddress = value
End If
End If
End Set
End Property
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-87

''' <summary>
''' The current credit limit of the customer
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property CreditLimit() As Integer
Get
Return Me.customerCreditLimit
End Get
Set(ByVal value As Integer)
' Negative value?
If value < 0 Then
Me.customerCreditLimit = 0
Else
Me.customerCreditLimit = value
End If
End Set
End Property

''' <summary>
''' Does the customer subscriber to news?
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property NewsSubsriber() As Boolean
Get
Return Me.customerNewsSubscriber
End Get
Set(ByVal value As Boolean)
Me.customerNewsSubscriber = value
End Set
End Property

''' <summary>
''' The date the customer was created in the system
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-88 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Public Property CreatedDate() As DateTime?
Get
Return Me.customerCreatedDate
End Get
Private Set(ByVal value As DateTime?)
' Date in the past?
If (value < DateTime.Now) Then
Me.customerCreatedDate = DateTime.Now
Else
Me.customerCreatedDate = value
End If
End Set
End Property

''' <summary>
''' The name of the user creating the customer
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property CreatedBy() As String
Get
Return Me.customerCreatedBy
End Get
Set(ByVal value As String)
' Null value?
If value Is Nothing Then
Me.customerCreatedBy = ""
Else
' Only get the first 15 characters
If (value.Length > 15) Then
Me.customerCreatedBy = value.Substring(0, 15)
Else
Me.customerCreatedBy = value
End If
End If
End Set
End Property

''' <summary>
''' The date the customer was last modified in the system
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-89
Public Property ModifiedDate() As DateTime?
Get
Return Me.customerModifiedDate
End Get
Set(ByVal value As DateTime?)
' Date in the past?
If value < DateTime.Now Then
Me.customerModifiedDate = DateTime.Now
Else
Me.customerModifiedDate = value
End If
End Set
End Property

''' <summary>
''' The name of the user who last modified the customer
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property ModifiedBy() As String
Get
Return Me.customerModifiedBy
End Get
Set(ByVal value As String)
' Null value?
If value Is Nothing Then
Me.customerModifiedBy = ""
Else
' Only get the first 15 characters
If (value.Length > 15) Then
Me.customerModifiedBy = value.Substring(0, 15)
Else
Me.customerModifiedBy = value
End If
End If
End Set
End Property

Tarefa4:Adicionarosconstrutores
Na classe Customer, adicione uma regio chamada Constructors abaixo da
regio Properties.
#Region "Constructors"
#End Region
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-90 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Na classe Customer, na regio Constructors, adicione o construtor pblico
padro sem parmetros que inicializa os campos de membro customerID e
customerCreatedDate usando as propriedades pblicas.
''' <summary>
''' Default parameterless constructor
''' </summary>
''' <remarks></remarks>
Public Sub New()
' Initialize backing fields with default values
Me.ID = Guid.NewGuid()
Me.CreatedDate = DateTime.Now
End Sub

Acrescente as propriedades restantes na regio Constructors, usando um trecho
de cdigo denominado Customer class constructors. O trecho de cdigo foi
fornecido pelo desenvolvedor snior e colocado na pasta My Code Snippets.
Posicione o cursor e clique com o boto direito do mouse na linha aps o
construtor sem parmetros padro e insira o trecho clicando em Insert Snippet.
''' <summary>
''' Initializes backing fields with passed and default values
''' </summary>
''' <param name="id"></param>
''' <remarks></remarks>
Public Sub New(ByVal id As Guid?)
' Initialize backing fields with passed and default values
Me.ID = id
Me.CreatedDate = DateTime.Now
End Sub

''' <summary>
''' Initializes with a value for all backing fields
''' </summary>
''' <param name="id"></param>
''' <param name="firstName"></param>
''' <param name="lastName"></param>
''' <param name="address"></param>
''' <param name="zipCode"></param>
''' <param name="city"></param>
''' <param name="state"></param>
''' <param name="countryID"></param>
''' <param name="phone"></param>
''' <param name="emailAddress"></param>
(O cdigo continua na prxima pgina.)
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-91
''' <param name="webAddress"></param>
''' <param name="creditLimit"></param>
''' <param name="newsSubscriber"></param>
''' <param name="createdDate"></param>
''' <param name="createdBy"></param>
''' <param name="modifiedDate"></param>
''' <param name="modifiedBy"></param>
''' <remarks></remarks>
Public Sub New(ByVal id As Guid?, ByVal firstName As String, ByVal
lastName As String,
ByVal address As String, ByVal zipCode As String, ByVal city
As String, ByVal state As String,
ByVal countryID As Guid?, ByVal phone As String, ByVal
emailAddress As String,
ByVal webAddress As String, ByVal creditLimit As Integer,
ByVal newsSubscriber As Boolean,
ByVal createdDate As DateTime?, ByVal createdBy As String,
ByVal modifiedDate As DateTime?,
ByVal modifiedBy As String)

' Initialize member backing fields with passed values
Me.ID = id
Me.FirstName = firstName
Me.LastName = lastName
Me.Address = address
Me.ZipCode = zipCode
Me.City = city
Me.State = state
Me.CountryID = countryID
Me.Phone = phone
Me.EmailAddress = emailAddress
Me.WebAddress = webAddress
Me.CreditLimit = creditLimit
Me.NewsSubscriber = newsSubscriber

If Not createdDate Is Nothing Then
Me.CreatedDate = createdDate
Else
Me.CreatedDate = DateTime.Now
End If

Me.CreatedBy = createdBy
Me.ModifiedDate = modifiedDate
Me.ModifiedBy = modifiedBy
End Sub
Salve as alteraes em Customer.vb.
Compile o componente e corrija todos os erros.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-92 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa5:FazerrefernciaaoprojetoCustomerManagementEntitiesa
partirdoprojetoCustomerManagement
Adicione uma referncia ao projeto CustomerManagement usando a caixa de
dilogo Add Reference. Faa referncia ao projeto
CustomerManagementEntities a partir do projeto CustomerManagement.

Tarefa6:Adicionarumadeclaraodemembrodocliente
Abra o arquivo InsertCustomer.aspx.vb.
Na janela do cdigo InsertCustomer.aspx.vb, adicione uma declarao de
membro de classe particular da classe Customer no namespace
CustomerManagementEntities, chamada currentCustomer, e inicialize-a
como Nothing.
Private currentCustomer As CustomerManagementEntities.Customer =
Nothing

Resultados:Depoisdeconcluiresteexerccio,voctercriadoumnovocomponente
usandooprojetodeBibliotecadeClasses,adicionadoumarefernciaaoprojetodo
componenteapartirdositeeadicionadoumavariveldemembrodotipoCustomer.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-93
Exerccio4:Manipulaodeeventosdecontroleepgina
Estas so as principais tarefas do exerccio:
1. Criar uma instncia do objeto Customer.
2. Preencher os controles da interface do usurio.
3. Destruir os objetos.
4. Tratar do cancelamento pelo usurio.
5. Salvar as informaes do cliente.

Tarefa1:InstanciaroobjetoCustomer
Crie uma instncia do objeto Customer usando o cdigo a seguir.
''' <summary>
''' Instantiates Customer object
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
' Instantiate Customer
instantiateCustomerObject()
End Sub

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-94 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Acrescente o cdigo a seguir classe InsertCustomer.
''' <summary>
''' Instantiates and populates the Customer member object
''' </summary>
''' <remarks></remarks>
Private Sub instantiateCustomerObject()
' First time loading page?
If Not Me.IsPostBack Then
' Instantiate new Customer object
currentCustomer = New
CustomerManagementEntities.Customer()
Else
' Instantiate new Customer object with user input
currentCustomer = New CustomerManagementEntities.Customer(
Nothing, CustomerFirstNameTextBox.Text,
CustomerLastNameTextBox.Text,
CustomerAddressTextBox.Text,
CustomerZipCodeTextBox.Text, CustomerCityTextBox.Text,
CustomerStateTextBox.Text, Nothing,
CustomerPhoneTextBox.Text,
CustomerEmailAddressTextBox.Text,
CustomerWebAddressTextBox.Text, -1,
CustomerNewsSubscriberCheckBox.Checked, DateTime.Now,
_
"", Nothing, "")
End If
End Sub

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-95
Tarefa2:Popularoscontrolesdainterfacedousurio
Na classe InsertCustomer, preencha os controles do servidor na interface do
usurio utilizando os valores do objeto Customer particular currentCustomer.
''' <summary>
''' Populates UI controls
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub Page_LoadComplete(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.LoadComplete
' Populate the UI controls
populateUI()
End Sub

''' <summary>
''' Populates the UI controls with the values in the
''' current Customer object
''' </summary>
''' <remarks></remarks>
Private Sub populateUI()
CustomerFirstNameTextBox.Text = currentCustomer.FirstName
CustomerLastNameTextBox.Text = currentCustomer.LastName
CustomerAddressTextBox.Text = currentCustomer.Address
CustomerZipCodeTextBox.Text = currentCustomer.ZipCode
CustomerCityTextBox.Text = currentCustomer.City
CustomerStateTextBox.Text = currentCustomer.State

If currentCustomer.CountryID.HasValue Then
CustomerCountryDropDownList.SelectedValue =
currentCustomer.CountryID.Value.ToString()
Else
CustomerCountryDropDownList.SelectedIndex = -1
End If

CustomerPhoneTextBox.Text = currentCustomer.Phone
CustomerEmailAddressTextBox.Text =
currentCustomer.EmailAddress
CustomerWebAddressTextBox.Text = currentCustomer.WebAddress
CustomerCreditLimitTextBox.Text =
currentCustomer.CreditLimit.ToString()
CustomerNewsSubscriberCheckBox.Checked =
currentCustomer.NewsSubscriber
End Sub

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-96 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa3:Destruirosobjetos
Na classe InsertCustomer, destrua os objetos usados na classe que no so
tratados automaticamente pelo coletor de lixo.
''' <summary>
''' Destroys objects
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub Page_Unload(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Unload
' Destroy Customer object
currentCustomer = Nothing
End Sub

Tarefa4:Tratardocancelamentopelousurio
Na classe InsertCustomer, trate do cancelamento pelo usurio fazendo o
redirecionamento para a home page.
''' <summary>
''' Redirects to home page
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub CustomerCancelButton_Click(ByVal sender As Object,
ByVal e As System.EventArgs) Handles CustomerCancelButton.Click
' Redirect to home page
Response.Redirect("~/Default.aspx")
End Sub

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-97
Tarefa5:Salvarasinformaesdocliente
Na classe InsertCustomer, prepare-se para salvar as informaes fornecidas
pelo cliente no armazenamento persistente quando o usurio clicar no boto
Insert.
''' <summary>
''' Saves the current customer information and adds default values
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub customerInsertButton_Click(ByVal sender As Object,
ByVal e As System.EventArgs) Handles customerInsertButton.Click
' Add the current user name
currentCustomer.CreatedBy = Context.User.Identity.Name
' Add the user credit limit
currentCustomer.CreditLimit = 50000
End Sub

Salve as alteraes em InsertCustomer.aspx.vb.
Compile a soluo e corrija todos os erros.
Fechar o Visual Studio 2010.

Observao:observequeavalidaoconcludacomxito.

Observao:ocdigoinicialparasalvarasinformaesdoclientecriadoaqui.
Entretanto,ocdigofinalparasalvarnobancodedadossercriadonoMdulo8.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-98 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa6:Desativaramquinavirtualereverterasalteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Resultados:Depoisdeconcluiresteexerccio,vocteradicionadoumcdigopara
manipularoseventosPage.Load,Page.LoadCompleteePage.UnloaddoWebForm
InsertCustomereadicionadoumcdigoparamanipularoeventoClickdoscontroles
debotoInserteCancel.

Observao:asrespostasdosexercciosestonoCDcomplementardocurso.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-99
Seo2:VisualC#
Exerccio1:ImplementaodecdigoemumaplicativoWeb
Estas so as principais tarefas do exerccio:
1. Abrir um site ASP.NET existente.
2. Abrir o arquivo code-behind de um Web Form existente.

Tarefa1:AbrirumsiteASP.NETexistente
Faa logon em 10560A-GEN-DEV como Aluno, com a senha Pa$$w0rd.
Abra o Microsoft Visual Studio 2010.
Abra a soluo CustomerManagement, localizada na pasta
D:\Labfiles\Starter\M4\CS.

Tarefa2:Abriroarquivocode-behinddeumWebFormexistente
Abra o arquivo code-behind do Formulrio Web InsertCustomer, usando o
comando de menu de contexto View Code.

Resultados:depoisdeconcluiresteexerccio,vocterabertoosite
CustomerManagementexistenteeoarquivocode-behinddoFormulrioWeb
InsertCustomer.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-100 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio2:Criaodeprocedimentosdeevento
Estas so as principais tarefas do exerccio:
1. Criar um procedimento de evento para o evento Click do boto Insert.
2. Criar um procedimento de evento para o evento Click do boto Cancel.
3. Criar um procedimento de evento para o evento Page_LoadComplete.
4. Criar um procedimento de evento para o evento Page_Unload.

Tarefa1:CriarumprocedimentodeeventoparaoeventoClickdo
botoInsert
Abra o Formulrio Web InsertCustomer no modo Design e crie um
procedimento de evento para o evento Click do boto Insert, clicando duas
vezes no controle Button.

Observao:observequeoprocedimentodeeventoinicialdoeventoClickdocontrole
CustomerInsertButtonadicionadonajaneladecdigo.
Tarefa2:CriarumprocedimentodeeventoparaoeventoClickdo
botoCancel
Abra o Formulrio Web InsertCustomer no modo Design e crie um
procedimento de evento para o evento Click do boto Cancel, clicando duas
vezes na caixa ao lado do evento Click na janela Properties, com o controle
Button selecionado no Designer.

Observao:observequeoprocedimentodeeventoinicialparaoeventoClickdo
controleCustomerCancelButtonadicionadoclassenajaneladecdigo.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-101
Tarefa3:Criarumprocedimentodeeventoparaoevento
Page_LoadComplete
protected void Page_LoadComplete(object sender, EventArgs e)
{

}

Tarefa4:CriarumprocedimentodeeventoparaoeventoPage_Unload
protected void Page_Unload(object sender, EventArgs e)
{

}

Resultados:depoisdeconcluiresteexerccio,voctercriadoprocedimentosde
eventoparacontrolesdeboto,oeventoPage_LoadCompleteeoevento
Page_Unload.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-102 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio3:Criaodeumcomponentedeentidade
Estas so as principais tarefas do exerccio:
1. Criar um componente de entidade.
2. Adicionar os campos de membros da classe.
3. Adicionar as propriedades.
4. Adicionar os construtores.
5. Fazer referncia ao projeto CustomerManagementEntities a partir do projeto
CustomerManagement.
6. Adicionar uma declarao de membro do cliente.

Tarefa1:Criarumcomponentedeentidade
Crie o projeto de biblioteca de classes CustomerManagementEntities usando
o item de projeto Class Library na caixa de dilogo Add New Project.
Coloque o novo projeto na pasta D:\Labfiles\Starter\M4\CS.

Observao:observequeoprojetodebibliotecadeclassesCustomerManagementEntities
adicionadosoluo.
Renomeie o arquivo de classe padro, Class1.cs, como Customer.cs.

Tarefa2:Adicionaroscamposdemembrosdaclasse
Na classe Customer, adicione uma regio chamada Class member fields, logo
abaixo da declarao da classe.
#region Class member fields
#endregion

Na classe Customer, na regio Class member fields, adicione um campo de
membro particular denominado customerFirstName para o nome do cliente,
do tipo string, e inicialize-o como null.
private string customerFirstName = null;

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-103
Na classe Customer, na regio Class member fields, adicione um campo de
membro particular denominado customerLastName para o sobrenome do
cliente, do tipo String, e inicialize-o como null.
private string customerLastName = null;

Na classe Customer, na regio Class member fields, adicione um campo de
membro particular denominado customerAddress para o endereo do cliente,
do tipo String, e inicialize-o como null.
private string customerAddress = null;

Acrescente os campos existentes restantes usando um trecho de cdigo chamado
Customer class backing fields. O trecho de cdigo foi fornecido pelo
desenvolvedor snior e colocado na pasta My Code Snippets. Posicione o
cursor e clique com o boto direito do mouse na linha aps a declarao do
campo de backup customerAddress e insira o trecho clicando em Insert Snippet.
private string customerZipCode = null;
private string customerCity = null;
private string customerState = null;
private Guid? customerCountryID = null;
private string customerPhone = null;
private string customerEmailAddress = null;
private string customerWebAddress = null;
private int customerCreditLimit = 0;
private bool customerNewsSubscriber = false;
private DateTime? customerCreatedDate = null;
private string customerCreatedBy = null;
private DateTime? customerModifiedDate = null;
private string customerModifiedBy = null;

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-104 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa3:Adicionaraspropriedades
Na classe Customer, adicione uma regio chamada Properties, abaixo da
regio Class member fields.
#region Properties
#endregion

Na classe Customer, na regio Properties, acrescente um a propriedade
pblica implementada automaticamente chamada ID, do tipo nullable Guid.
/// <summary>
/// The unique customer ID
/// </summary>
public Guid? ID { get; set; }

Na classe Customer, na regio Properties, adicione uma propriedade pblica
chamada FirstName, do tipo string, que defina e obtenha o campo existente
de membro privado chamado customerFirstName. Certifique-se de que ele
tenha no mximo 50 caracteres usando as linhas de cdigo a seguir.
/// <summary>
/// The customer first name
/// </summary>
public string FirstName
{
get
{
return this.customerFirstName;
}
set
{
// Null value?
if (value == null)
this.customerFirstName = "";
else
// Only get the first 50 characters
if (value.Length > 50)
this.customerFirstName = value.Substring(0, 50);
else
this.customerFirstName = value;
}
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-105
Na classe Customer, na regio Properties, adicione uma propriedade pblica
denominada LastName, do tipo string, que defina e obtenha o campo
existente de membro privado denominado customerLastName. Certifique-se
de que ele tenha no mximo 30 caracteres usando as linhas de cdigo a seguir.
/// <summary>
/// The customer last name
/// </summary>
public string LastName
{
get
{
return this.customerLastName;
}
set
{
// Null value?
if (value == null)
this.customerLastName = "";
else
// Only get the first 30 characters
if (value.Length > 30)
this.customerLastName = value.Substring(0, 30);
else
this.customerLastName = value;
}
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-106 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Na classe Customer, na regio Properties, adicione uma propriedade pblica
denominada Address, do tipo string, que defina e obtenha o campo existente
de membro privado denominado customerAddress. Certifique-se de que ele
tenha no mximo 50 caracteres usando as linhas de cdigo a seguir.
/// <summary>
/// The customer address, including street name, house number and
floor
/// </summary>
public string Address
{
get
{
return this.customerAddress;
}
set
{
// Null value?
if (value == null)
this.customerAddress = "";
else
// Only get the first 50 characters
if (value.Length > 50)
this.customerAddress = value.Substring(0, 50);
else
this.customerAddress = value;
}
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-107
Acrescente as propriedades restantes regio Properties, usando um trecho
de cdigo chamado Customer class properties. O trecho de cdigo foi
fornecido pelo desenvolvedor snior e colocado na pasta My Code Snippets.
Posicione o cursor e clique com o boto direito do mouse na linha aps a
declarao da propriedade Address e insira o trecho clicando em Insert
Snippet.
/// <summary>
/// The customer zip code or postal code
/// </summary>
public string ZipCode
{
get
{
return this.customerZipCode;
}
set
{
// Null value?
if (value == null)
this.customerZipCode = "";
else
// Only get the first 10 characters
if (value.Length > 10)
this.customerZipCode = value.Substring(0, 10);
else
this.customerZipCode = value;
}
}

/// <summary>
/// The name of the city in which the customer lives
/// </summary>
public string City
{
get
{
return this.customerCity;
}
set
{
// Null value?
if (value == null)
this.customerCity = "";
else
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-108 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
// Only get the first 30 characters
if (value.Length > 30)
this.customerCity = value.Substring(0, 30);
else
this.customerCity = value;
}
}

/// <summary>
/// The name of the state or region in which the customer lives
/// </summary>
public string State
{
get
{
return this.customerState;
}
set
{
// Null value?
if (value == null)
this.customerState = "";
else
// Only get the first 30 characters
if (value.Length > 30)
this.customerState = value.Substring(0, 30);
else
this.customerState = value;
}
}

/// <summary>
/// The ID of the country in which the customer lives
/// </summary>
public Guid? CountryID
{
get
{
return this.customerCountryID;
}
set
{
this.customerCountryID = value;
}
}
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-109

/// <summary>
/// The customer phone number
/// </summary>
public string Phone
{
get
{
return this.customerPhone;
}
set
{
// Null value?
if (value == null)
this.customerPhone = "";
else
// Only get the first 30 characters
if (value.Length > 30)
this.customerPhone = value.Substring(0, 30);
else
this.customerPhone = value;
}
}

/// <summary>
/// The customer e-mail address
/// </summary>
public string EmailAddress
{
get
{
return this.customerEmailAddress;
}
set
{
// Null value?
if (value == null)
this.customerEmailAddress = "";
else
// Only get the first 50 characters
if (value.Length > 50)
this.customerEmailAddress = value.Substring(0,
50);
else
this.customerEmailAddress = value;
}
}
(O cdigo continua na prxima pgina.)
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-110 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

/// <summary>
/// The customer Web address
/// </summary>
public string WebAddress
{
get
{
return this.customerWebAddress;
}
set
{
// Null value?
if (value == null)
this.customerWebAddress = "";
else
// Only get the first 80 characters
if (value.Length > 80)
this.customerWebAddress = value.Substring(0, 80);
else
this.customerWebAddress = value;
}
}

/// <summary>
/// The current credit limit of the customer
/// </summary>
public int CreditLimit
{
get
{
return this.customerCreditLimit;
}
set
{
// Negative value?
if (value < 0)
this.customerCreditLimit = 0;
else
this.customerCreditLimit = value;
}
}
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-111

/// <summary>
/// Does the customer subscriber to news?
/// </summary>
public bool NewsSubscriber
{
get
{
return this.customerNewsSubscriber;
}
set
{
this.customerNewsSubscriber = value;
}
}

/// <summary>
/// The date the customer was created in the system
/// </summary>
public DateTime? CreatedDate
{
get
{
return this.customerCreatedDate;
}
private set
{
// Date in the past?
if (value < DateTime.Now)
this.customerCreatedDate = DateTime.Now;
else
this.customerCreatedDate = value;
}
}

/// <summary>
/// The name of the user creating the customer
/// </summary>
public string CreatedBy
{
get
{
return this.customerCreatedBy;
}
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-112 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
set
{
// Null value?
if (value == null)
this.customerCreatedBy = "";
else
// Only get the first 15 characters
if (value.Length > 15)
this.customerCreatedBy = value.Substring(0, 15);
else
this.customerCreatedBy = value;
}
}

/// <summary>
/// The date the customer was last modified in the system
/// </summary>
public DateTime? ModifiedDate
{
get
{
return this.customerModifiedDate;
}
set
{
// Date in the past?
if (value < DateTime.Now)
this.customerModifiedDate = DateTime.Now;
else
this.customerModifiedDate = value;
}
}

/// <summary>
/// The name of the user who last modified the customer
/// </summary>
public string ModifiedBy
{
get
{
return this.customerModifiedBy;
}
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-113
set
{
// Null value?
if (value == null)
this.customerModifiedBy = "";
else
// Only get the first 15 characters
if (value.Length > 15)
this.customerModifiedBy = value.Substring(0, 15);
else
this.customerModifiedBy = value;
}
}

Tarefa4:Adicionarosconstrutores
Na classe Customer, adicione uma regio denominada Constructors abaixo
da regio Properties.
#region Constructors
#endregion

Na classe Customer, na regio Constructors, adicione o construtor pblico
padro sem parmetros que inicializa os campos de membro customerID e
customerCreatedDate usando as propriedades pblicas.
/// <summary>
/// Default parameterless constructor
/// </summary>
public Customer()
{
// Initialize backing fields with default values
this.ID = Guid.NewGuid();
this.CreatedDate = DateTime.Now;
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-114 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Acrescente as propriedades restantes na regio Constructors, usando um
trecho de cdigo denominado Customer class constructors. O trecho de
cdigo foi fornecido pelo desenvolvedor snior e colocado na pasta My Code
Snippets. Posicione o cursor e clique com o boto direito do mouse na linha
aps o construtor sem parmetros padro e insira o trecho clicando em Insert
Snippet.
/// <summary>
/// Initializes backing fields with passed and default values
/// </summary>
/// <param name="id"></param>
public Customer(Guid? id)
{
// Initialize backing fields with passed and default values
this.ID = id;
this.CreatedDate = DateTime.Now;
}

/// <summary>
/// Initializes with a value for all backing fields
/// </summary>
/// <param name="id"></param>
/// <param name="firstName"></param>
/// <param name="lastName"></param>
/// <param name="address"></param>
/// <param name="zipCode"></param>
/// <param name="city"></param>
/// <param name="state"></param>
/// <param name="countryID"></param>
/// <param name="phone"></param>
/// <param name="emailAddress"></param>
/// <param name="webAddress"></param>
/// <param name="creditLimit"></param>
/// <param name="newsSubscriber"></param>
/// <param name="createdDate"></param>
/// <param name="createdBy"></param>
/// <param name="modifiedDate"></param>
/// <param name="modifiedBy"></param>
public Customer(Guid? id, string firstName, string lastName,
string address,
string zipCode, string city, string state, Guid? countryID,
string phone,
string emailAddress, string webAddress, int creditLimit, bool
newsSubscriber,
DateTime? createdDate, string createdBy, DateTime?
modifiedDate, string modifiedBy)
(O cdigo continua na prxima pgina.)
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-115
{
// Initialize member backing fields with passed values
this.ID = id;
this.FirstName = firstName;
this.LastName = lastName;
this.Address = address;
this.ZipCode = zipCode;
this.City = city;
this.State = state;
this.CountryID = countryID;
this.Phone = phone;
this.EmailAddress = emailAddress;
this.WebAddress = webAddress;
this.CreditLimit = creditLimit;
this.NewsSubscriber = newsSubscriber;

if (createdDate != null)
this.CreatedDate = createdDate;
else
this.CreatedDate = DateTime.Now;

this.CreatedBy = createdBy;
this.ModifiedDate = modifiedDate;
this.ModifiedBy = modifiedBy;
}

Salve as alteraes em Customer.cs.
Compile o componente e corrija todos os erros.

Tarefa5:FazerrefernciaaoprojetoCustomerManagementEntitiesa
partirdoprojetoCustomerManagement
Adicione uma referncia ao projeto CustomerManagement usando a caixa de
dilogo Add Reference. Faa referncia ao projeto
CustomerManagementEntities a partir do projeto CustomerManagement.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-116 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa6:Adicionarumadeclaraodemembrodocliente
Abra o arquivo InsertCustomer.aspx.cs.
Na janela do cdigo InsertCustomer.aspx.cas, adicione uma declarao de
membro de classe particular da classe Customer no namespace
CustomerManagementEntities, denominada currentCustomer, e inicialize-a
como null.
private CustomerManagementEntities.Customer currentCustomer =
null;

Resultados:depoisdeconcluiresteexerccio,voctercriadoumnovocomponente
usandooprojetoClassLibrary,adicionadoumarefernciaaoprojetodecomponente
apartirdositeeadicionadoumavariveldemembrodotipoCustomer.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-117
Exerccio4:Manipulaodeeventosdecontroleepgina
Estas so as principais tarefas do exerccio:
1. Criar uma instncia do objeto Customer.
2. Preencher os controles da interface do usurio.
3. Destruir os objetos.
4. Tratar do cancelamento pelo usurio.
5. Salvar as informaes do cliente.

Tarefa1:InstanciaroobjetoCustomer
Instancie o objeto Customer usando o seguinte cdigo.
/// <summary>
/// Instantiates Customer object
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
// Instantiate Customer
instantiateCustomerObject();
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-118 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Acrescente o seguinte cdigo classe InsertCustomer.
/// <summary>
/// Instantiates and populates the Customer member object
/// </summary>
private void instantiateCustomerObject()
{
// First time loading page?
if (!this.IsPostBack)
// Instantiate new Customer object
currentCustomer = new CustomerManagementEntities.Customer(
null, CustomerFirstNameTextBox.Text,
CustomerLastNameTextBox.Text,
CustomerAddressTextBox.Text,
CustomerZipCodeTextBox.Text,
CustomerCityTextBox.Text, CustomerStateTextBox.Text,
null, CustomerPhoneTextBox.Text,
CustomerEmailAddressTextBox.Text,
CustomerWebAddressTextBox.Text, -1,
CustomerNewsSubscriberCheckBox.Checked,
DateTime.Now, "", null, "");
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-119
Tarefa2:Popularoscontrolesdainterfacedousurio
Na classe InsertCustomer, popule os controles do servidor na interface do
usurio utilizando os valores do objeto Customer particular currentCustomer.
/// <summary>
/// Populates UI controls
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_LoadComplete(object sender, EventArgs e)
{
// Populate the UI controls
populateUI();
}
/// <summary>
/// Populates the UI controls with the values in the
/// current Customer object
/// </summary>
private void populateUI()
{
CustomerFirstNameTextBox.Text = currentCustomer.FirstName;
CustomerLastNameTextBox.Text = currentCustomer.LastName;
CustomerAddressTextBox.Text = currentCustomer.Address;
CustomerZipCodeTextBox.Text = currentCustomer.ZipCode;
CustomerCityTextBox.Text = currentCustomer.City;
CustomerStateTextBox.Text = currentCustomer.State;

if (currentCustomer.CountryID.HasValue)
CustomerCountryDropDownList.SelectedValue =
currentCustomer.CountryID.Value.ToString();
else
CustomerCountryDropDownList.SelectedIndex = -1;

CustomerPhoneTextBox.Text = currentCustomer.Phone;
CustomerEmailAddressTextBox.Text =
currentCustomer.EmailAddress;
CustomerWebAddressTextBox.Text = currentCustomer.WebAddress;
CustomerCreditLimitTextBox.Text =
currentCustomer.CreditLimit.ToString();
CustomerNewsSubscriberCheckBox.Checked =
currentCustomer.NewsSubscriber;
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-120 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa3:Destruirosobjetos
Na classe InsertCustomer, destrua os objetos usados na classe que no so
tratados automaticamente pelo coletor de lixo.
/// <summary>
/// Destroys objects
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Unload(object sender, EventArgs e)
{
// Destroy Customer object
currentCustomer = null;
}

Tarefa4:Tratardocancelamentopelousurio
Na classe InsertCustomer, trate do cancelamento pelo usurio fazendo o
redirecionamento para a home page.
/// <summary>
/// Redirects to home page
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void CustomerCancelButton_Click(object sender, EventArgs
e)
{
// Redirect to home page
Response.Redirect("~/Default.aspx");
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-121
Tarefa5:Salvarasinformaesdocliente
Na classe InsertCustomer, prepare-se para salvar as informaes fornecidas
pelo cliente no armazenamento persistente quando o usurio clicar no boto
Insert.
/// <summary>
/// Saves the current customer information and adds default values
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void CustomerInsertButton_Click(object sender, EventArgs e)
{
// Add the current user name
currentCustomer.CreatedBy = Context.User.Identity.Name;
// Add the user credit limit
currentCustomer.CreditLimit = 50000;
}

Salve as alteraes em InsertCustomer.aspx.cs.
Compile a soluo e corrija todos os erros.
Fechar o Visual Studio 2010.

Observao:observequeavalidaoconcludacomxito.

Observao:ocdigoinicialparasalvarasinformaesdoclientecriadoaqui.
Entretanto,ocdigofinalparasalvarnobancodedadossercriadonoMdulo8.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-122 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa6:Desativaramquinavirtualereverterasalteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Resultados: depoisdeconcluiresteexerccio,vocteradicionadoumcdigopara
manipularoseventosPage.Load,Page.LoadCompleteePage.UnloaddoWebForm
InsertCustomereadicionadoumcdigoparamanipularoeventoClickdoscontroles
debotoInserteCancel.

Observao:asrespostasdosexercciosestonoCDcomplementardocurso.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Revis
Pergun
1. Com
carr
2. Qu
3. Com


odolabora
ntas e respostas
mo possvel exe
regada pela prim
al o procedimen
mo possvel adi
Inclusodefunc
atrio
s de reviso
ecutar somente o
meira vez?
nto de evento pa
icionar itens a um

ionalidadeemumWebF
o cdigo quando u
dro para contro
ma lista no modo
FormMicrosoftASP.NE
uma pgina da W
oles comuns?
Design?
T 4-123

Web
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-124 Introduo
Revisod
Pergun
1. Qu
fun
2. Com
serv
3. Com

aoDesenvolvimentonaW
domdu
ntas e respostas
al a vantagem d
ncionalidade a um
mo um procedim
vidor?
mo voc pode us
WebcomoMicrosoftV
ulo
s de reviso
dos arquivos code
m Web Form?
mento de evento
ar um componen

VisualStudio2010
e-behind quando
associado ao eve
nte em seu projet
o voc adiciona
ento de um contr
to do Visual Stud

role de
io 2010?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
InclusodefuncionalidadeemumWebFormMicrosoftASP.NET 4-125
Problemas e cenrios do mundo real
1. Voc deseja que um designer possa trabalhar em um Web Form ao mesmo
tempo em que um desenvolvedor trabalha no cdigo desse Web Form. Qual
a maneira mais fcil de implement-lo?
Usar um Web Form com um arquivo code-behind.
2. Voc deseja adicionar eventos de pgina a um arquivo code-behind, mas no
quer executar manualmente o processo de wiring dos manipuladores de
eventos. Qual a maneira mais fcil de implement-lo?
Especificar o valor true para o atributo AutoEventWireUp da diretiva Page.

Prticas recomendadas
Siga uma conveno de nomenclatura e de uso de maisculas/minsculas ao
nomear suas variveis. Neste curso, usada uma conveno de nomenclatura
que consiste no contedo da varivel, tendo o tipo de dados como sufixo
quando apropriado. Se uma varivel contiver um dos tipos de dados simples
(como Integer ou String), na maioria das vezes, no ser necessrio usar o tipo
de dados como sufixo. Alguns exemplos so FirstName, LastName, Name,
Age e Length.
Se estiver nomeando uma varivel de um tipo de objeto especfico, use sempre
o nome do tipo de objeto como o sufixo, como
CustomerManagementDataSet, onde o tipo de dados DataSet e o nome
CustomerManagement. As convenes Pascal e Camel seguem regras
diferentes para o uso de maisculas e minsculas. A primeira coloca em letra
maiscula o primeiro caractere de cada palavra incluindo acrnimos com
mais de duas letras, como FirstName. A conveno Camel semelhante
Pascal, porm, utiliza sempre uma inicial em letra minscula, como
firstName. A conveno Pascal geralmente usada para variveis pblicas,
enquanto a Camel usada para variveis locais e privadas, bem como para
parmetros de mtodos. Consulte a prxima prtica recomendada sobre
variveis pblicas.
Como regra geral, as variveis de membro tambm conhecidas como
campos existentes nunca devem ser pblicas, pois podem corromper o
estado de um objeto. Em vez disso, torne uma varivel de membro particular e
exponha o valor atravs de uma propriedade com a qual voc possa verificar
quando um usurio do objeto define o valor da propriedade. H excees a
essa regra, como, por exemplo, em alguns casos em que um objeto precisa ser
serializado, mas isso est alm do escopo deste mdulo.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
4-126 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Siga uma conveno de nomenclatura e de uso de maisculas/minsculas ao
nomear seus mtodos. Neste curso, a conveno de nomenclatura usada
descreve os dados disponibilizados como FirstName mas nunca com a
primeira palavra do nome como verbo como usado para nomes de mtodos
(GetFirstName). O uso de maisculas e minsculas segue as mesmas regras
aplicadas s variveis os mtodos pblicos usam a conveno Pascal,
enquanto os mtodos no pblicos usam a conveno Camel.
Siga uma conveno de nomenclatura e de uso de maisculas/minsculas ao
nomear suas propriedades. Neste curso, usada uma conveno de
nomenclatura baseada na ao executada pelo mtodo, sendo que a primeira
palavra do nome sempre um verbo, como GetUserID ou SaveID. O uso de
maisculas e minsculas segue as mesmas regras aplicadas a variveis e
mtodos propriedades pblicas usam a conveno Pascal, enquanto
propriedades no pblicas usam a conveno Camel.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-1
Mdulo5
Implementaodepginasmestrasecontroles
dousurio
Contedo:
Lio1:criaodepginasmestras 5-3
Lio2:inclusodecontrolesdousurioaumWebFormASP.NET 5-26
Laboratrio:implementaodepginasmestrasecontrolesdousurio 5-49

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-2 Introduo
Visoge
Ao proje
Microso
precisa
aplicar e
em vrio
Se, por
a um ap
compon
a mesm
exibir e
do cdi
Web. Vo
controle
Em segu
podem
Neste m
controle
aoDesenvolvimentonaW
eraldom
etar um aplicativ
oft ASP.NET ao s
ser aplicado int
esse design consi
os Web Forms.
um lado, pginas
plicativo Web, po
nentes de interfac
ma combinao de
editar informae
go e de compone
oc pode adicion
e de usurio, alm
uida, possvel in
funcionar como
mdulo, voc apren
es do usurio em u
WebcomoMicrosoftV
mdulo
o Web, voc prec
seu projeto. Em m
terface do usurio
istente a um site
s mestras ajudam
or outro, controle
ce do usurio de
e controles em di
es sobre pedidos. C
entes comuns da
nar marcao e co
m de definir prop
ncorpor-los em p
uma unidade.
nder a criar e imp
um aplicativo Web
VisualStudio2010
cisa adicionar um
muitas situaes,
o. possvel usar
sem a necessidad
m a fornecer uma a
s do usurio facil
maneira persona
ferentes pginas;
Controles do usu
interface do usu
ontroles de servid
priedades e mtod
pginas da Web A
plementar pginas
b.
m ou mais Web Fo
um design consi
r pginas mestras
de de duplicar o d
aparncia consist
litam a reutiliza
alizada. Voc pod
por exemplo, co
rio facilitam a reu
rio em um aplic
dor Web existente
dos para esse con
ASP.NET, nas qu
s mestras e a impl

orms
istente
s para
design
tente
o de
de usar
ontroles
utilizao
cativo
es a um
ntrole.
uais eles
lementar
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Lio1
Criaod
Pginas
a partir
em toda
proporc
de desig
element
um nic
os elem
consiste
Nesta li
que utili

depgina
mestras ajudam
de um nico loca
as as pginas de c
cionam vrios ben
gn que se refletir
tos da pgina me
co local, sem que
entos comuns. Vo
ente e proporcion
o, voc aprende
ize essa pgina.
Impleme
asmestra
a definir o layout
al: o arquivo .ma
contedo derivad
nefcios. Em uma
o imediatamente
estra de um aplica
e seja necessrio p
oc pode criar fac
nar uma tima ex
er a criar uma p

entaodepginasmest
as
geral de um aplic
ster. Em seguida,
das da pgina me
pgina mestra, p
e em todas as pg
ativo Web podem
personalizar toda
cilmente um aplic
xperincia para os
gina mestra e dep
trasecontrolesdousuri
cativo Microsoft A
, voc reutiliza es
stra. Pginas mes
possvel efetuar a
ginas que a utiliz
m ser editados a p
as as pginas que
cativo Web com ap
s usurios.
pois a criar um W
o 5-3

ASP.NET
sse layout
stras
alteraes
am. Os
partir de
utilizam
parncia
Web Form
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-4 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Objetivos da lio
Depois de concluir esta lio, voc ser capaz de:
Descrever pginas mestras.
Criar uma pgina mestra.
Descrever pginas de contedo.
Criar uma pgina de contedo.
Descrever pginas mestras aninhadas.
Descrever o comportamento de tempo de execuo de pginas mestras.
Adicionar uma pgina mestra a um projeto de aplicativo Web existente.
Descrever as vantagens de pginas mestras.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Oque
Pontos
Pginas
um apli
padro
do seu a
o conte
para cri
e contro
A pgin
por uma
comuns
Voc po
o cabea

esopgina
s principais
s mestras ASP.NE
icativo. Uma nic
que voc deseja p
aplicativo. Em segu
do que voc des
ar um layout pre
oles de servidor.
na mestra um ar
a diretiva Master
s de Web Forms.
ode inserir um con
alho que deseja ex
Impleme
smestras?
ET permitem criar
ca pgina mestra
proporcionar a tod
uida, basta criar a
seja exibir. Portan
definido, que po
rquivo ASP.NET c
r especial que sub
ntedo de site com
xibir em vrias p

entaodepginasmest
r um layout consi
define a aparnci
das as pginas (ou
s pginas de conte
nto, possvel us
de incluir texto e
com a extenso .m
bstitui a diretiva P
mum em uma p
ginas de um site
trasecontrolesdousuri
istente para as p
ia e o comportam
u a um grupo de
edo individuais i
sar uma pgina m
esttico, elemento
master, sendo ide
Page usada para p
gina mestra; por e
.
o 5-5

ginas de
mento
pginas)
incluindo
mestra
os HTML
entificada
pginas
exemplo,
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-6 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Usando pginas mestras, voc pode criar a funcionalidade que era anteriormente
fornecida com o uso de conjuntos de quadros, alm de incluir arquivos e controles
do usurio. Pginas mestras podem conter os mesmos tipos de controles e cdigo
disponveis em Web Forms ASP.NET padro. Se quiser que diferentes sees do
seu aplicativo Web tenham layouts distintos, basta incluir vrias pginas mestras
no seu projeto. Por exemplo, voc pode ter uma seo do aplicativo Web para
usurios autenticados e outra para usurios annimos.
Recursos de pginas mestras
A extenso de arquivo de uma pgina mestra muda de .aspx para .master.aspx. Por
exemplo: MasterPage.master. A diretiva Master usada no lugar da diretiva Page,
da seguinte maneira.
[Visual Basic]
<%@ Master Language="VB" AutoEventWireup="false"
CodeFile="MasterPage.master.vb" Inherits="MasterPage" %>

[Visual C#]
<%@ Master Language="C#" AutoEventWireup="true"
CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

Observao:porpadro,umservidorWeb,comooIIS(ServiosdeInformaesda
Internet)7.0,impedequearquivoscomaextenso.mastersejamvisualizadosemum
navegadordaWeb.Essamedidadeseguranagarantequeapginamestranoseja
exibidacomoumapginaASP.NETautnoma.
Uma pgina mestra quase como um Web Form padro, pois pode comportar
contedo padro, incluindo os elementos HTML de nvel superior de uma pgina,
como html, head, body e form. Por exemplo, em uma pgina mestra, voc pode
usar uma tabela HTML para o layout ou uma combinao de elementos div para
exibir os elementos da pgina; um elemento img para o logotipo da empresa; texto
esttico para o aviso de direitos autorais e controles de servidor para navegao no
site. Porm, o que diferencia uma pgina mestra de um Web Form padro a
incluso de um ou mais controles ContentPlaceHolder. Controles ContentPlaceHolder
definem as reas que podem exibir contedo substituvel. Por sua vez, o contedo
substituvel definido em pginas de contedo. necessrio inserir os controles
ContentPlaceHolder no elemento head ou form, da seguinte maneira.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-7
<html>
<head runat="server">
<title>General Application Title</title>
<asp:ContentPlaceHolder id="HeadContentPlaceHolder"
runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
...
<! Standard content >
<div class="top">
<asp:ContentPlaceHolder id="MainContentPlaceHolder"
runat="server" />
...
<! Standard content >
</div>
<div class="bottom">
<asp:ContentPlaceHolder id="FooterContentPlaceHolder"
runat="server">
<asp:Label id="FooterLabel" runat="server"
Text="Footer Text" />
</asp:ContentPlaceHolder id="FooterContentPlaceHolder">
</div>
...
</form>
</body>

Se uma pgina de contedo vinculada pgina mestra no incluir um controle
Content que faa referncia ao controle ContentPlaceHolder, o contedo padro
do controle ContentPlaceHolder na pgina mestra ser mostrado na pgina
renderizada, da seguinte maneira.
<div class="bottom">
<asp:ContentPlaceHolder id="FooterContentPlaceHolder"
runat="server">
<asp:Label id="FooterLabel" runat="server" Text="Footer Text" />
</asp:ContentPlaceHolder>
</div>

Pergunta: que recursos diferenciam uma pgina mestra de um Web Form padro?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-8 Introduo
Cria
Cria
Para cri
1. No
dep
2. Na
a.
b.
c.
d.
e.
f.
aoDesenvolvimentonaW
odeumap
o de uma pgin
ar uma pgina m
Solution Explore
pois clique em Ad
caixa de dilogo
No painel esque
Na caixa do pain
Na caixa Name,
Marque a caixa
arquivo code-be
Marque a caixa
mestra.
Clique em Add.
WebcomoMicrosoftV
pginamestr
na mestra
mestra, necessri
er, clique com o b
dd New Item.
Add New Item:
erdo, clique em V
nel do meio, cliqu
, digite um nome
de seleo Place
ehind.
de seleo Select

VisualStudio2010
a
io executar as seg
boto direito do m
Visual Basic ou V
ue em Master Pa
e para a pgina m
code in a separa
t master page, se
guintes etapas:
mouse no projeto
Visual C#.
age.
mestra.
ate file, se quiser
e quiser aninhar a

o e
r usar um
a pgina

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-9
Definio do layout de uma pgina mestra
A pgina mestra define a aparncia das pginas no seu site. Ela pode conter qualquer
combinao de texto esttico e controles. Uma pgina mestra tambm contm um
ou mais espaos reservados para contedo que designam em que local o contedo
dinmico aparecer quando as pginas forem exibidas.
Neste exemplo, voc usar uma tabela para ajudar a posicionar elementos na pgina.
Comece criando uma tabela de layout para conter os elementos da pgina mestra.
Em seguida, posicione o controle de espao reservado para contedo que j se
encontra na pgina.
Criarumatabeladelayoutparaapginamestra
Para criar uma tabela de layout para a pgina mestra, execute as seguintes etapas:
1. Alterne para o modo de exibio Design.
2. Na lista suspensa localizada na parte superior da janela Properties, selecione
DOCUMENT e, na lista DOCUMENT, clique em uma cor de fundo
diferenciada na caixa BgColor. A cor que voc selecionar no importante.
3. Clique no local da pgina em que voc deseja inserir a tabela de layout, como
em um elemento div.
4. No menu Table, clique em Insert Table.
5. Na caixa de dilogo Insert Table, na caixa Rows, digite 3 e clique em OK.
O modelo define a disposio de linhas e clulas na tabela. O modelo que voc
selecionou cria trs linhas e duas clulas/colunas.
6. Na janela Properties, aplique as seguintes configuraes:
Na linha do meio, clique na coluna da extremidade esquerda e defina sua
largura (Width) como 48.
Clique na linha superior e defina sua altura (Height) como 48.
Clique na linha inferior e defina sua altura (Height) como 48.
7. Selecione todas as clulas da tabela, defina BgColor como uma cor diferente
da cor de fundo e depois defina valign como top.

Depois de definir o layout da tabela, possvel adicionar pgina mestra o contedo
que ser exibido em todas as pginas. Voc pode adicionar uma mensagem de direitos
autorais como rodap e depois pode adicionar um menu. Se tiver um grfico de logotipo
disponvel, tambm poder adicion-lo.
Pergunta: qual a principal finalidade de se criar pginas mestras?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-10 Introduo
Oque
Pgina
Pginas
conted
Quando
novas p
conted
mesclad
Recurs
Voc po
na diret
[Visua
<%@ Pa
AutoEv
Inheri


aoDesenvolvimentonaW
esopgina
as de contedo
de contedo forn
do um Web Form
o o seu projeto con
ginas de conted
do. Usando pgina
do em tempo de ex
sos de pginas
ode fazer refernc
tiva Page da pgin
al Basic]
age Language="V
ventWireup="fal
its="ContentPag
WebcomoMicrosoftV
sdeconted
necem contedo p
m ASP.NET que fa
ntm uma ou mai
do ou converter se
as de contedo,
xecuo com o co
de contedo
cia a uma pgina
na de contedo,
VB" MasterPageFi
se" CodeFile="C
ge" %>

VisualStudio2010
do?
para uma pgina m
az referncia a um
is pginas mestras
eus Web Forms ex
possvel criar con
ontedo genrico d
mestra usando o
conforme indicad
ile="~/MasterPa
ContentPage.asp
mestra. Uma pgin
ma pgina mestra e
s, voc pode adicio
xistentes em pgin
ntedo adicional q
da pgina mestra.
o atributo Master
do nos exemplos
age.master"
px.vb"

na de
especfica.
onar
nas de
que
rPageFile
s a seguir.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-11
[Visual C#]
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master"
AutoEventWireup="true" CodeFile="ContentPage.aspx.cs"
Inherits="ContentPage" %>

Ao especificar a pgina mestra na diretiva Page, voc pode usar mais de uma
pgina mestra no seu projeto. possvel especificar diferentes pginas mestras
para Web Forms distintos. Uma pgina mestra tambm pode ser especificada no
nvel do aplicativo, no arquivo web.config, conforme indicado a seguir.
<pages masterPageFile="MasterPage.master" />

Voc pode especificar que todas as pginas ASP.NET (arquivos .aspx) no aplicativo
devem ser automaticamente associadas pgina mestra especificada caso incluam
um ou mais controles Content. Quando uma referncia a uma pgina mestra
especificada no nvel de pgina, se voc fizer referncia a um controle
ContentPlaceHolder inexistente, receber um erro em tempo de compilao. Se
uma referncia a uma pgina mestra for especificada no arquivo web.config, se voc
fizer referncia a um arquivo inexistente, receber um erro em tempo de execuo.
O atributo MasterPageFile da diretiva Page substitui qualquer configurao de
pgina mestra que tenha sido especificada no arquivo web.config.
Pginas de contedo devem incluir pelo menos um controle Content que faa
referncia a um controle ContentPlaceHolder em uma pgina mestra referenciada,
conforme indicado nos exemplos a seguir.
[Visual Basic]
<asp:Content ID="MainContent"
ContentPlaceHolderID="MainContentPlaceHolder" Runat="Server">
</asp:Content>
<asp:Content ID="FooterContent"
ContentPlaceHolderID="FooterContentPlaceHolder" Runat="Server">
</asp:Content>

[Visual C#]
<asp:Content ID="MainContent"
ContentPlaceHolderID="MainContentPlaceHolder" Runat="Server">
</asp:Content>
<asp:Content ID="FooterContent"
ContentPlaceHolderID="FooterContentPlaceHolder" Runat="Server">
</asp:Content>
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-12 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

Depois de criar controles Content, voc pode adicionar texto e controles a eles. Os
controles Content na pgina de contedo so diretamente vinculados aos controles
ContentPlaceHolder na pgina mestra. No possvel adicionar um controle
Content que no faa referncia a um controle ContentPlaceHolder existente na
pgina mestra referenciada. Em uma pgina de contedo, tudo o que no estiver
dentro do controle Content, com a exceo de blocos de script para o cdigo do
servidor, resultar em um erro em tempo de compilao.
Em uma pgina de contedo, voc pode executar qualquer tarefa que executaria em
uma pgina ASP.NET. Por exemplo, pode gerar contedo para um controle Content
usando controles de servidor ou pode executar consultas de banco de dados.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Cria
Cria
Para cri
1. Abr
D:\
2. No
D:\
em
3. Na
Bas
4. No
5. Na
caix
6. Mar
7. Na
odeumap
o de uma pgin
ar uma pgina de
ra o arquivo Cust
\Labfiles\Starter\
Solution Explore
\Labfiles\Starter
Add New Item.
caixa de dilogo
sic ou Visual C#.
painel do meio,
caixa Name, digi
xa de seleo Plac
rque a caixa de s
caixa de dilogo S
Impleme
pginadecon
na de contedo
e contedo, execu
tomerManageme
\M5\VB.
er, clique com o b
r\M5\VB\Custom
Add New Item, n
.
clique em Web F
te um nome para
ce code in a sepa
eleo Select ma
Select a Master Pa
entaodepginasmest
ntedo
o
ute as seguintes e
ent.sln na pasta
boto direito do m
merManagemen
no painel esquer
Form.
a a pgina de cont
arate file para usa
aster page e depo
age, clique na pgin
trasecontrolesdousuri
etapas:
mouse em
nt e, em seguida, c
do, clique em Vis
tedo e depois ma
ar um arquivo cod
ois clique em Add
na mestra e depois
o 5-13

clique
sual
arque a
de-behind.
d.
s em OK.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-14 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Os controles ContentPlaceHolder na pgina mestra especificada so automaticamente
referenciados com o uso dos controles Content na nova pgina de contedo, da seguinte
maneira.
[Visual Basic]
<%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master"
AutoEventWireup="false" CodeFile="ContentPage.aspx.vb"
Inherits="ContentPage" %>

<asp:Content ID="Content1"
ContentPlaceHolderID="MainContentPlaceHolder" Runat="Server">
</asp:Content>

[Visual C#]
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master"
AutoEventWireup="true" CodeFile="ContentPage.aspx.cs"
Inherits="ContentPage" %>

<asp:Content ID="Content1"
ContentPlaceHolderID="MainContentPlaceHolder" Runat="Server">
</asp:Content>

Ao contrrio de pginas mestras aninhadas, voc no pode especificar um novo
controle ContentPlaceHolder em uma pgina de contedo. O prximo tpico ir
discutir o conceito de pgina mestra aninhada, mas, em essncia, trata-se de uma
pgina mestra que se baseia em outra pgina mestra.
Mesclando contedo
possvel fazer referncia a uma pgina mestra e a um ou mais controles
ContentPlaceHolder em uma pgina de contedo utilizando controles Content.
Se um controle ContentPlaceHolder for referenciado na pgina de contedo, o
contedo (se houver) localizado no controle Content que referencia o controle
ContentPlaceHolder ser renderizado. Se um controle ContentPlaceHolder no
for referenciado na pgina de contedo, o contedo padro (se houver) especificado
na pgina mestra ser renderizado. O atributo title da diretiva Page em uma pgina
de contedo tambm ser mesclado com a pgina mestra se o elemento head nessa
pgina mestra tiver o atributo runat definido como server. Caso contrrio, a configurao
na pgina de contedo ser ignorada, pois o elemento head no estar disponvel
para processamento no servidor na ocasio da mesclagem.
Pergunta: ao projetar um aplicativo Web usando pginas mestras, quais so alguns
dos recursos externos que voc talvez precise referenciar e adicionar?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Oque
Pontos
Pginas
sua mes
Aninha
Voc po
primria
layout g
layout d
uma pg
ento d
site, que
Pginas
MasterP

esopgina
s principais
s mestras podem
stra.
ando pginas m
ode desenvolver p
as e pginas mes
geral do site, enqu
de reas especfic
gina mestra geral
efinir suas pgina
e define a aparn
s mestras aninhad
PageFile como p
Impleme
smestrasan
ser aninhadas, co
mestras
pginas mestras an
tras secundrias.
uanto as pginas
as desse site. Por
l que define a sua
as mestras secun
ncia do contedo
das fazem refern
arte da diretiva M

entaodepginasmest
ninhadas?
om uma delas ref
ninhadas de form
A pgina mestra
secundrias pod
r exemplo, um sit
a aparncia. Os p
ndrias que fazem
dos parceiros.
ncia mestra prim
Master.
trasecontrolesdousuri
ferenciando a out
ma a criar pginas
a primria pode d
dem definir ainda
te extenso pode c
parceiros desse sit
m referncia mes
mria utilizando o
o 5-15

tra como
mestras
definir o
mais o
conter
te podem
stra do
o atributo
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-16 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Os exemplos a seguir mostram a diretiva Master para uma pgina mestra primria.
[Visual Basic]
<%@ Master Language="VB" AutoEventWireup="false"
CodeFile="ParentMasterPage.master.vb" Inherits="ParentMasterPage" %>

[Visual C#]
<%@ Master Language="C#" AutoEventWireup="true"
CodeFile="ParentMasterPage.master.cs" Inherits="ParentMasterPage" %>

Os exemplos a seguir mostram a diretiva Master para uma pgina mestra secundria.
[Visual Basic]
<%@ Master Language="VB" AutoEventWireup="false"
MasterPageFile="~/ParentMasterPage.master"
CodeFile="ChildMasterPage.master.vb" Inherits="ChildMasterPage" %>

[Visual C#]
<%@ Master Language="C#" AutoEventWireup="true"
MasterPageFile="~/ParentMasterPage.master"
CodeFile="ChildMasterPage.master.cs" Inherits="ChildMasterPage" %>

Uma pgina mestra secundrio apresenta a extenso de nome de arquivo .master,
semelhante a qualquer outra pgina mestra. A pgina mestra secundria possui
controles de contedo que se vinculam a espaos reservados para contedo na
pgina mestra primria. Alm disso, essa pgina mestra secundria tem os seus
prprios espaos reservados para contedo. Esses espaos reservados exibem o
contedo que fornecido pelas pginas de contedo das pginas mestras secundrias.
Ao se projetar um portal ou um site com vrias reas ou sees diferentes, a prtica
recomendada ter uma pgina mestra geral que apenas defina o layout geral e ter
duas ou mais pginas mestras aninhadas ou secundrias que definam o layout para
reas ou sees especficas.
Exemplos de pginas mestras aninhadas
Os exemplos a seguir mostram uma configurao simples de pgina mestra aninhada.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-17
Os dois primeiros exemplos exibem os arquivos mestres primrios.
[Visual Basic]
<% @ Master Language="VB" AutoEventWireup="false"
CodeFile="ParentMasterPage.master.vb" Inherits="ParentMasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html >
<body>
<head runat="server">
<title>Untitled Page</title>
</head>
<form id="Form1" runat="server">
<div>
<h1>Parent Master</h1>
<p style="font:color=red">This is parent master content.</p>
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
</div>
</form>
</body>
</html>

[Visual C#]
<% @ Master Language="C#" AutoEventWireup="true"
CodeFile="ParentMasterPage.master.cs" Inherits="ParentMasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="Form1" runat="server">
<div>
<h1>Parent Master</h1>
<p style="font:color=red">This is parent master content.</p>
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
</div>
</form>
</body>
</html>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-18 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Estes dois exemplos exibem os arquivos mestres secundrios.
[Visual Basic]
<%@ Master Language="VB" MasterPageFile="~/ParentMasterPage.master"%>
<asp:Content id="Content1" ContentPlaceholderID="MainContent"
runat="server">
<asp:Panel runat="server" id="PanelMain" backcolor="lightyellow">
<h2>Child master</h2>
<asp:Panel runat="server" id="Panel1" backcolor="lightblue">
<p>This is childmaster content.</p>
<asp:ContentPlaceHolder ID="ChildContent1" runat="server" />
</asp:Panel>
<asp:Panel runat="server" id="Panel2" backcolor="pink">
<p>This is childmaster content.</p>
<asp:ContentPlaceHolder ID="ChildContent2" runat="server" />
</asp:Panel>
<br />
</asp:Panel>
</asp:Content>

[Visual C#]
<%@ Master Language="C#" MasterPageFile="~/ParentMasterPage.master"%>
<asp:Content id="Content1" ContentPlaceholderID="MainContent"
runat="server">
<asp:Panel runat="server" id="PanelMain" backcolor="lightyellow">
<h2>Child master</h2>
<asp:Panel runat="server" id="Panel1" backcolor="lightblue">
<p>This is child master content.</p>
<asp:ContentPlaceHolder ID="ChildContent1" runat="server" />
</asp:Panel>
<asp:Panel runat="server" id="Panel2" backcolor="pink">
<p>This is child master content.</p>
<asp:ContentPlaceHolder ID="ChildContent2" runat="server" />
</asp:Panel>
<br />
</asp:Panel>
</asp:Content>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-19
Os dois exemplos a seguir so de uma pgina de contedo que faz referncia
pgina mestra secundria.
[Visual Basic]
<%@ Page Language="VB" MasterPageFile="~/Child.master"%>
<asp:Content id="Content1" ContentPlaceholderID="ChildContent1"
runat="server">
<asp:Label runat="server" id="Label1" text="Child label1" font-
bold="true" />
<br>
</asp:Content>
<asp:Content id="Content2" ContentPlaceholderID="ChildContent2"
runat="server">
<asp:Label runat="server" id="Label2" text="Child label2" font-
bold="true"/>
</asp:Content>

[Visual C#]
<%@ Page Language="C#" MasterPageFile="~/Child.master"%>
<asp:Content id="Content1" ContentPlaceholderID="ChildContent1"
runat="server">
<asp:Label runat="server" id="Label1" text="Child label1" font-
bold="true" />
<br>
</asp:Content>
<asp:Content id="Content2" ContentPlaceholderID="ChildContent2"
runat="server">
<asp:Label runat="server" id="Label2" text="Child label2" font-
bold="true"/>
</asp:Content>
Pergunta: Qual a principal finalidade de se usar pginas mestras aninhadas?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-20 Introduo
Comp
Pontos
Ao se tr
pgina p
Voc pr
eficaz. Q
a diretiv
1. O u
ent
serv
2. O A
arqu
Ma
pg
mes
3. O A
pg
aoDesenvolvimentonaW
portamento
s principais
rabalhar com pg
podem usar o me
recisa conhecer a
Quando um usu
va Page e busca a
usurio solicita um
anto, a solicitao
vidor Web probe
ASP.NET l a dire
uivo web.config.
sterPageFile, o A
ginas so solicitad
stra so compilad
ASP.NET mescla o
gina de contedo
WebcomoMicrosoftV
detempode
inas mestras e p
esmo conjunto de
ordem dos even
rio solicita uma p
pgina mestra, se
ma pgina digitan
o do usurio no
e o acesso a arqu
etiva Page da pg
Se a diretiva Page
ASP.NET ir recup
das pela primeira
das.
o contedo da p
.
VisualStudio2010
eexecuod
ginas de conted
e eventos, como
tos para usar pg
pgina da Web (.
e esta estiver refer
ndo a URL da p
direcionada p
ivos .master por
ina de contedo
e ou o elemento p
perar a pgina m
a vez, a pgina de
gina mestra na
depginasm
do, ambos os tipo
os eventos Init o
ginas mestras de m
aspx), o ASP.NET
renciada. Este o
gina de contedo
pgina mestra, po
padro.
e o elemento pag
pages contiver um
mestra. Quando as
contedo e a pg
rvore de controle
mestras

os de
u Load.
maneira
T verifica
o processo:
o. No
ois o
ges do
m atributo
s duas
gina
es da
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-21
4. O contedo dos controles Content individuais mesclado nos controles
ContentPlaceHolder correspondentes da pgina mestra.
5. O ASP.NET renderiza a pgina final mesclada no navegador.

Sob a perspectiva do usurio, a pgina mestra e as pginas de contedo so combinadas
em uma nica pgina separada. A URL da pgina aquela da pgina de contedo. Sob
a perspectiva de programao, as duas pginas atuam como contineres separados
para seus respectivos controles. A pgina de contedo atua como continer para a
pgina mestra, mas possvel referenciar os membros pblicos da pgina mestra a
partir do cdigo na pgina de contedo. Por exemplo, voc pode salvar um objeto
especfico no Estado da sesso e disponibiliz-lo para todas as pginas de contedo
utilizando uma propriedade pblica. Dessa maneira, evita-se a necessidade de duplicar
o cdigo para salvar o objeto nas pginas de contedo.

Observao:oEstadodasessoserdiscutidonoMdulo13,Gerenciamentodo
estadoemaplicativosWeb.
Talvez seja necessrio acessar alguns controles programaticamente na pgina
de contedo. Por exemplo, um controle Menu, SiteMapPath ou Login. Esses
controles podem ser expresses ou itens de menu que voc deseja marcar ou
desmarcar, dependendo da entrada do usurio na pgina de contedo.
Semelhante a um controle do usurio, a pgina mestra funciona como elemento
secundrio da pgina de contedo e tambm como um continer nessa pgina de
contedo. A diferena entre eles est no fato de que a pgina mestra o continer
para todos os controles de servidor renderizados no navegador.

Observao:controlesdousurioserodiscutidosnaprximalio,Inclusode
controlesdousurioaumWebFormASP.NET.
Pergunta: como a pgina mestra mesclada com a pgina de contedo em tempo
de execuo?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-22 Introduo
Inclus
Webe
Pontos
Mesmo
aplicativ
em um
de aplic
conted
uma pg
Como W
pgina d
uma pg

aoDesenvolvimentonaW
sodeumap
existente
s principais
no tendo utiliza
vo Web, voc ain
estgio posterior
cativo Web existe
do ou converter u
gina de contedo
Web Forms so s
de contedo, fc
gina mestra, voc
WebcomoMicrosoftV
pginamest
ado pginas mest
nda pode incluir u
r. Para adicionar e
ente, necessrio
um Web Form ex
o.
emelhantes com
cil convert-los em
pode adicionar

VisualStudio2010
raaumproj
tras ao desenvolv
uma ou mais dess
e usar uma pgin
adicionar pelo m
xistente no projet
mbinao de uma
m pginas de conte
novas pginas co
jetodeaplic
ver originalmente
sas pginas no ap
na mestra em um
menos uma pgin
to de aplicativo W
a pgina mestra e
edo. Depois de ad
omo pginas de c
ativo

e seu
plicativo
projeto
na de
Web em
e uma
dicionar
contedo.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-23
As seguintes tarefas podem ser utilizadas para converter um Web Form em uma
pgina de contedo:
Criar uma pgina mestra ou adicionar uma pgina mestra existente.
Remova todos os elementos HTML de nvel superior do Web Form, incluindo
html, head, body e form. Se voc tiver um elemento title no elemento head,
determine se esse ttulo deve ser movido para a pgina mestra e, em caso
positivo, verifique se o elemento head nessa pgina mestra contm o atributo
runat definido como server.
Adicione o atributo MasterPageFile diretiva Page e referencie a pgina mestra
necessria. Agora, seu Web Form considerado uma pgina de contedo.
Adicione o nmero necessrio de controles Content pgina de contedo
referenciando os controles ContentPlaceHolder da pgina mestra referenciada.
Mova os controles existentes at os controles Content.
Considere mover todos os estilos existentes (embutidos ou armazenados em
um arquivo CSS folha de estilos em cascata) at a pgina mestra ou at o
arquivo CSS usado por essa pgina mestra.
Determine o layout dos controles de servidor nos controles Content. Embora no
seja possvel inserir os controles de servidor fora dos controles Content, voc
ainda ter controle total sobre o layout dos mesmos dentro dos controles Content.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-24 Introduo
Discu
Pontos
Usar p
Mel
atua
Def
Ob
pod
Def
con
rese
Imp
mes
Com
Cria
aoDesenvolvimentonaW
sso:Vantag
s principais
ginas mestras ofe
lhorar a manuten
alizaes que afe
finir uma parte da
ter controle mais
de controlar a for
finir um layout bl
ntedo so restrit
ervados permitid
plementar um mo
stra a partir de pg
mpartilhar as pg
ar facilmente um
WebcomoMicrosoftV
gensdepgi
erece vrias vanta
no de um site, p
taro todas as p
pgina separadam
s preciso sobre o
rma como o conte
loqueado com es
tas para adicionar
dos.
odelo de objeto qu
ginas de contedo
ginas mestras ent
m cabealho ou ro
VisualStudio2010
nasmestras
agens. Ao us-las
pois possvel ap
ginas de conted
mente e depois a r
layout de uma p
edo renderizad
spaos reservados
r ou modificar o c
ue o ajude a acessa
o que fazem refer
tre projetos de ap
dap compartilha
, voc pode:
plicar a um local
do nesse site.
reutilizar em vria
gina da Web, po
do.
s editveis. As pg
contedo nos esp
ar elementos da p
ncia a essa pgina
plicativos Web.
ado.

as pginas.
ois voc
ginas de
paos
gina
a mestra.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-25
Aninhar pginas mestras, o que proporciona um controle mais preciso sobre o
layout de cada pgina de contedo, tudo isso com base em um layout geral.
Opcionalmente, substituir ou manter o contedo padro das pginas mestras.
Efetuar a mesma alterao em cada pgina do seu aplicativo modificando um
nico arquivo, o que til no gerenciamento de aplicativos extensos que contm
milhares de pginas.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-26 Introduo
Lio2
Incluso
FormAS
Um con
importa
Web (q
proporc
relacion
no mesm
Nesta li
um acr
a um co
proprie
Objetiv
Depois
Des
Des
aoDesenvolvimentonaW
decontr
SP.NET
ntrole do usurio
ar como um contr
ue so componen
cionam a funcion
nadas. Aps a cria
mo aplicativo We
o, voc aprend
scimo to til aos
ontrole do usurio
dades nesse cont
vos da lio
de concluir esta l
screver controles
screver as vantage
WebcomoMicrosoftV
rolesdou
uma pgina A
role de servidor.
ntes executados n
nalidade da interf
ao de um contr
eb podem usar es
der o conceito de
s seus aplicativos
o a partir de um W
trole.
lio, voc ser ca
do usurio.
ens e as desvanta
VisualStudio2010
usurioa
SP.NET que outr
Semelhantes a co
no servidor), os c
face do usurio e
role do usurio, o
sse controle.
e controles do us
Web. Tambm a
Web Form ASP.N
apaz de:
agens de utilizar c
umWeb
ros Web Forms p
ontroles de servid
controles do usu
outras funcionali
outras pginas da
urio e por que e
aprender a fazer r
NET e a acessar a
controles do usu
b

odem
dor
rio
idades
Web
eles so
referncia
s
rio.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-27
Explicar como converter um Web Form em um controle do usurio.
Explicar como converter um Web Form em um controle do usurio.
Explicar como adicionar um controle do usurio a um Web Form.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-28 Introduo
Oque
Pontos
Control
comuns
com cap
Contro
Control
Voc po
controle
armazen
consisti
objetivo
para col

aoDesenvolvimentonaW
esocontro
s principais
les do usurio pod
s da interface do u
pacidade de reutil
oles do usurio
les do usurio so
ode criar um cont
e de servidor exis
na a data em uma
ir em diversos ele
o de concluir uma
letar informaes
WebcomoMicrosoftV
lesdousur
dem simplificar a
usurio. Para dese
lizao, voc prec
o
o pginas ASP.NE
trole do usurio e
stente; por exemp
a caixa de texto. C
ementos que trab
a tarefa. Por exem
s sobre a experin

VisualStudio2010
io?
reutilizao de c
envolver aplicativ
cisa aprender a uti
ET com uma exte
estendendo a fun
plo, um controle
Controles do usu
balham e interage
mplo, voc pode a
ncia de trabalho a
digo e de compo
os Web ASP.NET
ilizar esse tipo de
enso de arquivo
ncionalidade de u
de calendrio qu
urio tambm pod
m em conjunto c
agrupar vrios co
anterior de um u

onentes
T eficazes
e controle.
.ascx.
um
ue
dem
com o
ontroles
surio.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-29
Controles do usurio oferecem a opo de particionar e reutilizar uma funcionalidade
comum de interface do usurio entre aplicativos Web ASP.NET. De maneira
semelhante a um Web Form, voc pode criar esses controles usando o Visual
Studio 2010 e adicionar a eles uma lgica especfica utilizando classes code-behind.
De maneira semelhante a uma pgina de Web Form, controles do usurio so
compilados quando solicitados pela primeira vez, sendo em seguida armazenados
na memria do servidor para reduzir o tempo de resposta para solicitaes
subsequentes. Ao contrrio de pginas de Web Form, controles do usurio no
podem ser solicitados independentemente e precisam ser includos em uma pgina
de Web Form para poderem funcionar.

Observao:porpadro,umservidorWeb,comooIIS7.0,impedequearquivoscoma
extenso.ascxsejamvisualizadosemumnavegadordaWeb.Essamedidadesegurana
garantequeocontroledeusurionosejaexibidocomoumapginaASP.NETautnoma.
Recursos de controles do usurio
Controles do usurio consistem em HTML e cdigo, mas, como so usados por
Web Forms, eles no contm os elementos HTML de nvel superior, como os
elementos html, body ou form.
Quando um Web Form usa um controle do usurio, esse controle participa do
ciclo de vida de eventos do Web Form.
Como um controle do usurio uma pgina ASP.NET, ele possui sua prpria
lgica. Por exemplo, um controle do usurio lida com seu evento de postback no
manipulador de eventos Page_Load.
Arquivos code-behind de controles do usurio
Controles do usurio contm a diretiva Control, que equivale diretiva Page contida
em um Web Form. Se voc optar por inserir o cdigo do controle do usurio em um
arquivo code-behind separado, a diretiva Control far referncia a esse arquivo code-
behind. possvel incluir apenas uma diretiva Control por arquivo .ascx.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-30 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Os exemplos a seguir contm a diretiva Control para um controle do usurio
denominado WebUserControl.
[Visual Basic]

<%@ Control Language="VB" AutoEventWireup="false"
CodeFile="WebUserControl.ascx.vb" Inherits="WebUserControl" %>

[Visual C#]

<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>

Observao:adiretivaControloferecesuporteparavriosdosmesmosatributosem
comparaodiretivaPage.Noentanto,adiretivaControlnooferecesuporteparao
atributoTrace.Portanto,sevocquiserhabilitarorastreamentoparaocontroledo
usurio,deveradicionaroatributoTracediretivaPageparaapgina.aspxque
chamaessecontroledousurio.Paraobtermaisinformaessobrerastreamento,
consulteoMdulo7,SoluodeproblemasemaplicativosWebMicrosoftASP.NET.
Controles do usurio, controles de servidor Web e componentes
Voc deve saber diferenciar controles do usurio, controles de servidor Web e
componentes. A tabela a seguir descreve as singularidades de componentes e controles.
Componentesecontroles Descrio
Componente Umcomponente,tambmchamadobibliotecade
classesnoVisualStudio2010,forneceapenasalgica;
elenopossuiumainterfacedousurio.
ControledeservidorWeb ControlesdeservidorWebincluemcontrolesdeforma-
tipo,comobotoecaixadetexto,almdecontroles
especficos,comocalendrio.Voctambmpodecriar
controlesdeservidorWebcompiladosepersonalizados,
umtipoespecialdecomponentequeforneceuma
interfacedousurio.
Controledousurio AocontrriodecontrolesdeservidorWeb,umcontrole
dousuriodeveterumainterfacedousurioemtempo
dedesigneemtempodeexecuo,evocpodeescrever
cdigoparaimplementarafuncionalidadedessetipode
controle.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Vanta
usur
Pontos
H vria
Control
ser escr
a pgina
Em gera
e cdigo
valida
agenseasde
rio
s principais
as vantagens em
les do usurio so
itos em uma ling
a principal de ho
al, controles do u
o que so usadas
o, navegao, ba
Impleme
esvantagens
se ter controles d
o independentes,
guagem de progra
spedagem.
usurio so usado
repetidamente e
arras de ferramen
entaodepginasmest
deseutiliza
do usurio em ap
, podem ser usad
amao diferente
os para criar pequ
em um aplicativo
ntas e outras funci
trasecontrolesdousuri
arcontrolesd
plicativos Web AS
dos vrias vezes e
daquela que us
uenas unidades d
Web. Isso inclui
ionalidades simil
o 5-31
do

SP.NET.
podem
sada para
de layout
logon,
lares.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-32 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Vantagens de controles do usurio
Controles do usurio tm vrias funes. Por exemplo, voc pode criar cabealhos
e barras de navegao ou repetir blocos de cdigo em um projeto de aplicativo
Web ou em um projeto de site. Eles tambm oferecem as seguintes vantagens
durante o desenvolvimento de um aplicativo Web:
Controles do usurio so independentes. Eles fornecem namespaces variveis
distintos; ou seja, nenhum dos mtodos e propriedades do controle do usurio
entra em conflito com os mtodos ou propriedades existentes da pgina de
hospedagem.
Controles do usurio podem ser usados vrias vezes. Eles podem ser usados
mais de uma vez em uma pgina de hospedagem, sem causar conflitos de
mtodo e propriedade.
Controles do usurio podem ser escritos em uma linguagem de programao
diferente daquela que usada para a pgina principal de hospedagem. Por
exemplo, um controle do usurio escrito em Microsoft Visual C# pode ser
usado em um Web Form escrito em Microsoft Visual Basic.
Controles do usurio podem ser compartilhados em um aplicativo Web. Voc
pode compartilhar um nico controle do usurio entre todas as pginas de um
aplicativo Web.

Desvantagens de controles do usurio
Controles do usurio possuem algumas desvantagens durante o desenvolvimento
de um aplicativo Web:
A interface do usurio e o cdigo podem ser duplicados. Durante o
compartilhamento de um controle do usurio entre aplicativos Web, difcil
manter a interface do usurio e o cdigo. Isso porque, se esses elementos forem
genricos, voc precisar modificar todas as instncias de um controle do usurio.
Se o cdigo do controle do usurio for genrico ou no for logicamente abstrato,
voc precisar reescrever ou modificar esse cdigo para cada utilizao aplicada.
O cdigo fica visvel. O arquivo code-behind fica visvel a qualquer usurio que
tenha acesso ao aplicativo Web implantado, a no ser que voc faa uma pr-
compilao desse aplicativo.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-33
Compartilhamento de controles do usurio
Voc pode compartilhar um nico controle do usurio entre todas as pginas
de um aplicativo Web. No entanto, as pginas .aspx em um aplicativo Web no
podem hospedar um controle do usurio de outro aplicativo Web. Para usar um
controle do usurio em vrios aplicativos Web, necessrio copiar esse controle
para a pasta raiz virtual de cada aplicativo Web.
Para compartilhar controles com vrios aplicativos Web, voc pode criar um controle
da Web personalizado, que atua como um controle do usurio compartilhvel que
voc pode adicionar Toolbox de um aplicativo Web. Controles da Web personalizados
so mais difceis de criar do que controles do usurio. Isso acontece porque, ao
contrrio dos controles do usurio, no possvel criar controles da Web personalizados
usando o Visual Studio 2010. Todo o desenvolvimento feito apenas no cdigo.
Para criar um controle da Web personalizado, crie uma classe derivada da classe
Control ou WebControl.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-34 Introduo
Conve
Pontos
Se voc
projeto
em um
aps o i
dos seu
controle
Conver
fcil m
a seguir
Rem
os e
Alte
os a
(se
aoDesenvolvimentonaW
ersodeum
s principais
no incluir contr
de aplicativo Web
estgio posterior.
incio do desenvo
s Web Forms que
es do usurio, f
rso de um We
modificar um Web
representa a conv
mova todos os ele
elementos html, h
ere a diretiva Pag
atributos de diret
presente), CodeF
WebcomoMicrosoftV
WebForme
roles do usurio d
b, ainda poder a
Na verdade, s v
olvimento, pois as
e esto duplicado
cil converter um
eb Form existen
Form para conver
verso de um Web
ementos HTML d
head, body e for
ge existente para u
tiva, com a exce
File e Inherits.
VisualStudio2010
emumcont
durante o desenvo
dicionar um ou m
vezes melhor cri
sim voc pode id
os. Como Web Fo
Web Form em um
nte em um con
rt-lo em um contr
Form em um con
de nvel superior
rm.
uma diretiva Con
o de Language,
troledousu
olvimento inicial d
mais controles do
ar controles do u
entificar os bits e
rms so semelhan
m controle do usu
ntrole do usuri
role do usurio. O
ntrole do usurio:
do Web Form, in
ntrol. Remova tod
AutoEventWireu
rio

do
usurio
surio
partes
ntes a
urio.
io
processo
ncluindo
dos
up
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-35

Observao:paraobtermaisinformaessobreosatributosaceitospelasdiretivasPage
eControl,consulteSintaxedediretivasnadocumentaodoVisualStudio2010.
Adicione um atributo ClassName diretiva Control. O atributo ClassName
permite que o controle do usurio seja fortemente tipificado quando voc o
adiciona a uma pgina.
Renomeie o arquivo usando um nome que reflita sua finalidade e depois altere
a extenso de .aspx para .ascx. Seu Web Form um controle do usurio.

Observao:seoWebFormcontiverumarquivocode-behind,voctambmdever
alteraraextensodearquivodessapginapara.ascx.csou.ascx.vb.Alteretambmo
tipodeheranadaclasse,deSystem.Web.UI.PageparaSystem.Web.UI.UserControl.
Adicione propriedades ao controle do usurio, para permitir acesso controlado
aos dados privados (se houver) contidos nesse controle. Essas propriedades
funcionam da mesma maneira do que em um Web Form.

Convertendo um arquivo code-behind em um controle do usurio
Voc tambm pode converter um arquivo code-behind em um controle do usurio
executando as etapas a seguir:
1. Renomeie o arquivo .aspx de forma que sua extenso seja .ascx.
2. Renomeie o arquivo code-behind com a extenso .ascx.vb ou .ascx.cs,
dependendo da linguagem de programao usada nesse arquivo.
3. Abra o arquivo code-behind e altere a herana da classe de Page para UserControl.
4. No arquivo .ascx, execute as seguintes etapas:
a. Remova os elementos html, body e form da pgina.
b. Transforme a diretiva Page em uma diretiva Control.
c. Remova todos os atributos da diretiva Control, exceto Language,
AutoEventWireup (se presente), CodeFile e Inherits.
d. Na diretiva Control, altere o atributo CodeFile de forma que ele aponte
para o arquivo code-behind renomeado.
5. Inclua um atributo ClassName na diretiva Control. Isso permite que o controle
do usurio seja fortemente tipificado quando ele adicionado a uma pgina.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-36 Introduo
Demo
contro
Nesta d
usurio
Etapas
1. Fa
2. Abr
D:\
a.
b.
c.
aoDesenvolvimentonaW
onstrao:Co
oledousur
demonstrao, voc
.
s da demonstra
a logon em 1056
ra a soluo Cust
\Demofiles\M5\V
No menu Inicia
clique em Micro
Studio 2010.
No menu File d
Na caixa de dilo
D:\Demofiles\M
D:\Demofiles\M
WebcomoMicrosoftV
omoconvert
rio
c ver como con
ao
60A-GEN-DEV co
tomerManageme
VB ou D:\Demofi
ar de 10560A-GE
osoft Visual Stud
do Visual Studio 2
ogo Open Project
M5\VB\Custome
M5\CS\Custome
VisualStudio2010
terumWeb
nverter um Web F
omo Aluno, com
ent, localizada na
iles\M5\CS.
EN-DEV, aponte p
dio 2010 e clique
2010, clique em O
t, na caixa File nam
erManagement.sln
erManagement.sln
Formemum
Form em um con
a senha Pa$$w0
a pasta
para Todos os Pr
e em Microsoft V
Open Project.
me, digite
n ou
n e depois clique
m

ntrole do
0rd.
rogramas,
Visual
em Open.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-37
3. Abra o Web Form InsertCustomer.aspx e transforme sua diretiva Page em
uma diretiva Control.
[Visual Basic]
<%@ Control Language="VB" AutoEventWireup="false"
CodeFile="InsertCustomer.aspx.vb" Inherits="InsertCustomer" %>

[Visual C#]
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="InsertCustomer.aspx.cs" Inherits="InsertCustomer" %>

a. No Solution Explorer, clique com o boto direito em InsertCustomer.aspx
e depois clique em Open.
b. Na janela InsertCustomer.aspx, localize a diretiva Page e a transforme
em uma diretiva Control.
[Visual Basic]
<%@ Control Language="VB" AutoEventWireup="false"
CodeFile="InsertCustomer.aspx.vb" Inherits="InsertCustomer" %>

[Visual C#]
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="InsertCustomer.aspx.cs" Inherits="InsertCustomer" %>

4. Adicione uma propriedade ClassName com um valor de InsertCustomer
diretiva Control.
[Visual Basic]
<%@ Control Language="VB" AutoEventWireup="false"
CodeFile="InsertCustomer.aspx.vb" Inherits="InsertCustomer"
ClassName="InsertCustomer" %>

[Visual C#]
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="InsertCustomer.aspx.cs" Inherits="InsertCustomer"
ClassName="InsertCustomer" %>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-38 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Na janela InsertCustomer.aspx, adicione o cdigo a seguir ao final da
diretiva Control.
ClassName="InsertCustomer"

5. Na janela InsertCustomer.aspx, remova todos os elementos HTML de nvel
superior, como os elementos DOCTYPE, html, head, body, title, link e form.

Observao:tomecuidadoparanoexcluiroelementodiveocontedonoelemento
form.Asmarcasdeaberturaedefechamentodecadaelemento(seexistirem)devem
serremovidas.

Observao:depoisderemovertodososelementosdenvelsuperior,vocobtero
seguintecdigo.
[Visual Basic]
<%@ Control Language="VB" AutoEventWireup="false"
CodeFile="InsertCustomer.aspx.vb" Inherits="InsertCustomer"
ClassName="InsertCustomer" %>

<div class="customertable">
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerNameLabel" runat="server"
Text="Name:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerNameTextBox"
runat="server" MaxLength="50"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerAddressLabel"
runat="server" Text="Address:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerAddressTextBox"
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-39
runat="server" MaxLength="50"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerPhoneLabel" runat="server"
Text="Phone:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerPhoneTextBox"
runat="server" MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerZipCodeLabel"
runat="server" Text="Zip Code:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerZipCodeTextBox"
runat="server" MaxLength="10"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerCityLabel" runat="server"
Text="City:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerCityTextBox"
runat="server" MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerStateLabel" runat="server"
Text="State:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerStateTextBox"
runat="server" MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerEmailAddressLabel"
(O cdigo continua na prxima pgina.)
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-40 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
runat="server" Text="Email Address:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerEmailAddressTextBox"
runat="server" MaxLength="40"></asp:TextBox>
</div>
</div>
<div class="customertablefooter">
</div>
<asp:Button ID="CustomerInsertButton" runat="server"
Text="Insert" />
&nbsp;<asp:Button ID="CustomerCancelButton" runat="server"
Text="Cancel" />
</div>

[Visual C#]
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="InsertCustomer.aspx.cs" Inherits="InsertCustomer"
ClassName="InsertCustomer" %>

<div class="customertable">
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerNameLabel" runat="server"
Text="Name:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerNameTextBox"
runat="server" MaxLength="50"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerAddressLabel"
runat="server" Text="Address:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerAddressTextBox"
runat="server" MaxLength="50"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerPhoneLabel"
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-41
runat="server" Text="Phone:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerPhoneTextBox"
runat="server" MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerZipCodeLabel"
runat="server" Text="Zip Code:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerZipCodeTextBox"
runat="server" MaxLength="10"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerCityLabel" runat="server"
Text="City:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerCityTextBox"
runat="server" MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerStateLabel" runat="server"
Text="State:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerStateTextBox"
runat="server" MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customertablerow">
<div class="customertableleftcol">
<asp:Label ID="CustomerEmailAddressLabel"
runat="server" Text="Email Address:"></asp:Label>
</div>
<div class="customertablerightcol">
<asp:TextBox ID="CustomerEmailAddressTextBox"
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-42 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
runat="server" MaxLength="40"></asp:TextBox>
</div>
</div>
<div class="customertablefooter">
</div>
<asp:Button ID="CustomerInsertButton" runat="server"
Text="Insert"
onclick="CustomerInsertButton_Click" />
&nbsp;<asp:Button ID="customerCancelButton" runat="server"
Text="Cancel"
onclick="CustomerCancelButton_Click" />
</div>

6. Salve o Web Form InsertCustomer.aspx.
In the CustomerManagement Microsoft Visual Studio (Administrator)
window, on the File menu, click Save InsertCustomer.aspx.
7. Renomeie o Web Form de InsertCustomer.aspx para InsertCustomer.ascx.
a. No Solution Explorer, clique com o boto direito em InsertCustomer.aspx,
clique em Rename, altere o nome do arquivo para InsertCustomer.ascx e
depois pressione ENTER.
b. Na caixa de mensagem do Microsoft Visual Studio, clique em Yes.
8. Abra o arquivo code-behind do controle do usurio InsertCustomer.ascx.vb
ou InsertCustomer.ascx.cs e altere sua classe base de System.Web.UI.Page
para System.Web.UI.UserControl.
[Visual Basic]
Partial Class InsertCustomer
Inherits System.Web.UI.UserControl

[Visual C#]
public partial class InsertCustomer : System.Web.UI.UserControl

a. No Solution Explorer, clique com o boto direito em InsertCustomer.ascx.vb
ou InsertCustomer.ascx.cs e depois clique em Open.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-43
b. Na janela do cdigo de InsertCustomer.ascx.vb ou InsertCustomer.ascx.cs,
localize a classe InsertCustomer e altere sua propriedade de
System.Web.UI.Page para System.Web.UI.UserControl.
[Visual Basic]
Partial Class InsertCustomer
Inherits System.Web.UI.UserControl

[Visual C#]
public partial class InsertCustomer :
System.Web.UI.UserControl

9. Mova o contedo do mtodo de evento Page_LoadComplete e o acrescente ao
mtodo de evento Page_Load.
[Visual Basic]
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
' Instantiate Customer
instantiateCustomerObject()
' Populate the UI controls
populateUI()
End Sub

[Visual C#]
protected void Page_Load(object sender, EventArgs e)
{
// Instantiate Customer
instantiateCustomerObject();
// Populate the UI controls
populateUI();
}


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-44 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Na janela do cdigo de InsertCustomer.ascx.vb ou InsertCustomer.ascx.cs,
no mtodo de evento Page_LoadComplete, selecione e clique com o
boto direito do mouse no seguinte cdigo e depois clique em Cut.
[Visual Basic]
' Populate the UI controls
populateUI()


[Visual C#]
// Populate the UI controls
populateUI();

Na janela do cdigo de InsertCustomer.ascx.vb ou InsertCustomer.ascx.cs,
acrescente o cdigo copiado ao mtodo de evento Page_Load.
[Visual Basic]
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
' Instantiate Customer
instantiateCustomerObject()
' Populate the UI controls
populateUI()
End Sub

[Visual C#]
protected void Page_Load(object sender, EventArgs e)
{
// Instantiate Customer
instantiateCustomerObject();
// Populate the UI controls
populateUI();
}

10. Na janela do cdigo de InsertCustomer.ascx.vb ou InsertCustomer.ascx.cs,
exclua o mtodo de evento Page_LoadComplete.
11. Compile a soluo.
Na janela CustomerManagement Microsoft Visual Studio (Administrator),
no menu Build, clique em Build Solution.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-45
12. Salve e feche o arquivo code-behind do controle do usurio.
a. Na janela CustomerManagement Microsoft Visual Studio (Administrator),
no menu File, clique em Save InsertCustomer.ascx.vb ou Save
InsertCustomer.ascx.cs.
b. Na janela do cdigo de InsertCustomer.ascx.vb ou InsertCustomer.ascx.cs,
clique no boto Close.
c. Na janela InsertCustomer.ascx, clique no boto Close.
d. Na janela CustomerManagement Microsoft Visual Studio (Administrator),
clique no boto Close.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-46 Introduo
Inclus
Pontos
Voc po
pgina q
includo
Inclus
Inclua u
O cdig
<%@ Re
tagpre
O atribu
e diferen
TagNam
virtual p
aoDesenvolvimentonaW
sodeumco
s principais
ode inserir um co
que faz referncia
o nesse host.
o de controles
um controle do us
go a seguir demon
egister src="We
efix="uc1" %>
uto TagPrefix det
ncia entre vrios c
me o nome exclu
para o arquivo do
WebcomoMicrosoftV
ontroledou
ontrole do usurio
a ao controle do u
s do usurio
urio em um Web
nstra isso.
ebUserControl.as
termina um name
controles do usur
usivo do controle
controle do usu
VisualStudio2010
surioemu
o em qualquer W
usurio chamad
b Form ASP.NET u
scx" tagname="W
espace exclusivo p
rio que possuem o
e do usurio. O at
rio.
mWebForm
Web Form ASP.NE
da host, e o contr
usando a diretiva
WebUserControl"
para o controle do
o mesmo nome. O
tributo Src o cam
m

ET. A
role
Register.

o usurio
O atributo
minho
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-47
Posicionamento de um controles do usurio em um Web Form
Depois de registrar o controle do usurio usando a diretiva Register, voc pode
inserir a marca desse controle no Web Form exatamente como faria para inserir
um controle de servidor Web em um Web Form. O cdigo a seguir adiciona um
controle do usurio a um Web Form.
<uc1:WebUserControl ID="WebUserControl1" runat="server" />

Observao:possvelarrastarumcontroledousuriodoSolutionExploreratum
WebForm.QuandovocarrastaumcontroledousurioatumWebFormnomodo
Design,oVisualStudio2010adicionaautomaticamenteadiretivaRegistereamarca
docontroledousuriomarcaodapgina.
Quando um usurio solicita o Web Form no qual o controle do usurio foi inserido,
o tempo de execuo compila o arquivo do controle do usurio e o disponibiliza na
pgina.
Configurao de propriedades pblicas
Se o controle do usurio que voc adicionou ao Web Form tiver propriedades pblicas,
verifique se as propriedades precisam ser definidas para inicializar esse controle.
Essas propriedades podem ser definidas de forma declarativa na marcao, na janela
Properties, ou podem acessadas a partir do cdigo.
O exemplo a seguir define a propriedade Name do controle do usurio como o
valor Gregory Weber.
[Visual Basic]
WebUserControl1.Name = "Gregory Weber"

[Visual C#]
WebUserControl1.Name = "Gregory Weber";

Se a propriedade pblica for de leitura/gravao, voc tambm poder escrever os
valores no Web Form, exatamente como escreveria qualquer outra propriedade.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-48 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exemplo de controle do usurio
A seguir, outros exemplos que mostram uma pgina da Web ASP.NET que contm um
controle do usurio. Esse controle do usurio encontra-se no arquivo Spinner.ascx, na
pasta Controls. Na pgina, o controle est registrado para usar o prefixo uc e o nome
da marca Spinner. As propriedades do controle do usurio MinValue e MaxValue
esto definidas declarativamente.

[Visual Basic]
<%@ Page Language="VB" %>
<%@ Register TagPrefix="uc" TagName="Spinner"
Src="~\Controls\Spinner.ascx" %>
<html>
<body>
<form runat="server">
<uc:Spinner id="Spinner1" runat="server" MinValue="1"
MaxValue="10" />
</form>
</body>

[Visual C#]
<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc" TagName="Spinner"
Src="~\Controls\Spinner.ascx" %>
<html>
<body>
<form runat="server">
<uc:Spinner id="Spinner1" runat="server" MinValue="1"
MaxValue="10" />
</form>
</body>

Pergunta: qual a diferena entre os atributos TagPrefix, TagName e Src?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Laborat
mestras

Observa
program
deprog
Seestive
fornecid
Introdu
Neste la
um proj
convert

rio: Impl
econtrol
ao:vocpodee
maoVisualBasic
ramao,consulte
erusandooVisual
asnaSeo2do
uo
aboratrio, voc i
jeto da Web ASP
er um Web Form
Impleme
lementa
lesdous
executartarefasne
ouVisualC#.See
easetapasfornecid
C#comolinguag
documentodolab
ir implementar p
.NET. Tambm ir
m em um controle

entaodepginasmest
odep
urio
estelaboratriousa
estiverusandooVi
dasnaSeo1do
emdeprograma
boratrio.
pginas mestras e
r adicionar nave
e do usurio.
trasecontrolesdousuri
ginas
andoalinguagem
isualBasiccomoli
odocumentodola
o,consulteaseta
e controles do us
egao pgina m
o 5-49

de
nguagem
aboratrio.
apas
urio em
mestra e
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-50 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Objetivos
Depois de concluir este laboratrio, voc ser capaz de:
Adicionar e aplicar uma pgina mestra a um aplicativo Web.
Converter um Web Form em uma pgina de contedo.
Adicionar navegao pgina mestra.
Converter um Web Form em um controle do usurio.
Criar uma pgina de contedo.
Inserir um controle do usurio na pgina de contedo.

Configurao do laboratrio
Neste laboratrio, voc usar o ambiente de mquina virtual disponvel. Antes de
iniciar o laboratrio, voc deve:
Inicie a mquina virtual 10560A-GEN-DEV e depois faa logon usando as
seguintes credenciais:
Nome de usurio: Aluno
Senha: Pa$$w0rd


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Cenr
Voc tra
possui u
informa
de usu
Para faz
Form ex
necess
parte do
XML de
navega
uma pg
criar um

riodelabora
abalha como dese
uma base global d
aes dos clientes
rio consistente a
zer isso, voc prec
xistente em um c
rio adicionar nav
o cdigo para adi
e mapa do site. Vo
o pgina mest
gina de contedo
ma nova pgina d
Impleme
atrio
envolvedor na Co
de clientes. Sua o
. Ela decidiu mod
todos os seus cli
cisa adicionar um
controle do usur
vegao pgina
icionar navegao
oc pode usar o c
tra. Alm disso,
o, mover o conte
de contedo com

entaodepginasmest
ontoso, Ltd, uma
organizao usa u
dificar o site para f
ientes.
ma pgina mestra
rio para reutiliza
mestra. Um dese
o ao site e tambm
cdigo e o docum
necessrio conv
do dessa pgina
um controle do u
trasecontrolesdousuri
a grande organiza
um site para geren
fornecer uma exp
e converter um W
o. Alm disso, s
envolvedor snior
m criou um docu
mento para adicio
verter um Web Fo
a para a pgina m
usurio.
o 5-51

ao que
nciar as
perincia
Web
ser
r j criou
umento
onar
orm em
mestra e
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-52 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Seo1:VisualBasic
Exerccio1:inclusoeaplicaodeumapginamestra
Estas so as principais tarefas do exerccio:
1. Adicionar uma pgina mestra a um site existente.
2. Inicializar os controles e elementos de estilo na pgina mestra.
3. Definir um controle ContentPlaceHolder na pgina mestra.

Tarefa1:Adicionarumapginamestraaumsiteexistente
Faa logon em 10560A-GEN-DEV como Aluno, com a senha Pa$$w0rd.
Abra o Microsoft Visual Studio 2010.
Abra a soluo CustomerManagement na pasta D:\Labfiles\Starter\M5\VB.
Adicione uma nova pgina mestra denominada Site.master ao site
CustomerManagement.

Tarefa2:Inicializaroscontroleseelementosdeestilonapginamestra
Na janela de Site.master, adicione uma propriedade id ao elemento head
usando o seguinte cdigo.
<head runat="server" id="MainHead">
Na janela de Site.master, altere a propriedade id do elemento form a MainForm.
<form id="MainForm" runat="server">
Faa referncia ao arquivo Site.css no Web Form Site.master, relativo pasta
raiz, inserindo o seguinte texto de marcao ao lado da marca de fechamento
do elemento title.
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
Na janela de Site.master, adicione uma propriedade Class ao elemento body
usando a seguinte marcao.
<body class="template">
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-53
Na janela de Site.master, adicione uma propriedade Class ao elemento div
usando a seguinte marcao.
<div class="content">
Na janela de Site.master, defina o valor do elemento title como Contoso
Customer Management, usando o seguinte cdigo.
<title>Contoso Customer Management</title>

Tarefa3:DefinirumcontroleContentPlaceHoldernapginamestra
Remova ContentPlaceHolder do elemento head.
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
Altere a propriedade id do controle ContentPlaceHolder no elemento div
para MainContentPlaceHolder.
<div class="content">
<asp:ContentPlaceHolder id="MainContentPlaceHolder"
runat="server">
</asp:ContentPlaceHolder>

</div>
Salve a pgina mestra.

Resultados:depoisdeconcluiresteexerccio,voctercriadoumapginamestra
denominadaSite.masteredefinidoumcontroleContentPlaceHoldernapgina
mestra.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-54 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio2:conversodeFormulrioWebempginasde
contedoecontrolesdousurio
Estas so as principais tarefas do exerccio:
1. Converter o Formulrio Web padro em uma pgina de contedo.
2. Adicionar navegao pgina mestra.
3. Converter o Web Form em um controle do usurio.
4. Criar uma pgina de contedo e inserir um controle do usurio.

Tarefa1:ConverteroWebFormpadroemumapginadecontedo
Abra o Web Form Default.aspx.
Na janela de Default.aspx, na diretiva Page, adicione uma propriedade
MasterPageFile, com um valor de ~/Site.master, usando o seguinte cdigo.
<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default.aspx.vb"
Inherits="_Default" MasterPageFile="~/Site.master"%>
Remova os elementos HTML de nvel superior do Web Form Default.

Observao:tomecuidadoparanoexcluiroelementodiveseucontedono
elementoform.
<!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>
<link href="Styles/Site.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat"server">
</form>
</body>
</html>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-55
Na janela de Default.aspx, adicione um controle Content de servidor.
<asp:Content ID="MainContent"
ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
</asp:Content>
Na janela de Default.aspx, mova o cdigo a seguir para depois da marca de
abertura do elemento form na pgina mestra Site.master.
<div class="appTitle">
<asp:Literal ID="AppTitleLiteral" runat="server"
Text="Customer Management"></asp:Literal>
</div>
Formate a pgina mestra Site.master, pressionando CTRL+K e depois CTRL+D.
Salve as alteraes na pgina mestra Site.master.
Formate o Web Form Default.aspx, pressionando CTRL+K e depois CTRL+D.
Salve e feche o Web Form Default.aspx.

Tarefa2:Adicionarnavegaopginamestra
Adicione uma trilha pgina mestra incluindo um controle SiteMapPath
denominado MainSiteMapPath, inserido em um elemento div com um valor
de atributo class de siteMapPath. Adicione o novo elemento div abaixo do
elemento div existente com um valor de atributo class de appTitle.
<div class="siteMapPath">
<asp:SiteMapPath ID="MainSiteMapPath" runat="server" />
</div>
Adicione um menu pgina mestra incluindo um controle Menu denominado
MainMenu, inserido em um elemento div com valor do atributo class igual a
menu. Adicione o novo elemento div abaixo do elemento div existente com
um valor de atributo class de siteMapPath.
<div class="menu">
<asp:Menu ID="MainMenu" runat="server">
</asp:Menu>
</div>
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-56 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Torne o layout do menu horizontal aplicando o atributo Orientation.
Orientation="Horizontal"
Certifique-se de que a imagem interna que indica se um item de menu esttico
possui um menu secundrio no seja exibida, definindo o atributo
StaticEnableDefaultPopOutImage.
StaticEnableDefaultPopOutImage="false"
Obtenha os itens para o controle Menu a partir do controle de fonte de dados
MainSiteMapDataSource, aplicando o atributo DataSourceID.
DataSourceID="MainSiteMapDataSource"
Adicione os seguintes elementos secundrios ao controle Menu, inserindo-os
entre as marcas Menu de abertura e fechamento.
<StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
<StaticHoverStyle BackColor="White" ForeColor="Black" />
<DynamicHoverStyle BackColor="White" ForeColor="Black" />
<DynamicMenuItemStyle ItemSpacing="2px" HorizontalPadding="5px"
VerticalPadding="2px" />
Adicione um controle SiteMapDataSource denominado MainSiteMapDataSource
pgina mestra, aps a marca de fechamento do elemento div, com valor do
atributo class igual a menu. O controle SiteMapDataSource no deve mostrar o
n de incio.
<asp:SiteMapDataSource ID="MainSiteMapDataSource" runat="server"
ShowStartingNode="false" />
Formate a pgina mestra Site.master.
Adicione o arquivo de mapa do site D:\Labfiles\Starter\M5\web.sitemap
ao projeto.
Modifique o estilo div.menu, usando a janela Manage Styles. O estilo de menu
deve ter a seguinte definio:
Category: Position
position: relative
z-index: 1
Top: 62px
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-57
Adicione um estilo siteMapPath usando a janela Manage Styles. O estilo
siteMapPathde menu deve ter a seguinte definio:
Selector: div.siteMapPath
Define in: Styles/Site.css
Category: Position
Position: fixed
Top: 42px
Category: Box
Seo Padding: remova a seleo da caixa Same for all; na caixa bottom,
digite 5px
Salve todos os arquivos modificados e execute a pgina mestra Site.master.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-58 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa3:ConverteroWebFormemumcontroledousurio
Abra o Web Form InsertCustomer.aspx e transforme sua diretiva Page em
uma diretiva Control.
<%@ Control Language="VB" AutoEventWireup="false"
CodeFile="InsertCustomer.aspx.vb" Inherits="InsertCustomer" %>
Adicione uma propriedade ClassName com um valor de Customer diretiva
Control.
<%@ Control Language="VB" AutoEventWireup="false"
CodeFile="InsertCustomer.aspx.vb" Inherits="InsertCustomer"
ClassName="Customer" %>
Altere o valor da propriedade Inherits de InsertCustomer para Customer.
<%@ Control Language="VB" AutoEventWireup="false"
CodeFile="InsertCustomer.aspx.vb" Inherits="Customer"
ClassName="Customer" %>
Altere o valor da propriedade CodeFile de InsertCustomer.aspx.vb para
Customer.aspx.vb.
<%@ Control Language="VB" AutoEventWireup="false"
CodeFile="Customer.aspx.vb" Inherits="Customer"
ClassName="Customer" %>
Remova todos os elementos HTML de nvel superior, como os elementos
DOCTYPE, html, head, body, title, link e form.
Formate o documento.

Observao:depoisderemovertodososelementosHTMLdenvelsuperior,voc
podervisualizaraseguintemarcaonajanelaInsertCustomer.aspx.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-59
<%@ Control Language="VB" AutoEventWireup="false"
CodeFile="Customer.ascx.vb" Inherits="Customer"
ClassName="Customer" %>
<div class="customerTable">
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerFirstNameLabel" runat="server"
Text="First Name:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerFirstNameTextBox"
runat="server" MaxLength="50"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerLastNameLabel" runat="server"
Text="Last Name:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerLastNameTextBox"
runat="server"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerAddressLabel" runat="server"
Text="Address:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerAddressTextBox"
runat="server" MaxLength="50"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerZipCodeLabel" runat="server"
Text="Zip Code:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerZipCodeTextBox"
runat="server" MaxLength="10"></asp:TextBox>
</div>
</div>
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-60 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerCityLabel" runat="server"
Text="City:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerCityTextBox" runat="server"
MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerStateLabel" runat="server"
Text="State:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerStateTextBox" runat="server"
MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerCountryLabel" runat="server"
Text="Country:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:DropDownList ID="CustomerCountryDropDownList"
runat="server">
</asp:DropDownList>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerPhoneLabel" runat="server"
Text="Phone:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerPhoneTextBox" runat="server"
MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerEmailAddressLabel"
runat="server" Text="Email Address:"></asp:Label>
</div>
(O cdigo continua na prxima pgina.)
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-61
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerEmailAddressTextBox"
runat="server" MaxLength="50"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerWebAddressLabel" runat="server"
Text="Web Address:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerWebAddressTextBox"
runat="server" MaxLength="80"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerCreditLimitLabel"
runat="server" Text="Credit Limit:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerCreditLimitTextBox"
runat="server" MaxLength="10"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerNewsSubscriberLabel"
runat="server" Text="News Subscriber:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:CheckBox ID="CustomerNewsSubscriberCheckBox"
runat="server" />
</div>
</div>
<div class="customerTableFooter">
<asp:Button ID="CustomerInsertButton" runat="server"
Text="Insert" />
&nbsp;<asp:Button ID="CustomerCancelButton" runat="server"
Text="Cancel" />
</div>
</div>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-62 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Salve o Web Form InsertCustomer.aspx.
Altere o nome do Web Form de InsertCustomer.aspx para Customer.ascx.
Abra o arquivo code-behind do controle do usurio Customer.ascx.vb,
altere o nome da classe para Customer e altere sua classe base de
System.Web.UI.Page para System.Web.UI.UserControl.
Partial Class InsertCustomer
Inherits System.Web.UI.UserControl
Mova o contedo do mtodo de evento Page_LoadComplete e o acrescente ao
mtodo de evento Page_Load.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
' Instantiate Customer
instantiateCustomerObject()
' Populate the UI controls
populateUI()
End Sub
Remova o mtodo de evento Page_LoadComplete.
''' <summary>
''' Populates UI controls
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks<>/remarks>
Protected Sub Page_LoadComplete(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.LoadComplete
End Sub
Salve os arquivos modificados e feche o controle do usurio Customer.ascx.vb.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-63
Tarefa4:Criarumapginadecontedoeinserirumcontroledousurio
Adicione uma nova pgina de contedo denominada InsertCustomer.aspx,
com um arquivo code-behind baseado na pgina mestra Site.master.
Abra a pgina de contedo InsertCustomer.aspx no modo Design e arraste o
controle do usurio Customer.ascx at o controle MainContentPlaceHolder.
Execute o aplicativo Web CustomerManagement.
Verifique o site Contoso Customer Management clicando em New no menu
Customers.

Observao:observequeonovocontroledousurioexibidonoFormulrioWeb
InsertCustomer.

Tarefa5:Desativaramquinavirtualereverterasalteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Resultados:depoisdeconcluiresteexerccio,vocterconvertidooFormulrioWeb
padroemumapginadecontedo,adicionadonavegaopginamestrae
convertidooFormulrioWebemumcontroledousurio.Tambmtercriadouma
pginadecontedoeinseridoumcontroledousurio.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-64 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Seo2:VisualC#
Exerccio1:inclusoeaplicaodeumapginamestra
Estas so as principais tarefas do exerccio:
1. Adicionar uma pgina mestra a um site existente.
2. Inicializar os controles e elementos de estilo na pgina mestra.
3. Definir um controle ContentPlaceHolder na pgina mestra.

Tarefa1:Adicionarumapginamestraaumsiteexistente
Faa logon em 10560A-GEN-DEV como Aluno, com a senha Pa$$w0rd.
Abra o Microsoft Visual Studio 2010.
Abra a soluo CustomerManagement, localizada na pasta
D:\Labfiles\Starter\M5\CS.
Adicione uma nova pgina mestra denominada Site.master ao site
CustomerManagement.

Tarefa2:Inicializaroscontroleseelementosdeestilonapginamestra
Na janela de Site.master, adicione uma propriedade id ao elemento head
usando o seguinte cdigo.
<head runat="server" id="MainHead">
Na janela de Site.master, altere a propriedade id do elemento form a MainForm.
<form id="MainForm" runat="server">
Faa referncia ao arquivo Site.css no Web Form Site.master, relativo pasta
raiz, inserindo o seguinte texto de marcao ao lado da marca de fechamento
do elemento title.
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-65
Na janela de Site.master, adicione uma propriedade Class ao elemento body
usando a seguinte marcao.
<body class="template">
Na janela de Site.master, adicione uma propriedade Class ao elemento div
usando a seguinte marcao.
<div class="content">
Na janela de Site.master, defina o valor do elemento title como Contoso
Customer Management, usando o seguinte cdigo.
<title>Contoso Customer Management</title>

Tarefa3:DefinirumcontroleContentPlaceHoldernapginamestra
Remova ContentPlaceHolder do elemento head.
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
Altere a propriedade id do controle ContentPlaceHolder no elemento div
para MainContentPlaceHolder.
<div class="content">
<asp:ContentPlaceHolder id="MainContentPlaceHolder"
runat="server">
</asp:ContentPlaceHolder>

</div>
Salve a pgina mestra.

Resultados:depoisdeconcluiresteexerccio,voctercriadoumapginamestra
denominadaSite.masteredefinidoumcontroleContentPlaceHoldernapgina
mestra.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-66 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio2:conversodeFormulrioWebempginasde
contedoecontrolesdousurio
Estas so as principais tarefas do exerccio:
1. Converter o Formulrio Web padro em uma pgina de contedo.
2. Adicionar navegao pgina mestra.
3. Converter o Formulrio Web em um controle do usurio
4. Criar uma pgina de contedo e inserir um controle do usurio.

Tarefa1:ConverteroWebFormpadroemumapginadecontedo
Abra o Web Form Default.aspx.
Na janela de Default.aspx, na diretiva Page, adicione uma propriedade
MasterPageFile, com um valor de ~/Site.master, usando o seguinte cdigo.
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs"
Inherits="_Default" MasterPageFile="~/Site.master"%>
Remova os elementos HTML de nvel superior do Web Form Default.

Observao:tomecuidadoparanoexcluiroelementodiveocontedonoelemento
form.
<!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>
<link href="Styles/Site.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat"server">
</form>
</body>
</html>


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-67
Na janela de Default.aspx, adicione um controle Content de servidor.
<asp:Content ID="MainContent"
ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
</asp:Content>
Na janela de Default.aspx, mova o cdigo a seguir e insira-o aps a marca de
abertura do elemento form na pgina mestra Site.master.
<div class="appTitle">
<asp:Literal ID="AppTitleLiteral" runat="server"
Text="Customer Management"></asp:Literal>
</div>
Formate a pgina mestra Site.master, pressionando CTRL+K e depois CTRL+D.
Salve as alteraes na pgina mestra Site.master.
Formate o Web Form Default.aspx, pressionando CTRL+K e depois CTRL+D.
Salve e feche o Web Form Default.aspx.

Tarefa2:Adicionarnavegaopginamestra
Adicione uma trilha pgina mestra incluindo um controle SiteMapPath
denominado MainSiteMapPath, inserido em um elemento div com um valor
de atributo class de siteMapPath. Adicione o novo elemento div abaixo do
elemento div existente com um valor de atributo class de appTitle.
<div class="siteMapPath">
<asp:SiteMapPath ID="MainSiteMapPath" runat="server" />
</div>
Adicione um menu pgina mestra incluindo um controle Menu denominado
MainMenu, inserido em um elemento div com um valor de atributo class de
menu. Adicione o novo elemento div abaixo do elemento div existente com
um valor de atributo class de siteMapPath.
<div class="menu">
<asp:Menu ID="MainMenu" runat="server">
</asp:Menu>
</div>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-68 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Torne o layout do menu horizontal aplicando o atributo Orientation.
Orientation="Horizontal"
Certifique-se de que a imagem interna que indica se um item de menu esttico
possui um menu secundrio no seja exibida, definindo o atributo
StaticEnableDefaultPopOutImage.
StaticEnableDefaultPopOutImage="false"
Obtenha os itens para o controle Menu a partir do controle de fonte de dados
MainSiteMapDataSource, aplicando o atributo DataSourceID.
DataSourceID="MainSiteMapDataSource"
Adicione os seguintes elementos secundrios ao controle Menu, inserindo-os
entre as marcas Menu de abertura e fechamento.
<StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
<StaticHoverStyle BackColor="White" ForeColor="Black" />
<DynamicHoverStyle BackColor="White" ForeColor="Black" />
<DynamicMenuItemStyle ItemSpacing="2px" HorizontalPadding="5px"
VerticalPadding="2px" />
Adicione um controle SiteMapDataSource denominado MainSiteMapDataSource
pgina mestra, aps a marca de fechamento do elemento div, com um valor de
atributo class de menu. O controle SiteMapDataSource no deve mostrar o n de
incio.
<asp:SiteMapDataSource ID="MainSiteMapDataSource" runat="server"
ShowStartingNode="false" />
Formate a pgina mestra Site.master.
Adicione o arquivo de mapa do site D:\Labfiles\Starter\M5\web.sitemap
ao projeto.
Modifique o estilo div.menu, usando a janela Manage Styles. O estilo de menu
deve ter a seguinte definio:
Selector: div.menu
Define in: Styles/Site.css
Category: Position
Position: relative
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-69
Z-order: 1
Top: 62px
Adicione um estilo siteMapPath usando a janela Manage Styles. O estilo
siteMapPathde menu deve ter a seguinte definio:
Selector: div.siteMapPath
Define in: Styles/Site.css
Category: Position
Position: fixed
Top: 42px
Category: Box
Seo Padding: remova a seleo da caixa Same for all; na caixa bottom,
digite 5px
Salve todos os arquivos modificados e execute a pgina mestra Site.master.

Tarefa3:ConverteroWebFormemumcontroledousurio
Abra o Web Form InsertCustomer.aspx e transforme sua diretiva Page em
uma diretiva Control.
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="InsertCustomer.aspx.cs" Inherits="InsertCustomer" %>
Adicione uma propriedade ClassName com um valor de Customer diretiva
Control.
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="InsertCustomer.aspx.cs" Inherits="InsertCustomer"
ClassName="Customer" %>
Altere o valor da propriedade Inherits de InsertCustomer para Customer.
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="InsertCustomer.aspx.cs" Inherits="Customer"
ClassName="Customer" %>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-70 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Altere o valor da propriedade CodeFile de InsertCustomer.aspx.cs para
Customer.aspx.cs.
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="Customer.aspx.cs" Inherits="Customer"
ClassName="Customer" %>
Remove todos os elementos HTML de nvel superior, como os elementos
DOCTYPE, html, head, body, title, link e form.
Formate o documento.

Observao:depoisderemovertodososelementosHTMLdenvelsuperior,voc
podervisualizaraseguintemarcaonajanelaInsertCustomer.aspx.
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="Customer.ascx.cs" Inherits="Customer"
ClassName="Customer" %>
<div class="customerTable">
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerFirstNameLabel" runat="server"
Text="First Name:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerFirstNameTextBox"
runat="server" MaxLength="50"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerLastNameLabel" runat="server"
Text="Last Name:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerLastNameTextBox"
runat="server"></asp:TextBox>
</div>
</div>
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-71
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerAddressLabel" runat="server"
Text="Address:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerAddressTextBox"
runat="server" MaxLength="50"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerZipCodeLabel" runat="server"
Text="Zip Code:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerZipCodeTextBox"
runat="server" MaxLength="10"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerCityLabel" runat="server"
Text="City:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerCityTextBox" runat="server"
MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerStateLabel" runat="server"
Text="State:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerStateTextBox" runat="server"
MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerCountryLabel" runat="server"
Text="Country:"></asp:Label>
</div>
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-72 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
<div class="customerTableRightCol">
<asp:DropDownList ID="CustomerCountryDropDownList"
runat="server">
</asp:DropDownList>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerPhoneLabel" runat="server"
Text="Phone:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerPhoneTextBox" runat="server"
MaxLength="30"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerEmailAddressLabel"
runat="server" Text="Email Address:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerEmailAddressTextBox"
runat="server" MaxLength="50"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerWebAddressLabel" runat="server"
Text="Web Address:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerWebAddressTextBox"
runat="server" MaxLength="80"></asp:TextBox>
</div>
</div>
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerCreditLimitLabel"
runat="server" Text="Credit Limit:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:TextBox ID="CustomerCreditLimitTextBox"
runat="server" MaxLength="10"></asp:TextBox>
</div>
</div>
(O cdigo continua na prxima pgina.)
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-73
<div class="customerTableRow">
<div class="customerTableLeftCol">
<asp:Label ID="CustomerNewsSubscriberLabel"
runat="server" Text="News Subscriber:"></asp:Label>
</div>
<div class="customerTableRightCol">
<asp:CheckBox ID="CustomerNewsSubscriberCheckBox"
runat="server" />
</div>
</div>
<div class="customerTableFooter">
<asp:Button ID="CustomerInsertButton" runat="server"
Text="Insert" OnClick="CustomerInsertButton_Click" />
&nbsp;<asp:Button ID="CustomerCancelButton" runat="server"
Text="Cancel" OnClick="CustomerCancelButton_Click" />
</div>
</div>
Salve o Web Form InsertCustomer.aspx.
Altere o nome do Web Form de InsertCustomer.aspx para Customer.ascx.
Abra o arquivo code-behind do controle do usurio Customer.ascx.cs, altere o
nome da classe para Customer e altere sua classe base de System.Web.UI.Page
para System.Web.UI.UserControl.
public partial class Customer : System.Web.UI.UserControl
Mova o contedo do mtodo de evento Page_LoadComplete e o acrescente ao
mtodo de evento Page_Load.
protected void Page_Load(object sender, EventArgs e)
{
// Instantiate Customer
instantiateCustomerObject();
// Populate the UI controls
populateUI();
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-74 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Remova o mtodo de evento Page_LoadComplete.
/// <summary>
/// Populates UI controls
/// </summary>
/// <param name="sender">>/param>
/// <param name="e"></param>
protected void Page__LoadComplete(object sender, EventArgs e)
{
}
Salve os arquivos modificados e feche o controle do usurio Customer.ascx.cs.

Tarefa4:Criarumapginadecontedoeinserirumcontroledousurio
Adicione uma nova pgina de contedo denominada InsertCustomer.aspx,
com um arquivo code-behind baseado na pgina mestra Site.master.
Abra a pgina de contedo InsertCustomer.aspx no modo Design e arraste o
controle do usurio Customer.ascx at o controle MainContentPlaceHolder.
Execute o aplicativo Web CustomerManagement.
Verifique o site Contoso Customer Management clicando em New no menu
Customers.

Observao:observequeonovocontroledousurioexibidonoFormulrioWeb
InsertCustomer.

Tarefa5:Desativaramquinavirtualereverterasalteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Resultados:depoisdeconcluiresteexerccio,vocterconvertidooFormulrio
Webpadroemumapginadecontedo,adicionadonavegaopginamestrae
convertidooWebFormemumcontroledousurio.Tambmtercriadouma
pginadecontedoeinseridoumcontroledousurio.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Revis
1. Com
ASP
2. Por
no


odolabora
mo voc ir anex
P.NET?
r que voc conver
laboratrio?
Impleme
atrio
ar pginas mestr
rteu um Web For

entaodepginasmest
as programaticam
rm em um contro
trasecontrolesdousuri
mente a um aplica
ole do usurio AS
o 5-75

ativo
SP.NET
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
5-76 Introduo
Revisod
complem
Pergun
1. Qu
2. Qu
arq
3. Qu
4. Qu

aoDesenvolvimentonaW
domdu
mentares
ntas e respostas
al a extenso de
e atributo substit
quivo web.config?
al a extenso de
ais so as desvan
WebcomoMicrosoftV
uloeprin
s de reviso
e arquivo de uma
tui qualquer conf
?
e arquivo de um
ntagens de contro

VisualStudio2010
cipaisinf
a pgina mestra?
figurao de pgi
controle do usu
oles do usurio?
formae
na mestra especi
rio?
es

ficada no
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Implementaodepginasmestrasecontrolesdousurio 5-77
Problemas e cenrios do mundo real
1. Voc deseja criar um controle no qual os outros desenvolvedores possam fazer
alteraes sem recompilar o cdigo. Qual a maneira mais fcil de implement-lo?
Voc deve implementar os controles como um controle do usurio.
2. Voc deseja criar uma pgina mestra geral, mas tambm deseja determinar
dois tipos diferentes de layouts com base nessa pgina mestra geral. Qual a
maneira mais fcil de implement-lo?
Voc poderia criar trs pginas mestras: a primeira seria a pgina mestra geral e
as outras duas seriam pginas mestras aninhadas, baseadas nessa pgina mestra
geral.

Prticas recomendadas
Mencione algumas prticas recomendadas no contexto da sua prpria situao
corporativa.
Use pginas mestras sempre que houver um layout que ser usado para duas
ou mais pginas.
Aplique pginas mestras ao arquivo web.config, se ele for ser usado com todas
ou quase todas as pginas do site, ou em reas especificas desse site. Isso facilita
a substituio da pginas mestras em um estgio posterior.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S



U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-1
Mdulo 6
Validao de entrada do usurio
Contedo:
Lio 1: Viso geral da validao de entrada do usurio 6-4
Lio 2: Controles de validao do ASP.NET 6-10
Lio 3: Validao de Web Forms 6-37
Laboratrio: Validao de entrada do usurio 6-43

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-2 Introduo
Viso ge
Quando
requisit
entrada
a entrad
ou o for
vincular
definir o
H diver
Voc po
tanto do
cliente e
servidor

aoDesenvolvimentonaW
eral do m
o voc cria um co
tos sobre o tipo d
a incorreta pode a
da do usurio ate
rmato da entrada
r pelo menos um
os critrios do co
rsos controles de v
ode aplic-los a um
o lado do cliente c
em vez da valida
r, poupa recursos
WebcomoMicrosoftV
mdulo
ontrole de entrada
de entrada que o u
at danificar o apl
nde aos seus req
a que esperava rec
m controle de valid
ontrole de valida
validao de entra
m Web Form ASP.
como no servidor.
o do servidor, red
do servidor e mel

VisualStudio2010
a como o TextBo
usurio inserir n
licativo Web, no
uisitos, compare-
ceber do usurio.
dao de entrada
o para testar seu
ada disponveis no
NET para executa
Quando voc usa
duz o trfego de d
lhora o tempo de
ox, tem expectativ
nesse controle. U
pior caso. Para ve
-a com o valor, o
. Para isso, voc p
a ao controle de e
us requisitos.
o Microsoft ASP.
ar validao de en
a a validao do la
dados entre o clien
resposta do aplica

vas ou
ma
erificar se
intervalo
precisa
ntrada e
NET.
trada
ado do
nte e o
ativo Web.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-3
Existem mais opes para proteger um aplicativo do que a validao de entrada do
usurio e, com relao validao de entrada, h muitos outros tipos de entrada
que devem ser validados. Seu Web Form deve validar a entrada a partir de um
servio externo (como um servio Web) ou de arquivos fornecidos externamente.
Tambm existem preocupaes sobre o modo como a validao de entrada
executada nas diferentes camadas de um aplicativo. Esse mdulo aborda entrada do
usurio, o que geralmente significa a Camada da Interface do Usurio, mas a BLL
(camada de lgica comercial) e a DAL (camada de acesso a dados) tambm requerem
validao de entrada. Essas camadas so usadas por outras partes ou camadas de um
aplicativo. Ou seja, a validao de entrada j pode ter sido executada, mas, como
desenvolvedor, voc no pode confiar nisso; deve verificar se a entrada est validada
onde quer que ela seja aceita.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-4 Introduo
Lio 1
Viso ge
Voc po
verificar
Web Fo
de entra
entrada
executa
Se voc
danos n
corrup
para ver
Objetiv
Depois
Des
Des
aoDesenvolvimentonaW
eral da va
ode executar valid
r se o usurio pre
orm, antes que a s
ada do lado do cl
a seja enviada par
ar verificaes de
no validar a ent
no aplicativo, man
o do banco de d
rificar erros e, se
vos da lio
de concluir esta l
screver a valida
screver a valida
WebcomoMicrosoftV
lidao d
dao de entrada
eencheu os dados
solicitao seja pr
liente, possvel
ra o servidor. Usa
validao no serv
trada do usurio,
nipulao mal-int
dados. A valida
necessrio, exibir
lio, voc ser ca
o de entrada.
o de entrada do
VisualStudio2010
de entrad
a do lado do clien
s vlidos nos con
rocessada no serv
filtrar entradas in
ando validao do
vidor e no cliente
, isso poder leva
tencionada do ba
o de entrada um
r mensagens para
apaz de:
lado do cliente e
a do usu
nte ou do servidor
ntroles de entrada
vidor. Usando va
ncorretas antes qu
o servidor, poss
e.
ar a falhas de apli
anco de dados ou
m mecanismo av
a o usurio.
do servidor.
rio

r para
a em um
alidao
ue a
svel
cativo,
u at
vanado
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

O que
Pontos
A valida
um site
probabi
com ent
abrange
utiliza

e validao
s principais
ao de entrada p
reduzindo o tem
ilidade de retorno
trada do usurio.
entes, a validao
o de um site e a
o de entrada
pode ajudar a apr
mpo de espera por
os incorretos e tr
. Quando combin
o de entrada pode
percepo do cli

Valida
?
rimorar a experin
r mensagens de e
avamento de site
nada com mensag
e ajudar a melhor
iente sobre a qual
odeentradadousuri
ncia de um usur
erro e diminuindo
es por causa de pr
gens de erro teis
rar a capacidade d
lidade geral do si
o 6-5

rio com
o a
roblemas
s e
de
ite.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-6 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
A validao de entrada verifica se o usurio preencheu corretamente um controle
de entrada antes do processamento da solicitao no servidor. A validao de
entrada em uma pgina da Web age como filtro de dados antes que a lgica do
servidor ou da pgina seja processada. No ASP.NET, a validao de entrada
sempre executada no servidor, mas tambm pode ser realizada no lado do cliente
caso o navegador do cliente oferea suporte a validao. Caso haja suporte
validao do lado do cliente no navegador e ela esteja habilitada, os mecanismos
de validao de entrada criados executaro verificao de erros no cliente antes de
postar os dados no servidor. Os usurios recebem comentrios imediatos sobre a
validade dos dados inseridos em relao s regras criadas. Por motivo de segurana,
qualquer validao de entrada executada no lado do cliente tambm repetida no
servidor. A validao de entrada verifica valores de controle, impede o processamento
da pgina quando so localizados dados invlidos e ajuda a evitar a incluso de
cdigo mal-intencionado.
Verificao de valores de controle
Voc pode usar a validao de entrada para comparar a entrada do usurio com
um formato de entrada predeterminado. Esse tipo de formato pode incluir o
nmero de caracteres, o uso de caracteres alfanumricos, o intervalo de valores,
uma string especfica ou uma frmula matemtica. Por exemplo,
um controle de entrada do usurio que solicite um nmero de telefone de usurio
pode ter um controle de validao de entrada anexado que verifica se os usurios
digitaram somente nmeros em um determinado formato de nmero de telefone.
A insero de letras ou de menos nmeros faz com que o controle de validao de
entrada exiba uma mensagem de erro e exige que os usurios tornem a digitar os
dados.
Preveno do processamento da pgina
O servidor processa a entrada do usurio que corresponde ao formato predeterminado.
Entradas do usurio no correspondentes ao formato predeterminado disparam uma
mensagem de erro e interrompem o processamento do servidor. O processamento da
pgina ficar bloqueado at que o usurio corrija a entrada de acordo com o formato
esperado e reenvie a pgina para processamento. O processamento no servidor no
ser bloqueado automaticamente caso ocorra um erro de validao de entrada. O
evento Page Load ser disparado mesmo que o script tenha sido desabilitado no
cliente e a pgina seja enviada para o servidor. Neste estgio, a validao ainda no
ocorreu, mas possvel verificar se uma pgina vlida o que significa que toda a
entrada vlida usando o mtodo Page.Validate.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-7
Proteo contra falsificao e cdigo mal-intencionado
Ao executar todos os controles de validao no servidor sem levar em conta a
validao do lado do cliente, o ASP.NET protege contra falsificao e cdigo
mal-intencionado.
Falsificao. Ocorre quando os usurios modificam a pgina HTML que
foi enviada para eles e retornam valores que falsificam dados vlidos ou
a aprovao de uma verificao de autorizao. Entretanto, a validao
suscetvel a falsificao somente do lado do cliente, pois os usurios podem
desativar a execuo do script do lado do cliente alterando opes do
navegador ou ento no executar o cdigo de validao do lado do cliente, o
que cria um falso nvel de autorizao.

Com o ASP.NET, a validao de entrada do lado do cliente sempre repetida no
servidor, onde os usurios no podem modificar nem desabilitar controles de
validao.
Cdigo mal-intencionado. Se for permitido que os usurios adicionem texto
ilimitado a uma pgina da Web por meio de controles de entrada do usurio que
no tenham validao de entrada, eles podero inserir cdigo mal-intencionado.
Quando o usurio enviar a prxima solicitao para o servidor, esse cdigo
poder perturbar o servidor Web e qualquer aplicativo conectado.
Pergunta: Como os controles de validao do ASP.NET protegem contra ataques
de falsificao e cdigo mal-intencionado?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-8 Introduo
Valida
Pontos
A valida
Embora
lado do
no ASP.
do lado
do servi
Framew
mesmo
criar pe
Valida
A valida
conferin
de erros
erros sej
viagem
aoDesenvolvimentonaW
ao do lado
s principais
ao de entrada p
a a validao do s
cliente uma op
.NET tm suporte
do cliente usa sc
idor pode ser esc
work. Tanto a vali
modelo de progr
quenas diferena
o do lado do
ao do lado do cl
ndo a entrada do u
s durante a inser
jam detectados n
de ida e volta que
WebcomoMicrosoftV
o do cliente e
pode ocorrer tant
servidor seja semp
po com alguns
e tanto do lado d
cripts DHTML (H
crita em qualquer
idao do lado do
ramao, embora
as nas funes de
o cliente
liente melhora a c
usurio quando e
o dos dados, a v
no cliente antes qu
e necessria par
VisualStudio2010
e do servido
o do lado do clie
pre exigida pelo A
navegadores. Os
do cliente como n
HTML dinmico)
r linguagem basea
o cliente como a
a variaes entre a
e validao.
capacidade de util
ele insere os dado
validao do lado
ue o Web Form se
a validao do ser
or
nte como no serv
ASP.NET, a valid
controles de vali
no servidor. A vali
e JavaScript. A va
ada no Microsoft
do servidor usam
as linguagens po
lizao do Web F
os. Ao verificar a e
do cliente permit
eja enviado. Isso e
rvidor.

vidor.
dao do
idao
idao
alidao
t .NET
m o
ssam
Form
existncia
te que os
evita a
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-9
Pode ser demorado escrever vrias verses do cdigo de validao para dar suporte
ao servidor e aos diversos tipos de navegador. Os controles de validao do ASP.NET
eliminam esse problema, porque a lgica de validao encapsulada nos controles.
Os controles criam cdigo especfico de navegador para que usurios com suporte a
script do lado do cliente tenham validao de entrada do lado do cliente. Navegadores
sem suporte a script no recebero scripts de validao do lado do cliente.
Em verses de navegador que do suporte validao de entrada, como o Windows
Internet Explorer 8, a validao do lado do cliente ocorre quando os usurios clicam
no boto Submit. No ser executado postback da pgina no servidor enquanto a
validao do lado do cliente no for concluda. Nos navegadores modernos, quando o
usurio vai de um controle de entrada para o outro, a validao do lado do cliente
acontece para o controle de entrada concludo. Esse recurso de validao fornece aos
usurios comentrios imediatos sobre a entrada inserida por eles.
Validao do servidor
Todos os controles de validao de entrada so executados no servidor. As
validaes do lado do cliente so repetidas no servidor durante a execuo de
postback da pgina no servidor. Essa repetio ajuda a evitar tentativas de
falsificao por usurios que tentam ignorar o script do lado do cliente e enviar
entrada invlida.
Voc pode escrever controles de validao do lado do cliente baseados no
Microsoft .NET. Alm de validar o formato da entrada, voc pode usar os controles
de validao do lado do cliente para comparar a entrada do usurio com os dados
armazenados. Essa capacidade de comparao permite a validao de muitos valores,
como nmeros de carto de crdito vlidos, senhas armazenadas e restries
geogrficas relacionadas a legislao local e impostos.
Pergunta: Quando voc postar uma pgina no servidor, mesmo com erros?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-10 Introduo
Lio 2
Controle
Validar
cada con
cdigo d
Em segu
equivale
O ASP.N
com fac
tanto do
Objetiv
Depois
Des
Des
Des
aoDesenvolvimentonaW
es de valid
entrada do usur
ntrole de entrada
de validao refere
uida, se voc quise
ente para cada nav
NET e o Microsof
cilidade oferecend
o servidor como d
vos da lio
de concluir esta l
screver os vrios
screver o controle
screver o controle
WebcomoMicrosoftV
dao do
rio costumava ser
a, voc precisava d
ente ao servidor n
esse executar valid
vegador esperado e
ft Visual Studio
do controles de v
do lado do client
lio, voc ser ca
controles de valid
e RegularExpress
e CustomValidato
VisualStudio2010
o ASP.NET
um processo dem
determinar os requ
na sua linguagem d
dao do lado do
em uma linguagem
2010 ajudam a v
validao de entra
te.
apaz de:
dao do ASP.NE
sionValidator.
or.
T
morado e entedian
uisitos e depois e
de programao p
cliente, escrevia a
m de script, como J
validar entrada do
ada que fornecem
ET.

nte. Para
escrever o
preferida.
validao
JavaScript.
o usurio
m cdigo
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-11
Combinar controles de validao.
Adicionar controles de validao a um Web Form.
Posicionar e configurar controles de validao em um Web Form.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-12 Introduo
Viso
Pontos
Ao criar
mais im
ASP.NE
erros co
para o u

aoDesenvolvimentonaW
geral de con
s principais
r Web Forms ASP
mportantes a cap
T fornece um con
om facilidade e efi
usurio, se necess
WebcomoMicrosoftV
ntroles de va
P.NET que requere
pacidade de verific
njunto de controle
icincia. Alm diss
rio.

VisualStudio2010
alidao do A
em entrada do us
car se a entrada d
es de validao qu
so, possvel exib
ASP.NET
surio, um dos asp
o usurio vlida
ue ajudam a verif
bir mensagens de

pectos
a. O
ficar
e erro
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-13
Controles de validao
A tabela a seguir lista os controles de validao disponveis no ASP.NET.
Controle de validao Funo
RequiredFieldValidator Verifica se um valor foi inserido em um controle.
o nico controle de validao que requer um valor.
Todos os outros controles de validao de entrada
aceitaro um controle vazio como resposta vlida.
CompareValidator Compara o valor de um controle de entrada com
outro controle de entrada, um valor fixo, um tipo de
dado ou um arquivo. Por exemplo, voc pode usar
esse controle para executar verificao de senha
comparando o valor de um controle com outro.
RegularExpressionValidator Verifica se a entrada corresponde a um padro que
tenha sido definido por uma expresso regular. Este
controle de validao permite verificar sequncias
previsveis de caracteres, como nmeros do CIC,
endereos de email, nmeros de telefone e CEP. O
Visual Studio 2010 fornece padres predefinidos
para expresses comuns como nmeros de telefone
e endereos de email.
RangeValidator Verifica se a entrada do usurio est entre dois
valores. Por exemplo, voc pode usar este controle
para verificar se a entrada do usurio corresponde
faixa etria esperada. Ele semelhante ao controle
CompareValidator.
CustomValidator Permite escrever o cdigo para criar a expresso de
validao. Por exemplo, voc pode usar este
controle para verificar se o valor de entrada um
nmero primo ou se corresponde a um valor em
um banco de dados.
ValidationSummary Exibe um resumo de todos os erros de validao
para todos os controles de validao na pgina.
Este controle geralmente colocado ao lado ao
boto Submit para fornecer comentrios imediatos
sobre o status geral de entrada da pgina.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-14 Introduo
Contr
Pontos
Os cont
RangeV
de entra
controle
O cont
Voc po
fornecer
vlida n
um dad
O contr
entrada
voc us
usurio
como u
aoDesenvolvimentonaW
roles de valid
s principais
troles de validao
Validator. Eles real
ada e expem a pr
e de entrada que d
trole RequiredF
ode usar o contro
r entrada em um
neste controle de
do invlidas para
role RequiredFie
a que sejam neces
aria um controle
e senha em uma
ma oferta para se
WebcomoMicrosoftV
dao bsico
o bsicos so Req
lizam a validao e
ropriedade pblic
dever ser validad
FieldValidator
ole RequiredField
controle de entr
validao. Nenhu
este controle.
ldValidator gera
ssrios para concl
RequiredFieldV
a pgina de entrad
e tornar visitante
VisualStudio2010
os do ASP.NE
quiredFieldValid
em valores fixos o
ca ControlToVal
do.
dValidator para f
ada. Qualquer ca
uma entrada ou e
almente usado a
luir um processo
Validator para os
da, mas no para
de um site prefer
ET
ator, CompareVa
u em um segundo
lidate, que identif
forar um usurio
aractere uma res
espaos em branc
apenas em contro
o solicitado. Por e
campos de nome
a informaes inci
rido.

alidator e
o controle
fica o
o a
sposta
co so
oles de
exemplo,
e de
identais,
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-15
Uma opo para o controle RequiredFieldValidator ter um valor inicial que no
seja um espao nem uma string vazia. Convm ter um valor inicial quando h um
valor padro para um controle de entrada e voc deseja que o usurio insira um
valor diferente. Para exigir uma alterao no valor inicial para
o controle de entrada associado, defina a propriedade InitialValue de forma a
corresponder ao valor inicial do controle de entrada.
No exemplo de marcao a seguir, um controle RequiredFieldValidator verifica se
o controle TextBox chamado NameTextBox no contm o valor Enter your name
quando validado. A comparao diferencia maisculas de minsculas.
<asp:TextBox id="NameTextBox" runat="server" Text="Enter your name" />

<asp:RequiredFieldValidator id="NameRequiredFieldValidator"
runat="server" ControlToValidate="NameTextBox" InitialValue="Enter
your name" ErrorMessage="You must enter your name" Text="*" />

possvel deixar em branco um controle validado por um RequiredFieldValidator
ou deix-lo com seu valor inicial ou padro no lado do cliente, enquanto se est
trabalhando na pgina. Alm disso, os comentrios imediatos sobre verificao de
erros no sero exibidos quando o usurio preencher o controle de entrada e passar
para o prximo. Entretanto, isso muda quando voc insere um valor na entrada. Se
voc limpar o controle de entrada ou redefini-lo para o valor inicial, a mensagem de
erro ser exibida imediatamente quando o usurio concluir entrada de dados no
controle.
O controle CompareValidator
Voc pode usar o controle CompareValidator para testar a entrada do usurio em
relao a um valor especfico ou a um segundo controle de entrada. O controle
CompareValidator geralmente usado quando o risco de erros tipogrficos alto,
como campos de senha que ocultam a entrada real do usurio.
O controle CompareValidator avalia um controle de entrada vazio como vlido.
Portanto, se voc precisa garantir um valor, combine os controles CompareValidator
e RequiredFieldValidator. O controle CompareValidator usa as seguintes propriedades
comuns:
ValueToCompare. Faz referncia a um valor constante e usada para realizar
a validao em valores no alterados, como um limite de idade mnimo. Voc
pode usar o controle CustomValidator para fazer a comparao com valores
que provavelmente sero alterados.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-16 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
ControlToCompare. Identifica outro controle para fazer a comparao
com a entrada do usurio. Voc pode usar esta propriedade para verificar
erros tipogrficos fazendo com que o usurio insira os mesmos dados em
dois campos adjacentes.
Se voc definir as duas propriedades (ValueToCompare e ControlToCompare),
a precedncia ser da propriedade ControlToCompare.
Type. Especifica o tipo de dados. Voc pode usar esta propriedade para fazer a
comparao do valor em um controle de entrada com um destes tipos de
dados do .NET Framework: System.String, System.Int32, System.Double,
System.DateTime e System.Decimal. Para isso, basta especificar o valor
correspondente a partir de um enum ValidationDataType: String, Integer,
Double, Date ou Currency. Observe que, para datas, apenas a parte relativa
data pode ser especificada, e no a de hora.
Operator. Especifica o operador de comparao a ser utilizado. Os operadores
so especificados com o nome dos operadores de comparao, como: Equal,
NotEqual, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual, e
DataTypeCheck.

No exemplo de cdigo a seguir, um controle CompareValidator verifica se os valores
dos dois controles TextBox (PasswordTextBox e PasswordConfirmationTextBox)
correspondem.
<asp:TextBox id="PasswordTextBox" runat="server" Text="Enter your
password" TextMode="Password" />
<br />
<asp:TextBox id="PasswordConfirmationTextBox" runat="server"
Text="Confirm your password" TextMode="Password" />

<asp:CompareValidator id="PasswordCompareValidator" runat="server"
ErrorMessage="The entered passwords do not match."
ControlToCompare="PasswordTextBox"
ControlToValidate="PasswordConfirmationTextBox" Text="*" />

O controle RangeValidator
Voc pode usar o controle RangeValidator para testar se um valor de entrada est
dentro de um determinado intervalo. O valor mensurado inclusivo e tanto o valor
mnimo como o mximo so considerados vlidos. O controle RangeValidator
geralmente usado para verificar se o valor inserido (por exemplo, idade, altura,
salrio ou nmero de filhos) corresponde ao intervalo esperado.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-17
O controle RangeValidator avaliar um controle de entrada vazio como vlido e,
portanto, voc dever combin-lo com o controle RequiredFieldValidator caso
precise garantir um valor. O controle RangeValidator tem as seguintes propriedades:
MinimumValue. Especifica o valor mnimo do intervalo vlido para variveis
numricas ou o comprimento mnimo de caracteres da string para variveis
string.
MaximumValue. Essa propriedade especifica o valor mximo do intervalo
vlido para variveis numricas ou o comprimento mximo de caracteres da
string para variveis string.
Type. Especifica o tipo de dados dos valores para fazer a comparao com um
destes tipos de dados do .NET Framework: System.String, System.Int32,
System.Double, System.DateTime e System.Decimal. Para isso, basta especificar
o valor correspondente a partir do enumerador ValidationDataType: String,
Integer, Double, Date ou Currency. Observe que, para datas, apenas a parte
relativa data pode ser especificada, e no a de hora. Os valores a comparar so
convertidos nesse tipo de dados antes que qualquer comparao seja realizada.

No exemplo de cdigo a seguir, um controle RangeValidator verifica se o TextBox
chamado AgeTextBox tem um valor no intervalo de 18 a 50.
<asp:TextBox id="AgeTextBox" runat="server" Text="Enter your age" />
<asp:RangeValidator id="AgeRangeValidator" runat="server"
ControlToValidate="AgeTextBox" Type="Integer" MinimumValue="18"
MaximumValue="50" ErrorMessage="Applicants must be between 18 and 50
inclusive." Text="*" />

Pergunta: Que controle de servidor voc usar para executar validao de tipo de
dados?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-18 Introduo
Contr
Pontos
Voc po
de um u
CEP, UR
caracter
controle
Na janel
propried
padres
Editor.
nmero
um que
O padr
padro p
criar seu
aoDesenvolvimentonaW
role RegularE
s principais
ode usar o contro
usurio correspon
RL ou endereo d
res, dgitos e smb
e.
la Propriedades, q
dade ValidationE
s predefinidos de
Esses padres inc
s de CIC, CEPs e c
seja semelhante
o que voc selecio
personalizado. Es
u prprio padro
WebcomoMicrosoftV
ExpressionVa
ole RegularExpre
nde a um padro
de email. Esse con
bolos inseridos p
quando voc clica
Expression, o Vis
expresso regula
cluem endereos
cdigos postais. Pa
s funes do pad
onou primeiro fica
sse recurso usado
editando o que s
VisualStudio2010
alidator
essionValidator p
o predefinido, com
ntrole de valida
pelo usurio com
a no boto de reti
ual Studio 2010 f
r na caixa de dil
de email e URLs,
ara criar um novo p
dro desejado e e
ar disponvel par
o pela ltima vez s
abe que funciona
para verificar se a
mo nmero de tel
o compara o pad
um ou mais padr
icncias () refere
fornece um conju
ogo Regular Exp
nmeros de telef
padro, primeiro s
escolha o modelo
ra edio como se
serve de base para
ar.

a entrada
lefone,
dro de
res no
ente
unto de
ression
fone,
selecione
Custom.
eu prprio
a voc
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-19
Caracteres de expresso regular
A tabela a seguir descreve um conjunto comum de caracteres de controle que voc
pode usar para criar suas prprias expresses regulares personalizadas, seja no
lado do cliente ou do servidor.
Caractere Definio
a Corresponde letra a minscula. o caso para todos os caracteres
do alfabeto. Qualquer letra que no seja precedida por uma barra
invertida (\) ou faa parte de um intervalo corresponde a seu valor
literal.
1 Corresponde ao nmero ou dgito 1. o caso para todos os caracteres
numricos. Qualquer nmero ou dgito que no seja precedido por
uma barra invertida (\) ou faa parte de um intervalo corresponde a
seu valor literal.
? Corresponde ao 0 ou 1 literal.
* 0 a n literais.
+ Literais 1 a n (pelo menos 1).
[0-n] Intervalo de valores inteiros de 0 a n.
{n} O comprimento deve ser de n caracteres.
| Separa vrios padres vlidos.
\ um caractere de comando.
\w Este caractere de comando corresponde a qualquer caractere.
\W Esse caractere de comando corresponde a qualquer tipo no caractere.
\d Esse caractere de comando corresponde a qualquer dgito decimal.
\D Esse caractere de comando corresponde a qualquer caractere que no
seja um dgito.
\. Este caractere de comando deve ter ponto.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-20 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exemplo de expresso simples
O exemplo de marcao a seguir demonstra como voc pode usar um controle
RegularExpressionValidator para verificar se um usurio inseriu um endereo
de email vlido.
<asp:TextBox id="EmailTextBox" runat="server" />

<asp:RegularExpressionValidator id="EmailRegexValidator"
runat="server" ControlToValidate="EmailTextBox" ErrorMessage="Use the
format username@organization.xxx" ValidationExpression="\w+@\w+\.\w+"
Text="*" />

Quando renderizada em um navegador, a marcao tem a seguinte aparncia:
...
<script type="text/javascript">
//<![CDATA[
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() ==
false) return false;
return true;
}
//]]>
</script>

...
</div>
<div>
<input name="EmailTextBox" type="text" id="EmailTextBox" />
<span id="EmailRegexValidator"
style="visibility:hidden;">*</span>
</div>

<script type="text/javascript">
//<![CDATA[
var Page_Validators = new
Array(document.getElementById("EmailRegexValidator"));
//]]>
</script>
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-21

<script type="text/javascript">
//<![CDATA[
var EmailRegexValidator = document.all ?
document.all["EmailRegexValidator"] :
document.getElementById("EmailRegexValidator");
EmailRegexValidator.controltovalidate = "EmailTextBox";
EmailRegexValidator.errormessage = "Use the format
username@organization.xxx";
EmailRegexValidator.evaluationfunction =
"RegularExpressionValidatorEvaluateIsValid";
EmailRegexValidator.validationexpression = "\\w+@\\w+\\.\\w+";
//]]>
</script>


<script type="text/javascript">
//<![CDATA[

var Page_ValidationActive = false;
if (typeof(ValidatorOnLoad) == "function") {
ValidatorOnLoad();
}

function ValidatorOnSubmit() {
if (Page_ValidationActive) {
return ValidatorCommonOnSubmit();
}
else {
return true;
}
}
//]]>
</script>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-22 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
A tabela a seguir descreve o padro especfico verificado pelo controle
RegularExpressionValidator no exemplo anterior.
Caractere Definio
\w+ Uma string de pelo menos um caractere.
@ Uma arroba (@).
\w+ Uma string de pelo menos um caractere.
\. Um ponto.
\w+ Uma string de pelo menos um caractere.

Um endereo de email vlido para este controle : nome@example.com.
Um endereo de email invlido para esse controle : someone.com or someone@.com.
Exemplo de expresso complexa
A expresso regular de email do Visual Studio 2010 padro mais complexa que o
exemplo anterior. O padro de email tambm limita a separao de termos antes e
depois da arroba (@) em xx.xx ou xx-xx.
Veja a seguir a expresso regular padro para endereos de email.
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

A tabela a seguir descreve o padro de endereos de email no exemplo de cdigo
anterior.
Caractere Definio
\w+ Corresponde a uma string de pelo menos um caractere.
([-+.]\w+)* Corresponde a um ou mais hfens ou a um ponto (.), seguido por uma
string de pelo menos um caractere.
@ Corresponde literal arroba.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-23
(continuao)
Caractere Definio
\w+ Corresponde a uma string de pelo menos um caractere.
([-.]\w+)* Corresponde a um hfen ou um ponto final (.) e a uma string de pelo
menos um caractere.
\. Corresponde a um ponto (.).
\w+ Corresponde a uma string de pelo menos um caractere.
([-.]\w+)* Corresponde a um hfen ou um ponto final (.) e a uma string de pelo
menos um caractere.

Um endereo de email vlido para este controle : al-guem@exemplo.empresa.com.
Um endereo de email invlido para esse controle : al,guem@exemplo.empresa.com.
O controle RegularExpressionValidator avaliar um controle de entrada vazio
como vlido. Portanto, se voc precisa garantir um valor, combine os controles
RegularExpressionValidator e RequiredFieldValidator.
Pergunta: Para que finalidade de validao voc pode usar o controle
RegularExpressionValidator?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-24 Introduo
Contr
Pontos
Voc po
persona
frmula
costuma
usurio
Valida
O contr
no lado
outros c
cliente e
Custom
invalid

aoDesenvolvimentonaW
role CustomV
s principais
ode usar o contro
alizada e verificar
a ou uma entrada
a ser usado para
comparada com
o do lado do
role CustomValid
do cliente caso o
controles de valid
e do servidor, p
mValidator. Voc
usando a proprie
WebcomoMicrosoftV
Validator
ole CustomValid
r a entrada do usu
a de uma segunda
tarefas como veri
m uma senha arm
o cliente e do se
dator faz a valida
o navegador ofere
dao em que o A
preciso escrever o
pode definir o co
edade IsValid do

VisualStudio2010
ator para aplicar
urio em relao
a origem. O contr
ificao de senha
mazenada em um
ervidor
ao no servidor,
ea suporte a vali
ASP.NET cria o c
o cdigo de valida
ontrole CustomV
o parmetro args
lgica de valida
a uma varivel, u
role CustomVali
a, em que a entrad
m banco de dados
mas tambm pod
idao. Ao contr
digo de valida
ao para o contr
Validator como v
.

o
uma
dator
da do
s.
de faz-la
rio dos
o do
role
valid ou
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-25
O controle CustomValidator possui os dois membros a seguir que so especficos
para o controle:
ClientValidationFunction. Esta propriedade o nome do script que o
controle CustomValidator dever executar no lado do cliente. Como voc
escreve seu prprio script de cliente, importante verificar a consistncia
lgica em relao ao cdigo do servidor.
OnServerValidate. o nome do mtodo que CustomValidator dever
executar no servidor quando o evento ServerValidate for disparado. Como
voc escreve seu prprio cdigo de servidor, importante verificar a consistncia
lgica com o script do lado do cliente.

O exemplo de cdigo a seguir demonstra os manipuladores do servidor e do lado
do cliente referentes a um controle CustomValidator e verifica se o nmero de
entrada para o controle par.
<asp:CustomValidator ID="NumberCustomValidator" runat="server"
ClientValidationFunction="ClientValidationHandler"
OnServerValidate="ServerValidationHandler"
ControlToValidate="NumberTextBox" ErrorMessage="The number must be
even" />
Manipulador do lado do cliente
O cdigo JavaScript a seguir foi projetado para ser executado no Internet Explorer 6
ou posterior e verifica se um nmero par.
<script type="text/javascript">
function ClientValidationHandler(source, args)
{
args.IsValid = (args.Value % 2 == 0)
}
</script>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-26 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Manipulador do servidor
Os exemplos de cdigo a seguir foram projetados para serem executados no
servidor e verificam se um nmero par. Coloque esse cdigo no Web Form
em um elemento script ou na classe derivada Page referente ao Web Form.
[Visual Basic]
Protected Sub ServerValidationHandler(ByVal source as Object,
ByVal args as ServerValidateEventArgs)

args.IsValid = (args.Value Mod 2 = 0)
End Sub

[Visual C#]
protected void ServerValidationHandler(object source,
ServerValidateEventArgs args)
{
args.IsValid = (args.Value % 2 == 0)
}

Observe que o valor do controle de entrada pode ser acessado tanto no lado do
cliente como no servidor por meio da propriedade Value do parmetro args.
A definio da propriedade ControlToValidate no necessria para o controle
CustomValidator. Entretanto, se voc no especificar um valor para a propriedade
ControlToValidate, uma string vazia ser passada para as funes de validao do
lado do cliente e do servidor.
Pergunta: Quando voc poderia usar o controle CustomValidator?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Comb
Pontos
s vezes
para ver
comu
controle
Por exem
precisa
e deve s
armazen
Require
vrios p
banco d

binao de c
s principais
s, uma nica fun
rificar se o usuri
um combinar o co
es de validao, m
mplo, um control
estar em conform
ser verificado em r
nados. Nesse cen
edFieldValidator
padres e vincular
de dados.
ontroles de v
o de validao
io inseriu dados c
ontrole Required
mas existem outr
le TextBox de n
midade com um do
relao a um banc
rio, voc deve vin
r, vincular um con
r um controle Cus

Valida
validao
ou um nico con
corretamente em
dFieldValidator c
os cenrios.
mero de telefone
os diversos padr
co de dados de n
ncular o controle
ntrole RegularExp
stomValidator a
odeentradadousuri
ntrole no sufici
um controle de e
com um dos outro
pode exigir uma
es de nmero de
meros de telefon
TextBox a um co
pressionValidato
acesso do servido
o 6-27

iente
entrada.
os
entrada,
e telefone
ne
ontrole
or a
or a um
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-28 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Vrios controles de validao em um nico controle de entrada
possvel associar vrios controles de validao a um nico controle de entrada.
Essa associao muitos-para-um dos controles de validao permite verificar mais
de um requisito de validao na entrada do usurio.
Os exemplos de cdigo a seguir exibem um nico controle de entrada para um
nmero de telefone. Um controle RequiredFieldValidator verifica o contedo no
controle de entrada, um controle RegularExpressionValidator verifica o formato
do controle de entrada e um controle CustomValidator compara a entrada com
um banco de dados de nmeros de telefone.
Controle Input. O cdigo a seguir define o controle TextBox a ser validado.
<asp:TextBox id="PhoneTextBox" runat="server" />

Controle RequiredFieldValidator. O cdigo a seguir define o controle
RequiredFieldValidator, que verifica se h uma entrada em PhoneTextBox.
<asp:RequiredFieldValidator id="PhoneRequiredFieldValidator"
runat="server" ErrorMessage="The telephone number is required."
ControlToValidate="PhoneTextBox" Text="*" />

Controle RegularExpressionValidator. O cdigo a seguir define o controle
RegularExpressionValidator, que verifica se a entrada em PhoneTextBox
corresponde ao padro de nmero de telefone nos Estados Unidos.
<asp:RegularExpressionValidator
id="PhoneRegularExpressionValidator" runat="server"
ErrorMessage="The telephone number is not formatted as a correct
US phone number." ControlToValidate="PhoneTextBox"
ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}"
Text="*" />

Controle CustomValidator. O cdigo a seguir define o controle CustomValidator,
que chama o mtodo PhoneServerValidationHandler, responsvel por comparar
a entrada em PhoneTextBox com um banco de dados de nmeros de telefone.
<asp:CustomValidator id="PhoneCustomValidator"
OnServerValidate="PhoneServerValidationHandler" runat="server"
ErrorMessage="This telephone number is not recognized"
ControlToValidate="PhoneTextBox" Text="*" />
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Demo
Web
Pontos
Nesta d
Formul
Etapas
1. Fa
2. Abr

3. Abr
D:\

onstrao: In
Form
s principais
demonstrao, voc
rio Web ASP.NE
s da demonstra
a logon em 1056
ra o Visual Studio
No menu Inicia
clique em Micro
Studio 2010.
ra um site existen
\Demofiles\M6\C
No menu File d
Open Web Site
ncluso de co
c ver como adi
ET.
ao
60A-GEN-DEV co
o 2010.
ar de 10560A-GE
osoft Visual Stud
nte em D:\Demof
CS\Validation.
da janela Start Pag
e.
Valida
ontroles de v
icionar controles
omo Aluno, com
EN-DEV, clique em
dio 2010 e clique
files\M6\VB\Val
ge Microsoft Vi
odeentradadousuri
validao em
de validao a um
a senha Pa$$w0
m Todos os Prog
e em Microsoft V
idation ou em
isual Studio, cliqu
o 6-29
m um

m
0rd.
gramas,
Visual
ue em
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-30 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Na caixa de dilogo Open Web Site, na caixa Folder, digite D:\Demofiles\
M6\VB\Validation ou D:\Demofiles\M6\CS\Validation e clique em Open.
4. Abra o Web Form Order no modo de exibio Design.
No Solution Explorer, clique com o boto direito do mouse em
Order.aspx e, em seguida, clique em View Designer.
5. Adicione um controle RequiredFieldValidator chamado
DueDateRequiredFieldValidator, referente ao controle DueDateTextBox,
com um asterisco (*) como o texto e The Due Date must be filled in. como a
mensagem de erro. A exibio deve ser dinmica.
<asp:RequiredFieldValidator ID="DueDateRequiredFieldValidator"
ControlToValidate="DueDateTextBox" runat="server"
ErrorMessage="The Due Date must be filled in."
Text="*"></asp:RequiredFieldValidator>
Na janela Order.aspx, coloque o cursor ao lado do controle TextBox
Due Date.
Na Toolbox, expanda Validation e clique duas vezes em
RequiredFieldValidator.
Na janela Properties, na caixa (ID), digite
DueDateRequiredFieldValidator. Na lista ControlToValidate, clique em
DueDateTextBox e, na lista Display, clique em Dynamic. Na caixa Text,
digite *. Na caixa ErrorMessage, digite The Due Date must be filled in. e
pressione ENTER.
6. Adicione um controle RangeValidator chamado DueDateRangeValidator
referente ao controle DueDateTextBox, com um asterisco (*) como o texto
e The Due Date must be valid. como a mensagem de erro. O validador deve
aceitar apenas datas. A data de hoje deve ser definida como o valor mnimo,
e a data de hoje mais 30 dias deve ser definida como o valor mximo, ambas
de forma programtica.
<asp:RangeValidator ID="DueDateRangeValidator"
ControlToValidate="DueDateTextBox" runat="server"
ErrorMessage="The Due Date must be valid."
Text="*"></asp:RangeValidator >
Na janela Order.aspx, coloque o cursor ao lado do controle
DueDateRequiredFieldValidator.
Em Toolbox, expanda Validation e clique duas vezes em RangeValidator.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-31
Na janela Properties, na caixa (ID), digite DueDateRangeValidator. Na
lista ControlToValidate, clique em DueDateTextBox e, na lista Type,
clique em Date. Na caixa Text, digite *. Na caixa ErrorMessage, digite
The Due Date must be valid. e pressione ENTER.
No Solution Explorer, clique com o boto direito do mouse em
Order.aspx e, em seguida, clique em View Code.
Na janela Order.aspx.vb ou Order.aspx.cs, no manipulador de eventos
Page_Load, acrescente o cdigo a seguir.
[Visual Basic]
DueDateRangeValidator.MinimumValue =
DateTime.Now.ToShortDateString()
DueDateRangeValidator.MaximumValue = (DateTime.Now +
New TimeSpan(30, 0, 0, 0)).ToShortDateString()

[Visual C#]
DueDateRangeValidator.MinimumValue =
DateTime.Now.ToShortDateString();
DueDateRangeValidator.MaximumValue = (DateTime.Now +
new TimeSpan(30, 0, 0, 0)).ToShortDateString();
Na janela Order.aspx.vb ou Order.aspx.cs, clique no boto Close.
Na caixa de mensagem do Microsoft Visual Studio, clique em Yes.
7. Adicione um controle RegularExpressionValidator chamado
CustomerEmailAddressRegularExpressionValidator referente ao controle
CustomerEmailAddressTextBox, com um asterisco (*) como a mensagem de
erro e \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* como a expresso de
validao.
<asp:RegularExpressionValidator
ID="CustomerEmailAddressRegularExpressionValidator"
ControlToValidate="CustomerEmailAddressTextBox" runat="server"
ErrorMessage="*" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\
w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
Na janela Order.aspx, coloque o cursor ao lado do controle TextBox
Email Address.
Em Toolbox, expanda Validation e clique duas vezes em
RegularExpressionValidator.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-32 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Na janela Properties, na caixa (ID), digite
CustomerEmailAddressRegularExpressionValidator.
Na lista ControlToValidate, clique em CustomerEmailAddressTextBox
e, na caixa ErrorMessage, digite The Email Address must be valid.
Na caixa Text, digite *. Na caixa ValidationExpression, digite
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* e pressione ENTER.
8. Adicione um controle ValidationSummary chamado
OrderValidationSummary, abaixo dos dois controles Button.
<asp:ValidationSummary ID="OrderValidationSummary"
runat="server"></asp:ValidationSummary>
Na janela Order.aspx, coloque o cursor ao lado do controle TextBox
OrderCancelButton e pressione ENTER.
Em Toolbox, expanda Validation e clique duas vezes em
ValidationSummary.
Na janela Properties, na caixa (ID), digite OrderValidationSummary.
9. Salve o Formulrio Web Order e exiba as alteraes no navegador.
Na janela Validation Microsoft Visual Studio, no menu File, clique em
Save Order.aspx.
No Solution Explorer, clique com o boto direito do mouse em
Order.aspx e, em seguida, clique em View in Browser.

Observao: observe que a data de hoje foi adicionada caixa Order Date.
10. Salve o pedido.
Na janela Order Entry Windows Internet Explorer, clique no boto Save.

Observao: observe a presena de um asterisco ao lado da caixa Due Date e de uma
mensagem de erro no resumo de validao, na parte inferior.
11. Especifique uma data de concluso invlida e salve o pedido.
Na janela Order Entry Windows Internet Explorer, na caixa Due Date,
digite uma data 31 dias aps a data de hoje, no formato m/d/yyyy e clique
no boto Save.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-33

Observao: observe a presena de um asterisco ao lado da caixa Due Date, no mesmo
local mostrado na tentativa anterior de salvar o pedido, e uma mensagem de erro diferente
no resumo de validao, na parte inferior.
12. Especifique uma data de concluso vlida e salve o pedido.
Na janela Order Entry Windows Internet Explorer, na caixa Due Date,
digite uma data que seja at 30 dias anterior data atual, no formato
m/d/yyyy, e depois clique no boto Save.

Observao: observe que no h erros de validao.
13. Especifique um endereo de email invlido e salve o pedido.
Na janela Order Entry Windows Internet Explorer, na caixa Email
Address, digite claus@cohowinery e clique no boto Save.

Observao: observe a presena de um asterisco ao lado da caixa Email Address e de
uma mensagem de erro no resumo de validao, na parte inferior.
14. Especifique um endereo de email vlido e salve o pedido.
Na janela Order Entry Windows Internet Explorer, na caixa Email
Address, digite claus@cohowinery.com e clique no boto Save.

Observao: observe que no h erros de validao.
15. Feche o Windows Internet Explorer.
Na janela Order Entry Windows Internet Explorer, clique no boto Close.

Pergunta: Por que os controles de validao compartilham as mesmas
propriedades de validao?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-34 Introduo
Posici
em um
Pontos
Os cont
quando
de valid
entrada
valida
O cdig
<asp:V
Co
Er
Di
Te
</asp

aoDesenvolvimentonaW
ionamento e
m Formulri
s principais
troles de valida
o ocorrer uma vio
dao de entrada
a incorreta. No Vi
o na pgina ond
go a seguir a ma
ValidatorType i
ontrolToValidat
rrorMessage="Er
isplay="Static
ext="Text to di
:ValidatorType>
WebcomoMicrosoftV
e configura
o Web
o de entrada pod
olao de entrada
para que fique cl
sual Studio 2010
de o texto da men
arcao padro pa
d="ID of valida
te="ID of contro
rror message for
| Dynamic | Non
isplay next to t
>

VisualStudio2010
o de contro
dem exibir uma m
. importante po
laro para o usuri
0, voc deve posic
nsagem de erro de
ara um controle d
ator" runat="se
ol"
r error summary
ne"
the input contr
oles de valida
mensagem de erro
osicionar os cont
io qual controle t
cionar o controle
ever ser exibido
de validao de e
erver"
y"
rol">
ao

o
roles
tem a
de
.
entrada.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-35
Os controles de validao de entrada do ASP.NET contm duas propriedades de
mensagem de erro: ErrorMessage e Text, ambas podendo ser exibidas no local do
controle de validao de entrada. A diferena entre elas a seguinte:
ErrorMessage. Esta propriedade a mensagem de erro que ser exibida no
local de um controle de validao quando ele disparado, caso a propriedade
Text no esteja definida. Essa mensagem tambm ser includa em um controle
ValidationSummary se voc usar um no Web Form.
Text. Esta propriedade o texto alternativo que ser exibido no local do
controle de validao quando as propriedades ErrorMessage e Text forem
usadas e o controle de validao for disparado. Se voc usar um controle
ValidationSummary para coletar mensagens de erro, normalmente colocar
um asterisco vermelho (*) direita do controle de entrada invlido para
indicar o local do erro.

No Visual Studio 2010, por padro, o valor da propriedade Text colocado entre
as marcas de incio e fim do controle de validao. O cdigo a seguir ilustra esse
cenrio.
<asp:ValidatorType...>TextValue</asp:ValidatorType>
You can explicitly declare the Text property. The following code
illustrates this approach.
<asp:ValidatorType...Text="TextValue"></asp:ValidatorType> or
<asp:ValidatorType...Text="TextValue" />

Configurando a propriedade Display
A propriedade Display define as caractersticas do local onde as mensagens de erro
dos vrios controles de validao em um Web Form sero exibidas. Ela se refere
somente s mensagens de erro no local onde o controle de validao foi colocado.
As mensagens exibidas no ValidationSummary no so afetadas pela propriedade
Display.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-36 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
A tabela a seguir descreve as opes da propriedade Display.
Opo Descrio
Static Define um layout fixo para a mensagem de erro que faz com que
cada controle de validao ocupe espao, mesmo quando no houver
nenhum texto de mensagem de erro visvel. Esta opo permite
definir um layout fixo para a pgina e a opo padro no Visual
Studio 2010.
Dynamic Permite que os controles de validao sejam renderizados na pgina
como parte do fluxo de texto. Voc pode usar esta opo para
impedir a exibio de espaos em branco na pgina quando os
controles de validao de entrada no forem disparados. s vezes,
esta opo faz com que os controles se movam no Web Form quando
as mensagens de erro so exibidas.
None Bloqueia a exibio da mensagem de erro no local do controle de
validao.

O controle ValidationSummary deve ser colocado onde faz sentido o usurio
procurar, caso no seja executado postback da pgina no servidor. Geralmente,
isso significa coloc-lo ao lado do(s) boto(es) de envio.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Lio 3
Valida
Como m
Entretan
executa
pode us
Web Fo
Objetiv
Depois
Adi
Val


o de Web
melhor prtica, vo
nto, para evitar ex
ada, recomendv
sar o Visual Studi
orms ASP.NET.
vos da lio
de concluir esta l
icionar o controle
idar Web Forms
b Forms
oc deve sempre
xploraes de scr
vel aplicar manua
io 2010 para adic
lio, voc ser ca
e ValidationSum
de forma program

Valida
validar a entrada
ript e garantir qu
almente a valida
cionar cdigo de
apaz de:
mmary.
mtica.
odeentradadousuri
a do usurio na or
ue essa validao
o do servidor. V
validao do clie
o 6-37

rigem.
seja
Voc
ente aos
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-38 Introduo
Inclus
Pontos
O contr
Page.IsV
sondad
controle
Web Fo
de valid
Voc po
todos o
seja feit

aoDesenvolvimentonaW
so do contr
s principais
role ValidationSu
Valid retorna fal
o, e o controle Va
e ValidationSum
orms; em vez diss
dao em uma p
ode usar este con
s erros de valida
o por cada contro
WebcomoMicrosoftV
role Validatio
ummary exibe m
lse. Cada um dos
alidationSumma
mmary no execu
so, ele o control
gina.
ntrole de validao
o ocorridos em
ole de validao i

VisualStudio2010
onSummary
mensagens de erro
controles de vali
ary agrega as men
ta validaes na e
le de relatrio usa
o para consolidar
m uma pgina, em
individualmente.
o quando a propr
idao na pgina
nsagens ErrorMe
entrada de conte
ado por outros co
r relatrio de erro
m vez de exigir qu


riedade
a
essage. O
do nos
ontroles
os para
e isso
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-39
Texto de exibio e mensagens de erro
O controle ValidationSummary pode exibir uma caixa de mensagem ou uma rea
de texto, com um cabealho esttico e uma lista de erros. Dependendo do valor da
propriedade DisplayMode, as mensagens de erro podem ser exibidas como uma
lista com marcadores ou como um nico pargrafo. Voc pode usar o controle
ValidationSummary para formulrios maiores, que tm um processo abrangente
de validao de formulrio. melhor para os usurios ter todos os possveis erros
de validao relatados de uma maneira s e que seja facilmente identificvel. Os
controles ValidationSummary normalmente so colocados ao lado do boto
Submit para que todas as mensagens de erro possam ser vistas pelo usurio
quando os controles de validao de entrada forem disparados.
O exemplo de cdigo HTML a seguir demonstra um controle ValidationSummary
tpico.
<asp:ValidationSummary id="MyValidationSummary"
runat="server"
HeaderText="These errors were found:"
ShowSummary="True"
DisplayMode="List" />

Localizao de erros
A propriedade Text de um controle de validao exibida no local do controle de
validao, e a propriedade ErrorMessage, na exibio do controle ValidationSummary.
Uma propriedade Text com um asterisco vermelho (*) normalmente exibida
direita do controle de entrada para avisar ao usurio que ele no foi preenchido
corretamente. Uma propriedade ErrorMessage com uma descrio do erro de
entrada exibida no controle ValidationSummary, que geralmente colocado
ao lado do evento que dispara o controle.
Pergunta: Como voc resumir mensagens de erro de um grupo de controles de
validao em um Web Form?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-40 Introduo
Valida
Pontos
Os cont
quando
a inicial
controle
s vezes
Se v
Se v
Min
Se v
ind
ace
pg


aoDesenvolvimentonaW
ao program
s principais
troles de valida
o executado pos
lizao da pgina
e seja executado.
s, convm aplicar
voc estiver adici
voc estiver defin
nimumValue ou
voc precisar dete
dividual no manip
sso de certos recu
gina invlida).
WebcomoMicrosoftV
mtica de W
o do ASP.NET re
stback de um We
a, mas antes que o
r sua prpria vali
onando controle
nindo regras de va
o MaximumValu
erminar a validad
pulador de evento
ursos do servidor

VisualStudio2010
Web Forms
ealizam validao
eb Form no servid
o cdigo de mani
idao de forma p
s dinamicamente
alidao em temp
ue do controle R
de de uma pgina
os Page_Load (p
r, como um banc
o automaticament
dor. Isso acontece
ipulao de event
programtica:
e em tempo de ex
po de execuo, c
RangeValidator.
a ou de um contr
or exemplo, imp
co de dados, quan

te
e aps
tos de
xecuo.
como o
ole
edir o
ndo uma
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-41
A propriedade IsValid determina a validade da pgina ou de um controle de
validao. O problema com esta propriedade que, quando ela est definida, pode
ser acessada sem que uma exceo seja lanada. Por isso, se voc quiser determinar
a validade antes que os mtodos do manipulador de eventos de controle de validao
sejam executados, comece a validao de forma programtica chamando o mtodo
Validate da pgina ou do controle. Os exemplos de cdigo a seguir demonstram
como chamar o mtodo Validate.
[Visual Basic]
Me.Validate()

[Visual C#]
this.Validate();

Outro exemplo para aplicar sua prpria validao programtica quando voc est
trabalhando com o controle RangeValidator e define a propriedade MinimumValue
em tempo de execuo com base nos valores lidos de um arquivo de configurao.
Depois que a validao for executada, verifique a propriedade IsValid de Page. Se a
propriedade IsValid for false, voc precisar descobrir quais dos controles individuais
est invlido. Para isso, verifique a propriedade IsValid de cada controle de
validao. Quando um controle executa sua verificao de validao, a propriedade
IsValid definida de acordo. Quando um erro detectado e a pgina retornada
para o usurio, as mensagens de erro so exibidas.
Os exemplos de cdigo a seguir ilustram como validar uma pgina em postback e
localizar o controle de validao que causou o erro de validao.
[Visual Basic]
' User postback?
If Me.IsPostBack Then
' Validate page
Me.Validate()

' Is page valid?
If Not Me.IsValid Then
' Loop through validation controls to see which
' generated the error(s)
For Each controlValidator As IValidator In Validators
If controlValidator.IsValid = False Then
...
End If
Next
End If
End If

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-42 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
[Visual C#]
// User postback?
if (this.IsPostBack)
{
// Validate page
this.Validate();

// Is page valid?
if (!this.IsValid)
{
// Loop through all validation controls to see which
// generated the error(s)
foreach (IValidator controlValidator in this.Validators)
{
if (!controlValidator.IsValid)
{
...
}
}
}
}

Pergunta: Como verificar se o contedo de um controle ou de uma pgina vlido?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Laborat

Observa
Basic o
Visual Ba
do docu
program
Aprese
Neste lab
de usu
Tambm
frequen
do servi

rio: Valid
ao: voc pode e
ou a linguagem de
asic como linguag
umento do laborat
mao, consulte as
entao do labo
boratrio, voc ir
rio para ajudar a
m usar script do
te de entradas do
idor para proteger
dao de
executar tarefas ne
e programao Mi
em de programa
rio. Se estiver usa
etapas fornecidas
oratrio
adicionar e config
garantir entradas
lado do cliente, q
usurio com o ser
r o projeto Web co

Valida
entrada
este laboratrio usa
crosoft Visual C#
o, consulte as eta
ando o Visual C# c
na Seo 2 do do
gurar controles de
do usurio vlida
que ajudar a evita
rvidor. Alm disso
ontra falsificao e
odeentradadousuri
do usur
ando o Microsoft V
. Se estiver usand
apas fornecidas na
como linguagem d
ocumento do labor
validao em um
as em um projeto
ar verificao cruz
o, voc realizar va
e cdigo mal-inten
o 6-43
rio

Visual
do o
a Seo 1
de
ratrio.
controle
o Web.
zada
alidao
ncionado.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-44 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Objetivos do laboratrio
Depois de concluir este laboratrio, voc ser capaz de:
Adicionar controles de validao.
Configurar controles de validao.
Adicionar validao do servidor.

Configurao do laboratrio
Neste laboratrio, voc usar o ambiente de mquina virtual disponvel. Antes de
iniciar o laboratrio, voc deve:
Inicie a mquina virtual 10560A-GEN-DEV e depois faa logon usando as
seguintes credenciais:
Nome de usurio: Aluno
Senha: Pa$$w0rd


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Cenr
Voc tra
possui u
informa
atualiza
requisit
Gerenci
desemp

rio de labora
abalha como dese
uma base global d
aes dos clientes
adas as informa
to, voc precisa ad
iamento de Clien
penho decorrente
atrio
envolvedor na Co
de clientes. Sua o
s. Para uma comu
es dos clientes n
dicionar e configu
ntes sem gerar sob
es da verificao c

Valida
ontoso, Ltd, uma
organizao usa u
unicao eficaz, a
no banco de dado
urar controles de
brecargas admini
cruzada frequente
odeentradadousuri
a grande organiza
um site para geren
a organizao dev
os. Para atender a
e validao para o
istrativas ou prob
e com o servidor.
o 6-45

ao que
nciar as
ve manter
a esse
o projeto
blemas de
.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-46 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Seo 1: Visual Basic
Exerccio 1: Incluso de controles de validao
Estas so as principais tarefas do exerccio:
1. Abrir um site ASP.NET existente.
2. Adicionar controles de validao ao controle do usurio.

Tarefa 1: Abrir um site ASP.NET existente
Faa logon na mquina virtual 10560A-GEN-DEV como Aluno com a senha,
Pa$$w0rd.
Abra o Microsoft Visual Studio 2010.
Abra a soluo CustomerManagement, localizada na pasta
D:\Labfiles\Starter\M6\VB.

Tarefa 2: Adicionar controles de validao ao controle do usurio
Exiba a marcao do controle de usurio Customer.
Adicione um controle RequiredFieldValidator chamado
CustomerFirstNameRequiredFieldValidator, referente ao controle
CustomerFirstNameTextBox.
<asp:RequiredFieldValidator
ID="CustomerFirstNameRequiredFieldValidator"
ControlToValidate="CustomerFirstNameTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
Adicione um controle RequiredFieldValidator denominado
CustomerLastNameRequiredFieldValidator para o controle
CustomerLastNameTextBox.
<asp:RequiredFieldValidator
ID="CustomerLastNameRequiredFieldValidator"
ControlToValidate="CustomerLastNameTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-47
Adicione um controle RequiredFieldValidator denominado
CustomerAddressRequiredFieldValidator para o controle
CustomerAddressTextBox.
<asp:RequiredFieldValidator
ID="CustomerAddressRequiredFieldValidator"
ControlToValidate="CustomerAddressTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>

Adicione um controle RequiredFieldValidator denominado
CustomerZipCodeRequiredFieldValidator para o controle
CustomerZipCodeTextBox.
<asp:RequiredFieldValidator
ID="CustomerZipCodeRequiredFieldValidator"
ControlToValidate="CustomerZipCodeTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
Adicione um controle RequiredFieldValidator denominado
CustomerCityRequiredFieldValidator para o controle CustomerCityTextBox.
<asp:RequiredFieldValidator
ID="CustomerCityRequiredFieldValidator"
ControlToValidate="CustomerCityTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
Adicione um controle RequiredFieldValidator denominado
CustomerCountryRequiredFieldValidator para o controle
CustomerCountryDropDownList.
<asp:RequiredFieldValidator
ID="CustomerCountryRequiredFieldValidator"
ControlToValidate="CustomerCountryDropDownList" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-48 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Adicione um controle RequiredFieldValidator denominado
CustomerWebAddressRequiredFieldValidator para o controle
CustomerWebAddressTextBox.
<asp:RequiredFieldValidator
ID="CustomerWebAddressRequiredFieldValidator"
ControlToValidate="CustomerWebAddressTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
Adicione um controle RequiredFieldValidator denominado
CustomerCreditLimitRequiredFieldValidator para o controle
CustomerCreditLimitTextBox.
<asp:RequiredFieldValidator
ID="CustomerCreditLimitRequiredFieldValidator"
ControlToValidate="CustomerCreditLimitTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
Adicione um controle RegularExpressionValidator chamado
CustomerEmailAddressRegularExpressionValidator, referente ao controle
CustomerEmailAddressTextBox.
<asp:RegularExpressionValidator
ID="CustomerEmailAddressRegularExpressionValidator"
ControlToValidate="CustomerEmailAddressTextBox" runat="server"
ErrorMessage="RegularExpressionValidator"></asp:RegularExpressionV
alidator>
Adicione um controle RegularExpressionValidator denominado
CustomerWebAddressRegularExpressionValidator para o controle
CustomerWebAddressTextBox.
<asp:RegularExpressionValidator
ID="CustomerWebAddressRegularExpressionValidator"
ControlToValidate="CustomerWebAddressTextBox" runat="server"
ErrorMessage="RegularExpressionValidator"></asp:RegularExpressionV
alidator>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-49
Adicione um controle RangeValidator denominado
CustomerCreditLimitRangeValidator para o controle
CustomerCreditLimitTextBox.
<asp:RangeValidator ID="CustomerCreditLimitRangeValidator"
ControlToValidate="CustomerCreditLimitTextBox" runat="server"
MinimumValue="500" MaximumValue="50000"
ErrorMessage="RangeValidator"></asp:RangeValidator>
Adicione um controle ValidationSummary denominado
CustomerValidationSummary para o controle CustomerInsertButton.
<asp:ValidationSummary ID="CustomerValidationSummary"
runat="server"></asp:ValidationSummary>
Formate o controle de usurio Customer.ascx.
Salve o controle de usurio Customer e exiba as alteraes no navegador.
Teste a funcionalidade do controle do usurio Customer.
Feche o Windows Internet Explorer.

Resultado: depois de concluir este exerccio, voc ter adicionado controles de
validao a um controle de usurio.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-50 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio 2: Configurao de controles de validao
Estas so as principais tarefas do exerccio:
1. Remover a validao do boto Cancel.
2. Adicionar mensagens e indicadores de erro aos controles de validao.
3. Definir os controles de validao para limite de crdito e endereo de email.

Tarefa 1: Remover a validao do boto Cancel
Exiba o mtodo padro Response.Redirect do boto Cancel.
''' <summary>
''' Redirects to home page
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub CustomerCancelButton_Click(ByVal sender As Object,
ByVal e As System.EventArgs) Handles CustomerCancelButton.Click
' Redirect to home page
Response.Redirect("~/Default.aspx")
End Sub
Desabilite a validao causada pelo controle CustomerCancelButton
definindo a propriedade CausesValidation no controle de usurio como false.
<asp:Button ID="CustomerCancelButton" runat="server" Text="Cancel"
CausesValidation="false" />
Salve o controle de usurio Customer e exiba as alteraes no navegador.


Observao: observe que o navegador da Web redirecionado para o Formulrio Web
padro, em vez de exibir as mensagens de erro.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-51
Tarefa 2: Adicionar mensagens e indicadores de erro aos controles de
validao
Adicione uma propriedade Text com o valor de * ao controle
CustomerFirstNameRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerFirstNameRequiredFieldValidator para The Customer First Name
must be filled in.
Adicione a propriedade Text com o valor de * ao controle
CustomerLastNameRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerLastNameRequiredFieldValidator para The Customer Last Name
must be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerAddressRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerAddressRequiredFieldValidator para The Address must be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerZipCodeRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerZipCodeRequiredFieldValidator para The Zip Code must be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerCityRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerCityRequiredFieldValidator para The City must be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerCountryRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerCountryRequiredFieldValidator para A country must be selected.
Adicione uma propriedade Text com o valor de * ao controle
CustomerEmailAddressRegularExpressionValidator.
Altere a propriedade ErrorMessage no controle
CustomerEmailAddressRegularExpressionValidator para The Email
Address must be valid.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-52 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Adicione uma propriedade Text com o valor de * ao controle
CustomerWebAddressRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerWebAddressRequiredFieldValidator para The Web Address must
be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerWebAddressRegularExpressionValidator.
Altere a propriedade ErrorMessage no controle
CustomerWebAddressRegularExpressionValidator para The Web Address
must be valid.
Adicione uma propriedade Text com o valor de * ao controle
CustomerCreditLimitRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerCreditLimitRequiredFieldValidator para The Credit Limit must
be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerCreditLimitRangeValidator.
Altere a propriedade ErrorMessage no controle
CustomerCreditLimitRangeValidator para The Credit Limit must be within
the valid range.
Salve o controle de usurio Customer e exiba as alteraes no navegador.
Na janela Contoso Customer Management Windows Internet Explorer, na
caixa Email Address, digite contoso.com e pressione a tecla TAB. Na caixa
Web Address, digite www.contoso e pressione a tecla TAB novamente.

Observao: se uma mensagem de AutoCompletar for exibida, clique em No.

Observao: observe o indicador de erro exibido ao lado das caixas Email Address e
Web Address, por causa dos endereos Web e de email invlidos.
Na janela Contoso Customer Management Windows Internet Explorer,
clique no boto Insert.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-53

Observao: observe as mensagens e o indicador de erro ao lado dos controles First
Name, Last Name, Address, Zip Code, City, Country e Credit Limit.
Feche o Windows Internet Explorer.

Tarefa 3: Definir os controles de validao para limite de crdito e
endereo de email
Exiba o Web Form InsertCustomer.aspx em um navegador.
Na janela Contoso Customer Management Windows Internet Explorer,
clique no boto Insert.

Observao: observe que o valor para a caixa Credit Limit est definido como 0 e o
texto do indicador de erro referente caixa Web Address no est alinhado com os
outros indicadores de erro. Observe tambm que a mensagem de erro referente caixa
Credit Limit The Credit Limit must be within the valid range.
Feche o Windows Internet Explorer.
Adicione uma propriedade Display com o valor de Dynamic ao controle
CustomerWebAddressRequiredFieldValidator para alterar a exibio do
texto do indicador de erro.
Adicione uma propriedade Display com o valor de Dynamic ao controle
CustomerCreditLimitRequiredFieldValidator para alterar a exibio do
texto do indicador de erro.
Salve o controle de usurio Customer e exiba as alteraes no navegador.
Clique no boto Insert.

Observao: observe que o local do indicador de erro referente caixa Credit Limit foi
alterado. Entretanto, a mensagem de erro referente caixa Credit Limit ainda The
Credit Limit must be within the valid range.
Feche o Windows Internet Explorer.
Adicione uma propriedade ValidationExpression com o valor de
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* ao controle
CustomerEmailAddressRegularExpressionValidator.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-54 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Adicione uma propriedade ValidationExpression com o valor de
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* ao controle
CustomerWebAddressRegularExpressionValidator.
Defina a propriedade Type com o valor de Integer para o controle
CustomerCreditLimitRangeValidator.
Altere a propriedade MinimumValue do controle
CustomerCreditLimitRangeValidator para 0.
Salve o controle de usurio Customer e exiba as alteraes no navegador.
Na janela Contoso Customer Management Windows Internet Explorer, na
caixa Email Address, digite claus@contoso.com. Na caixa Web Address,
digite http://www.contoso.com e clique no boto Insert.

Observao: observe que as mensagens e o indicador de erro no so exibidos para as
caixas Email Address, Web Address e Credit Limit.

Resultados: depois de concluir este exerccio, voc ter removido o controle de
validao do boto Cancel e adicionado mensagens e indicadores de erro aos
controles de validao.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-55
Exerccio 3: Incluso da validao do servidor
A principal tarefa deste exerccio validar o controle de usurio Customer.
Tarefa 1: Validar o controle de usurio Customer
Abra a janela de cdigo Customer.ascx.vb.
Adicione o cdigo para validar o controle de usurio dentro do mtodo de
manipulador de eventos CustomerInsertButton_Click.
''' <summary>
''' Saves the current customer information and adds default values
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub CustomerInsertButton_Click(ByVal sender As Object,
ByVal e As System.EventArgs) Handles CustomerInsertButton.Click
' Did page validation succeed?
If Not Page.IsValid Then
Return
End If

' Add the current user name
currentCustomer.CreatedBy = Context.User.Identity.Name
' Add the user credit limit
currentCustomer.CreditLimit = 50000
End Sub

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-56 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Adicione validao de postback ao mtodo de manipulador de eventos Page_Load.
''' <summary>
''' Instantiates Customer object
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
' Validate Page
Page.Validate()

' Did page validation succeed?
If Not Page.IsValid Then
Return
End If
End If

' Instantiate Customer
instantiateCustomerObject()
' Populate the UI controls
populateUI()
End Sub
Desabilite a validao do lado do cliente para o controle
CustomerCountryDropDownList definindo a propriedade EnableClientScript
do controle CustomerCountryRequiredFieldValidator como false.
<asp:RequiredFieldValidator
ID="CustomerCountryRequiredFieldValidator"
ControlToValidate="CustomerCountryDropDownList" runat="server"
ErrorMessage="A country must be selected." Text="*"
EnableClientScript="false"></asp:RequiredFieldValidator>
Salve o controle de usurio Customer e exiba as alteraes no navegador.
Na janela Contoso Customer Management Windows Internet Explorer,
digite as configuraes a seguir e clique no boto Insert:
First Name: Claus
Last Name: Hansen
Address: 4567 Main St.
Zip Code: 98052
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-57
City: Buffalo
State: NY
Web Address: http://www.cohowinery.com

Observao: observe o postback da pgina da Web com as entradas. Observe tambm
que, aps o postback, so exibidos o indicador de erro referente lista Country e a
mensagem de erro associada.
Feche o Windows Internet Explorer.
Remova a propriedade EnableClientScript referente ao controle
CustomerCountryRequiredFieldValidator para habilitar a validao do lado
do cliente para o controle CustomerCountryDropDownList. Em seguida,
formate e salve o controle de usurio Customer.
<asp:RequiredFieldValidator
ID="CustomerCountryRequiredFieldValidator"
ControlToValidate="CustomerCountryDropDownList" runat="server"
ErrorMessage="A country must be selected."
Text="*"></asp:RequiredFieldValidator>
Na janela CustomerManagement Microsoft Visual Studio, clique no boto Feche.

Tarefa 2: Desativar a mquina virtual e reverter as alteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Resultados: depois de concluir este exerccio, voc ter adicionado controles de
validao do lado do cliente ao controle de usurio Customer.

Observao: as respostas dos exerccios esto no CD complementar do curso.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-58 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Seo 2: Visual C#
Exerccio 1: Incluso de controles de validao
Estas so as principais tarefas do exerccio:
1. Abrir um site ASP.NET existente.
2. Adicionar controles de validao ao controle do usurio.

Tarefa 1: Abrir um site ASP.NET existente
Faa logon na mquina virtual 10560A-GEN-DEV como Aluno com a senha,
Pa$$w0rd.
Abra o Microsoft Visual Studio 2010.
Abra a soluo CustomerManagement, localizada na pasta
D:\Labfiles\Starter\M6\CS.

Tarefa 2: Adicionar controles de validao ao controle do usurio
Exiba a marcao do controle de usurio Customer.
Adicione um controle RequiredFieldValidator chamado
CustomerFirstNameRequiredFieldValidator, referente ao controle
CustomerFirstNameTextBox.
<asp:RequiredFieldValidator
ID="CustomerFirstNameRequiredFieldValidator"
ControlToValidate="CustomerFirstNameTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
Adicione um controle RequiredFieldValidator denominado
CustomerLastNameRequiredFieldValidator para o controle
CustomerLastNameTextBox.
<asp:RequiredFieldValidator
ID="CustomerLastNameRequiredFieldValidator"
ControlToValidate="CustomerLastNameTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-59
Adicione um controle RequiredFieldValidator denominado
CustomerAddressRequiredFieldValidator para o controle
CustomerAddressTextBox.
<asp:RequiredFieldValidator
ID="CustomerAddressRequiredFieldValidator"
ControlToValidate="CustomerAddressTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
Adicione um controle RequiredFieldValidator denominado
CustomerZipCodeRequiredFieldValidator para o controle
CustomerZipCodeTextBox.
<asp:RequiredFieldValidator
ID="CustomerZipCodeRequiredFieldValidator"
ControlToValidate="CustomerZipCodeTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
Adicione um controle RequiredFieldValidator denominado
CustomerCityRequiredFieldValidator para o controle CustomerCityTextBox.
<asp:RequiredFieldValidator
ID="CustomerCityRequiredFieldValidator"
ControlToValidate="CustomerCityTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
Adicione um controle RequiredFieldValidator denominado
CustomerCountryRequiredFieldValidator para o controle
CustomerCountryDropDownList.
<asp:RequiredFieldValidator
ID="CustomerCountryRequiredFieldValidator"
ControlToValidate="CustomerCountryDropDownList" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-60 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Adicione um controle RequiredFieldValidator denominado
CustomerWebAddressRequiredFieldValidator para o controle
CustomerWebAddressTextBox.
<asp:RequiredFieldValidator
ID="CustomerWebAddressRequiredFieldValidator"
ControlToValidate="CustomerWebAddressTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
Adicione um controle RequiredFieldValidator denominado
CustomerCreditLimitRequiredFieldValidator para o controle
CustomerCreditLimitTextBox.
<asp:RequiredFieldValidator
ID="CustomerCreditLimitRequiredFieldValidator"
ControlToValidate="CustomerCreditLimitTextBox" runat="server"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
Adicione um controle RegularExpressionValidator chamado
CustomerEmailAddressRegularExpressionValidator, referente ao controle
CustomerEmailAddressTextBox.
<asp:RegularExpressionValidator
ID="CustomerEmailAddressRegularExpressionValidator"
ControlToValidate="CustomerEmailAddressTextBox" runat="server"
ErrorMessage="RegularExpressionValidator"></asp:RegularExpressionV
alidator>
Adicione um controle RegularExpressionValidator denominado
CustomerWebAddressRegularExpressionValidator para o controle
CustomerWebAddressTextBox.
<asp:RegularExpressionValidator
ID="CustomerWebAddressRegularExpressionValidator"
ControlToValidate="CustomerWebAddressTextBox" runat="server"
ErrorMessage="RegularExpressionValidator"></asp:RegularExpressionV
alidator>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-61
Adicione um controle RangeValidator denominado
CustomerCreditLimitRangeValidator para o controle
CustomerCreditLimitTextBox. O valor mnimo 500, e o mximo 50000.
<asp:RangeValidator ID="CustomerCreditLimitRangeValidator"
ControlToValidate="CustomerCreditLimitTextBox" runat="server"
MinimumValue="500" MaximumValue="50000"
ErrorMessage="RangeValidator"></asp:RangeValidator>
Adicione um controle ValidationSummary denominado
CustomerValidationSummary para o controle CustomerInsertButton.
<asp:ValidationSummary ID="CustomerValidationSummary"
runat="server"></asp:ValidationSummary>
Formate o controle do usurio Customer.ascx.
Salve o controle de usurio Customer e exiba as alteraes no navegador.
Teste a funcionalidade do controle do usurio Customer.
Feche o Windows Internet Explorer.

Resultado: depois de concluir este exerccio, voc ter adicionado controles de validao a
um controle de usurio.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-62 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio 2: Configurao de controles de validao
Estas so as principais tarefas do exerccio:
1. Remover a validao do boto Cancel.
2. Adicionar mensagens e indicadores de erro aos controles de validao.
3. Definir os controles de validao para limite de crdito e endereo de email.

Tarefa 1: Remover a validao do boto Cancel
Exiba o mtodo padro Response.Redirect do boto Cancel.
/// <summary>
/// Redirects to home page
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void CustomerCancelButton_Click(object sender, EventArgs e)
{
// Redirect to home page
Response.Redirect("~/Default.aspx");
}
Desabilite a validao causada pelo controle CustomerCancelButton
definindo a propriedade CausesValidation no controle de usurio como false.
<asp:Button ID="CustomerCancelButton" runat="server" Text="Cancel"
OnClick="CustomerCancelButton_Click" CausesValidation="false" />
Salve o controle de usurio Customer e exiba as alteraes no navegador.


Observao: observe que o navegador da Web redirecionado para o Formulrio da
Web padro, em vez de exibir as mensagens de erro.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-63
Tarefa 2: Adicionar mensagens e indicadores de erro aos controles de
validao
Adicione uma propriedade Text com o valor de * ao controle
CustomerFirstNameRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerFirstNameRequiredFieldValidator para The Customer First Name
must be filled in.
Adicione a propriedade Text com o valor de * ao controle
CustomerLastNameRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerLastNameRequiredFieldValidator para The Customer Last Name
must be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerAddressRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerAddressRequiredFieldValidator para The Address must be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerZipCodeRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerZipCodeRequiredFieldValidator para The Zip Code must be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerCityRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerCityRequiredFieldValidator para The City must be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerCountryRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerCountryRequiredFieldValidator para A country must be selected.
Adicione uma propriedade Text com o valor de * ao controle
CustomerEmailAddressRegularExpressionValidator.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-64 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Altere a propriedade ErrorMessage no controle
CustomerEmailAddressRegularExpressionValidator para The Email
Address must be valid.
Adicione uma propriedade Text com o valor de * ao controle
CustomerWebAddressRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerWebAddressRequiredFieldValidator para The Web Address must
be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerWebAddressRegularExpressionValidator.
Altere a propriedade ErrorMessage no controle
CustomerWebAddressRegularExpressionValidator para The Web Address
must be valid.
Adicione uma propriedade Text com o valor de * ao controle
CustomerCreditLimitRequiredFieldValidator.
Altere a propriedade ErrorMessage no controle
CustomerCreditLimitRequiredFieldValidator para The Credit Limit must
be filled in.
Adicione uma propriedade Text com o valor de * ao controle
CustomerCreditLimitRangeValidator.
Altere a propriedade ErrorMessage no controle
CustomerCreditLimitRangeValidator para The Credit Limit must be within
the valid range.
Salve o controle de usurio Customer e exiba as alteraes no navegador.
Na janela Contoso Customer Management Windows Internet Explorer, na
caixa Email Address, digite contoso.com e pressione a tecla TAB. Na caixa
Web Address, digite www.contoso e depois pressione a tecla TAB.

Observao: se uma mensagem de AutoCompletar for exibida, clique no boto No.

Observao: observe o indicador de erro exibido ao lado das caixas Email Address e
Web Address, por causa dos endereos Web e de email invlidos.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-65
Na janela Contoso Customer Management Windows Internet Explorer,
clique no boto Insert.

Observao: observe as mensagens e o indicador de erro ao lado dos controles First
Name, Last Name, Address, Zip Code, City, Country e Credit Limit.
Feche o Windows Internet Explorer.

Tarefa 3: Definir os controles de validao para limite de crdito e
endereo de email
Exibir o Web Form InsertCustomer.aspx em um navegador.
Na janela Contoso Customer Management Windows Internet Explorer,
clique no boto Insert.

Observao: observe que o valor para a caixa Credit Limit est definido como 0, e o
texto do indicador de erro referente caixa Web Address no est alinhado com os
outros indicadores de erro. Observe tambm que a mensagem de erro referente caixa
Credit Limit The Credit Limit must be within the valid range.
Feche o Windows Internet Explorer.
Adicione uma propriedade Display com o valor de Dynamic ao controle
CustomerWebAddressRequiredFieldValidator para alterar a exibio do
texto do indicador de erro.
Adicione uma propriedade Display com o valor de Dynamic ao controle
CustomerCreditLimitRequiredFieldValidator para alterar a exibio do texto
do indicador de erro.
Salve o controle de usurio Customer e exiba as alteraes no navegador.
Clique no boto Insert.

Observao: observe que o local do indicador de erro referente caixa Credit Limit foi
alterado. Entretanto, a mensagem de erro referente caixa Credit Limit ainda The
Credit Limit must be within the valid range.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-66 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Feche o Windows Internet Explorer.
Adicione uma propriedade ValidationExpression com o valor de
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* ao controle
CustomerEmailAddressRegularExpressionValidator.
Adicione uma propriedade ValidationExpression com o valor de
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* ao controle
CustomerWebAddressRegularExpressionValidator.
Defina a propriedade Type com o valor de Integer para o controle
CustomerCreditLimitRangeValidator.
Altere a propriedade MinimumValue do controle
CustomerCreditLimitRangeValidator para 0.
Salve o controle de usurio Customer e exiba as alteraes no navegador.
Na janela Contoso Customer Management Windows Internet Explorer, na
caixa Email Address, digite claus@contoso.com. Na caixa Web Address,
digite http://www.contoso.com e clique no boto Insert.


Observao: observe que as mensagens e o indicador de erro no so exibidos para as
caixas Email Address, Web Address e Credit Limit.
Resultados: depois de concluir este exerccio, voc ter removido o controle de
validao do boto Cancel e adicionado mensagens e indicadores de erro aos
controles de validao.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-67
Exerccio 3: Incluso da validao do servidor
A principal tarefa deste exerccio validar o controle de usurio Customer.
Tarefa 1: Validar o controle de usurio Customer
Abrir a janela de cdigo Customer.ascx.cs.
Adicione o cdigo para validar o controle de usurio dentro do mtodo de
manipulador de eventos CustomerInsertButton_Click.
/// <summary>
/// Saves the current customer information and adds default values
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void CustomerInsertButton_Click(object sender, EventArgs e)
{
// Did page validation succeed?
if (!Page.IsValid)
return;

// Add the current user name
currentCustomer.CreatedBy = Context.User.Identity.Name;
// Add the user credit limit
currentCustomer.CreditLimit = 50000;
}

Adicione validao de postback ao mtodo de manipulador de eventos Page_Load.
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
// Validate Page
Page.Validate();

// Did page validation succeed?
if (!Page.IsValid)
return;
}

// Instantiate Customer
instantiateCustomerObject();
// Populate the UI controls
populateUI();
}
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-68 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Desabilite a validao do lado do cliente para o controle
CustomerCountryDropDownList definindo a propriedade
EnableClientScript do controle CustomerCountryRequiredFieldValidator
como false.
<asp:RequiredFieldValidator
ID="CustomerCountryRequiredFieldValidator"
ControlToValidate="CustomerCountryDropDownList" runat="server"
ErrorMessage="A country must be selected." Text="*"
EnableClientScript="false"></asp:RequiredFieldValidator>
Salve o controle de usurio Customer e exiba as alteraes no navegador.
Na janela Contoso Customer Management Windows Internet Explorer,
digite as configuraes a seguir e clique no boto Insert.
First Name: Claus
Last Name: Hansen
Address: 4567 Main St.
Zip Code: 98052
City: Buffalo
State: NY
Web Address: http://www.cohowinery.com

Observao: observe o postback da pgina da Web com as entradas. Observe tambm
que, aps o postback, so exibidos o indicador de erro referente lista Country e a
mensagem de erro associada.
Feche o Windows Internet Explorer.
Remova a propriedade EnableClientScript referente ao controle
CustomerCountryRequiredFieldValidator para habilitar a validao do lado
do cliente para o controle CustomerCountryDropDownList. Em seguida,
formate e salve o controle de usurio Customer.
<asp:RequiredFieldValidator
ID="CustomerCountryRequiredFieldValidator"
ControlToValidate="CustomerCountryDropDownList" runat="server"
ErrorMessage="A country must be selected."
Text="*"></asp:RequiredFieldValidator>
Na janela CustomerManagement Microsoft Visual Studio, clique no boto
Fechar.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
Validaodeentradadousurio 6-69
Tarefa 2: Desativar a mquina virtual e reverter as alteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Resultados: depois de concluir este exerccio, voc ter adicionado controles de
validao do lado do cliente ao controle de usurio Customer.

Observao: as respostas dos exerccios esto no CD complementar do curso.

Encerramento do laboratrio
Depois de concluir o laboratrio, desligue a mquina virtual 10560A-GEN-DEV e
reverta as alteraes.
1. No Microsoft Hyper-V Manager, no painel Virtual Machines, clique com o boto
direito do mouse em 10560A-GEN-DEV e, em seguida, clique em Turn Off.
2. Na caixa de dilogo Turn Off Machine, clique em Turn Off.
3. No Hyper-V Manager, no painel Virtual Machines, clique com o boto direito
do mouse em 10560A-GEN-DEV e depois clique em Revert.
4. Na caixa de dilogo Revert Virtual Machine, clique em Revert.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-70 Introduo
Revis
Pergun
1. Por
cam
2. Por


aoDesenvolvimentonaW
o do labora
ntas e respostas
r que voc adicion
mpo de endereo
r que voc usa um
WebcomoMicrosoftV
atrio
s de reviso
nou o controle R
de email?
m controle Valida

VisualStudio2010
RegularExpressio
ationSummary?
onValidator refer

rente ao
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Reviso d
complem
Pergun
1. Qu
Proble
1. Voc
pre
esp
Adi
2. Nen
nec
Crie
com
do mdu
mentares
ntas e respostas
e controle voc u
mas e cenrios
c deseja se certif
enchido pelo usu
pecfico. Qual a m
icione um Require
nhum dos contro
cessidades de vali
e um novo contro
mo cdigo.
ulo e info
s de reviso
usar para execut
s do mundo rea
ficar de que um c
urio, mas tamb
maneira mais fc
edFieldValidator
oles de validao
idao. O que voc
ole CustomValid
Valida
rmaes
ar as tarefas de v
al
controle de entrad
m quer que ele e
cil de adicion-lo?
e um controle Reg
intrnsecos do AS
c faria para reso
dator e adicione a
odeentradadousuri
alidao a seguir?
da seja sempre
steja em um form
?
gularExpressionV
SP.NET atendem
olver o problema?
a lgica de valida
o 6-71

?

mato
Validator.
m s suas
?
ao
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
6-72 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Prticas recomendadas
Mencione algumas prticas recomendadas no contexto da sua prpria situao
corporativa.
Sempre adicione cdigo de validao do servidor ao usar controles de
validao, pois o script do lado do cliente pode ser desabilitado ou um
usurio mal-intencionado pode comprometer a entrada do usurio, que
seria ento enviada para o servidor.
Sempre valide a entrada do usurio que usada para executar aes no
servidor, como pesquisar um banco de dados ou acessar recursos do servidor.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-1
Mdulo 7
Soluo de problemas com aplicativos Web
Microsoft ASP.NET
Contedo:
Lio 1: Depurao no ASP.NET 7-3
Lio 2: Rastreamento no ASP.NET 7-22
Laboratrio: Soluo de problemas de aplicativos Web ASP.NET 7-34

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-2 Introduo
Viso ge
Durante
erros no
em temp
2010 pa
e em tem
Visual S
A depur
aplicativ
possv
captura
Este m
incluind

aoDesenvolvimentonaW
eral do m
e o desenvolvimen
o cdigo, como, p
po de execuo. V
ara identificar err
mpo de execuo
Studio 2010 com
rao uma parte
vo Web atenda ao
vel identificar erro
r suas informa
dulo descreve as
do como usar ess
WebcomoMicrosoftV
mdulo
nto de um aplicati
por exemplo, erro
Voc pode usar os
ros em tempo de
o, voc pode usar
os objetos Debu
e importante do d
os requisitos espec
os e corrigi-los. Vo
es de tempo de e
etapas necessrias
ses dois recursos

VisualStudio2010
ivo Web, difcil l
os em tempo de c
compiladores do
compilao. Para
r o depurador do
ug e Trace.
desenvolvimento
cificados. Durante
oc tambm pode
execuo e analis
s para habilitar o r
em um aplicativo
localizar todos os
compilao, de l
Microsoft Visua
a localizar erros d
Visual Studio 20
o para garantir qu
e o processo de de
e rastrear o aplicat
ar seu desempen
rastreamento e a d
o Web.

s possveis
gica ou
l Studio
de lgica
010 ou o
ue um
epurao,
tivo para
nho.
depurao,
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Lio 1
Depura
Voc po
depura
em um a
o depur
Voc po
percorre
depurar
aplicativ
Esta li

o no AS
ode usar a depura
o consiste no pr
aplicativo Web. Pa
rador do Visual S
ode depurar um a
endo todo o cdi
r aplicativos no co
vo Web executad
o descreve como
Soluodepro
SP.NET
ao para localiza
ocesso de identifi
ara a maioria das o
Studio 2010 no co
aplicativo Web ad
igo no modo Deb
mputador local, a
do em um local re
o executar a depu

oblemascomaplicativosW
ar erros em um ap
cao e resoluo
operaes de depu
omputador que h
dicionando ponto
bug. Enquanto a d
a depurao remot
emoto.
urao local e rem
WebMicrosoftASP.NE
plicativo Web AS
de erros lgicos e
urao, possvel
hospeda o aplicat
os de interrupo
depurao local o
ta permite depura
mota.
T 7-3

SP.NET. A
e tcnicos
l executar
tivo Web.
o e
o ajuda a
ar um
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-4 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Objetivos da lio
Depois de concluir esta lio, voc ser capaz de:
Descrever tipos de erros.
Descrever o processo de depurao.
Descrever a classe Debug.
Explicar como coletar informaes de depurao em tempo de execuo.
Descrever os mtodos para impresso de informaes de depurao.
Descrever a depurao em um aplicativo Web.
Descrever a depurao remota em um aplicativo Web.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Discu
Pontos
Ao dese
resolv-
apropri
H trs
aplicativ
Erros d
A sintax
o cdigo
e s regr
cdigo n
ou as in
SubNam
instru

sso: Tipos d
s principais
envolver aplicativ
-los, voc precisa
ada.
tipos de erros qu
vos: erros de sint
de sintaxe
xe de um aplicativ
o e o aplicativo po
ras associadas a e
no Microsoft Visu
nstrues Begin e
me() ... End
o End Sub no Vi
Soluodepro
de erros
vos, voc poder e
identificar o tipo
ue precisam ser tr
taxe, de semntic
vo deve estar corre
ossa ser executado
ela. Por exemplo,
ual C# ((!this.
End correspond
d Sub.). Se voc o
isual Basic, ocorr

oblemascomaplicativosW
encontrar vrios
o de erro a fim de
ratados durante o
a e em tempo de
eta para que um c
o. A sintaxe se refe
, as chaves antes
.IsPostBack)
dentes no Microso
omitir uma das c
er um erro de si
WebMicrosoftASP.NE
tipos de erros. An
corrigi-lo de form
o desenvolviment
execuo.
compilador possa
ere estrutura do a
e depois de um b
{ Block of C
oft Visual Basic (
haves no Visual C
intaxe.
T 7-5

ntes de
ma
to de
compilar
aplicativo
bloco de
Code })
(Sub
C# ou a
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-6 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Os erros de sintaxe fazem parte do que designamos erros em tempo de compilao.
O Visual Studio 2010 o avisa sobre possveis erros em tempo de design. Os rabiscos
ou as notificaes de sintaxe no cdigo indicam que ele no ser compilado ou que
poder causar um erro. Voc pode identificar os erros de sintaxe a fim de resolv-los
ao compilar o aplicativo.
Erros em tempo de execuo
Os erros em tempo de execuo ocorrem quando o aplicativo est sendo executado.
Esses erros tambm so conhecidos como excees. Por exemplo, um aplicativo
poder depender de outro arquivo em tempo de execuo. Entretanto, se o arquivo
no estiver disponvel quando o aplicativo tentar acess-lo, ser gerada uma exceo,
e o aplicativo dever decidir se tratar ou no dela. O tratamento de excees pode
ser implementado encapsulando-se o cdigo em uma construo
Try...Catch/try...catch, como no exemplo a seguir.
[Visual Basic]
Try
' Place any code here, that are critical to your application,
' that potentially throws an exception
Catch
' Add any cleanup/resolve code here to handle the exception
' thrown, or code to log the exception details
Finally
' Add any code that must be executed whether an exception
' is thrown or not
End Try

[Visual C#]
try
{
// Place any code here, that are critical to your application,
// that potentially throws an exception
}
catch
{
// Add any cleanup/resolve code here to handle the exception
// thrown, or code to log the exception details
}
finally
{
// Add any code that must be executed whether an exception
// is thrown or not
}
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-7
Erros semnticos
Os erros semnticos so os mais difceis de localizar e corrigir, porque o aplicativo
aparentemente ser executado com xito, e voc no ver nenhuma mensagem de
erro. Entretanto, possvel que o aplicativo no apresente o desempenho esperado.
Por exemplo, quando um usurio executa um clculo, e o resultado correto exibido
na tela. Se o clculo e as operaes relacionadas no forem salvos no armazenamento
de dados, um segundo usurio ver os mesmos dados exibidos inicialmente pelo
primeiro. Isso significa que a semntica do aplicativo est errada. A identificao
desse tipo de erro poder ser muito difcil e confusa, pois exige que voc siga a
entrada, a sada e o fluxo da lgica do aplicativo para localizar o bug.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-8 Introduo
O que
Pontos
Os erro
rastream
Ao enco
identific
fornecid
Determ
H vrio
O c
Ele
H

aoDesenvolvimentonaW
e depura
s principais
s de programao
mento desses erro
ontrar um bug, vo
car a origem do e
das pelo Visual St
minando se o bu
os fatores que de
custo de correo
uma falha sria
uma soluo alte
WebcomoMicrosoftV
o?
o so geralmente
os denominado
oc precisar prim
erro e, finalmente
tudio 2010.
ug deve ser cor
eterminam se um
o do bug muito
a ou um pequeno
ernativa?
VisualStudio2010
e denominados b
o depurao.
meiro decidir se de
e, corrigir o bug u
rrigido
bug deve ou no
alto nesse estgio
o inconveniente?
bugs, e o proces
eve corrigi-lo, em
usando as ferrame
o ser corrigido:
o do desenvolvim

so de
seguida,
entas
mento?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-9

Observao: durante o desenvolvimento, a maioria dos bugs corrigida, mas nem sempre.
A correo de bugs no se aplica apenas ao software liberado, mas tambm a projetos
em desenvolvimento.
Localizao do bug sem usar o depurador
Quando voc decide corrigir um bug, necessrio localizar a sua origem. A maneira
mais simples de fazer isso comear a examinar a entrada e a sada do aplicativo e
verificar manualmente onde o bug comea a ocorrer. Ao encontrar uma nica classe
ou um nico mtodo responsvel pelo bug, voc poder comear a examinar cada
linha de cdigo manualmente ou comentando as linhas de cdigo para localizar
exatamente qual delas responsvel pelo bug. Junto com esse processo, voc poder
enviar a sada dos resultados intermedirios para um arquivo ou a interface do usurio;
dessa maneira, voc acabar localizando o bug. Em geral, voc procura e localiza o
bug em tempo de execuo, quando uma ao como uma entrada do usurio
ocasiona um erro ou um resultado inesperado.
Correo do bug
Aps localizar a(s) linha(s) de cdigo com problema, voc precisar corrigi-la(s) de
acordo com a especificao do mtodo ou da classe especfica com a qual est
trabalhando. Com base no tipo de bug encontrado, voc precisar determinar como
corrigi-lo. Alguns erros exigem correes simples, como a remoo de uma linha de
cdigo desnecessria, outros exigem uma nova expresso ou clculo. Tambm h
outros bugs que, aps uma ampla pesquisa, exigem que voc reestruture uma classe
ou mesmo um mdulo inteiro.
Embora seja totalmente possvel localizar e corrigir um bug manualmente, mais
conveniente corrigi-lo com o uso de vrias ferramentas. Na maioria das vezes, voc
economizar tempo se usar uma ou mais ferramentas para depurar o cdigo. O Visual
Studio 2010 fornece seu prprio depurador, bem como objetos e construes do
Microsoft .NET Framework para ajud-lo a corrigir bugs. A ferramenta Visual Debugger
o ajuda a definir pontos de interrupo e percorrer o cdigo linha a linha. Defina um
ponto de interrupo em uma linha de cdigo especfica e, quando essa linha for
atingida em tempo de execuo, o cdigo ser aberto no depurador. Nesse momento,
voc poder examinar o cdigo para corrigi-lo e continuar a percorrer o restante do
cdigo, linha a linha, se necessrio.
Pergunta: Como voc garantir que o seu programa ou cdigo no contenha erros?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-10 Introduo
Classe
Pontos
A classe
a depur
assere
sem afe
ocorre p
e das pr
compila
voc im
uma ins
no con

aoDesenvolvimentonaW
e Debug
s principais
e Debug fornece u
ar o cdigo impri
es. Usando a clas
tar o desempenh
porque, durante a
ropriedades da cl
ao. A classe Deb
mporta o namespa
stncia dela. No
ntm construtore
WebcomoMicrosoftV
um conjunto de m
imindo informa
sse Debug, voc p
ho e o tamanho de
a compilao no
lasse Debug no
bug est disponv
ace System.Diagn
possvel criar u
s, e voc no pod

VisualStudio2010
mtodos e proprie
es de depurao
pode garantir que
e cdigo da vers
modo Release, as
so compiladas n
vel globalmente p
nostics. Portanto
uma instncia da
de herd-la porqu
edades que podem
e marcando o c
e o cdigo seja ro
o do seu produt
s chamadas dos m
no assembly em t
para o aplicativo
, no necessrio
classe Debug po
ue ela selada.

m ajudar
digo com
obusto,
o. Isso
mtodos
tempo de
quando
o criar
orque ela
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-11
A tabela a seguir lista os mtodos da classe Debug.
Mtodo Descrio
Debug.Write Use este mtodo para escrever uma string de texto de
sua escolha ou escrever a sada do mtodo ToString de
um objeto. A mensagem ou a string de texto escrita nos
ouvintes de rastreamento na coleo Listeners.
Debug.WriteLine Use esse mtodo para escrever uma linha de texto de sua
escolha ou escrever a sada do mtodoToString de um
objeto. A mensagem ou a string de texto, seguida de um
terminador de linha, escrito nos ouvintes escutas de
rastreamento na coleo Listeners.
Debug.WriteIf Use este mtodo para escrever condicionalmente uma
string de texto de sua escolha ou para escrever
condicionalmente a sada do mtodoToString de um
objeto.
Debug.Print Use este mtodo para escrever uma linha de texto
formatada de sua escolha.
Debug.Assert Use este mtodo para exibir uma mensagem se uma condio
especificada for falsa.
A pilha de chamadas mostrada na caixa de dilogo durante
a chamada de Debug.Assert contm as mesmas informaes
que a janela Call Stack no Visual Studio 2010 durante a
interrupo de execuo de um aplicativo.


Observao: uma escuta produz uma sada formatada durante a depurao e o rastreamento.
A coleo Listeners contm escutas que monitoram a sada da depurao e do rastreamento.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-12 Introduo
Coleta
Pontos
Ao gara
as aes
solicita
aplicativ
informa
A cl
dep
qua
exe
inst
Com
de o
da j
a pa
aoDesenvolvimentonaW
a de informa
s principais
ntir que o seu ap
s necessrias, voc
es de pgina ha
vo. Usando as cla
aes de diagnst
lasse Debug. Voc
purao. As instru
ando voc compil
ecutado no depur
trues no sero
m a classe Debug
ouvintes de rastr
janela Output no
artir da sada de d
WebcomoMicrosoftV
aes de dep
plicativo siga o cam
c poder exibir i
abilitando o recur
asses Debug e Tr
tico em tempo de
c pode usar a cla
ues que usam a
la o aplicativo no
rador. Se voc cri
o includas no ass
g, as mensagens s
eamento, que, po
o Visual Studio 20
depurao.
VisualStudio2010
purao em t
minho necessrio
informaes de d
rso de rastreamen
raceContext, po
e execuo:
asse Debug para
a classe Debug s
modo Debug e q
ar uma compila
sembly compilad
o enviadas como
or padro, exibe a
010. Uma escuta
tempo de exe
o de execuo ou
diagnstico sobre
nto para a pgina
ossvel coletar e e
exibir informa
o executadas som
quando o aplicativ
o de liberao, a
do.
o sada para a cole
a sada no painel
produz a sada fo
ecuo

u realize
as
a ou o
exibir
es de
mente
vo Web
as
eo atual
Debug
ormatada
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-13
Ao usar a classe Debug para imprimir informaes de depurao e verificar sua
lgica, voc pode tornar o cdigo mais estvel sem afetar o desempenho do
produto final ou o tamanho do cdigo.
A classe TraceContext. A classe TraceContext permite que voc exiba
informaes em uma pgina da Web ou no log de rastreamento na memria.
Ela usada para capturar e apresentar detalhes da execuo sobre uma solicitao
da Web. Em um Web Form, a classe TraceContext pode ser acessada por meio
da propriedade Trace da classe Page. Lembre-se de que a propriedade Trace
diferente da classe Trace no namespace System.Diagnostics.

Observao: para usar a classe Debug, voc deve importar o namespace System.Diagnostics
para o seu arquivo de cdigo ou preceder a chamada do mtodo da classe com o namespace.
Pergunta: Quais so as duas configuraes padro no Visual Studio 2010?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-14 Introduo
Mto
Pontos
Para esc
os mto
Wr
sob
out
cate
Wr
adic
text
des
escr
cate

aoDesenvolvimentonaW
dos para imp
s principais
crever informae
odos Write e Wri
rite. Escreve uma
brecargas deste m
tras que escrevem
egoria pode ser u
riteLine. Escreve
ciona um caracter
to aps sua cham
ste mtodo duas
revem uma linha
egoria para agrup
WebcomoMicrosoftV
presso de in
es de depurao, v
iteLine.
string de texto n
mtodo duas qu
m uma linha de te
usado para agrupa
uma string de tex
re de nova linha n
mada ser escrito n
s que escrevem s
a de texto e o nom
par as mensagens

VisualStudio2010
nformaes
voc pode usar div
nos ouvintes de ra
ue escrevem s um
exto e o nome da
ar as mensagens
xto nos ouvintes
no final do texto,
na prxima linha
uma linha de te
me da categoria. V
s de sada.
de depura
versos mtodos, i
astreamento. H
ma linha de texto
categoria. O nom
de sada.
de rastreamento
de modo que tod
a. H quatro sobr
exto e duas outras
Voc pode usar o
o

incluindo
quatro
o e duas
me da
e
do novo
ecargas
s que
nome da
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-15
Os exemplos de cdigo a seguir mostram como usar os mtodos Write e WriteLine.
[Visual Basic]
Debug.Write("Writing a string of text...")
Debug.WriteLine("Writing a line of text...")
Debug.Write("Writing a string of text...", "Category 1")
Debug.WriteLine("Writing a line of text...", "Category 2")

[Visual C#]
Debug.Write("Writing a string of text...");
Debug.WriteLine("Writing a line of text...");
Debug.Write("Writing a string of text...", "Category 1");
Debug.WriteLine("Writing a line of text...", "Category 2");

Para escrever condicionalmente informaes de depurao, voc pode usar dois
outros mtodos: os mtodos WriteIf e WriteLineIf.
WriteIf. Escreve condicionalmente uma string de texto nos ouvintes de
rastreamento. H quatro sobrecargas deste mtodo duas que escrevem s uma
linha de texto e duas que escrevem uma linha de texto e o nome da categoria
que pode ser usado para agrupar as mensagens de sada.
WriteLineIf. Escreve condicionalmente uma string de texto nos ouvintes de
rastreamento e adiciona um caractere de nova linha no final do texto, de modo
que todo novo texto aps sua chamada ser escrito na prxima linha. H quatro
sobrecargas deste mtodo: duas que escrevem s uma linha de texto e duas que
escrevem uma nica linha de texto e o nome da categoria. Voc pode usar o
nome da categoria para agrupar as mensagens de sada. Os exemplos de cdigo a
seguir mostram como usar os mtodos WriteIf e WriteLineIf.
[Visual Basic]
Debug.WriteIf(Page.IsPostBack, "Writing a string of text...")
Debug.WriteLineIf(Page.IsPostBack, "Writing a line of text...")

[Visual C#]
Debug.WriteIf(Page.IsPostBack, "Writing a string of text...");
Debug.WriteLineIf(Page.IsPostBack, "Writing a line of text...");

Para formatar as informaes de depurao durante a impresso, voc pode usar o
mtodo Print, o qual utiliza o mtodo String.Format para converter o valor de um
objeto na representao de texto correspondente e, depois, inserir essa representao
em uma string de texto.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-16 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
O mtodo Print escreve uma linha de texto formatada nos ouvintes de rastreamento.
H duas sobrecargas desse mtodo, conforme mostrado nos exemplos de cdigo a
seguir.
[Visual Basic]
Debug.Print("Printing a line of text...")
Debug.Print("Printing a line a text, Postback = {0}", Page.IsPostBack)

[Visual C#]
Debug.Print("Printing a line of text...");
Debug.Print("Printing a line a text, Postback = {0}",
Page.IsPostBack);

Se precisar exibir uma mensagem ou a pilha de chamadas caso uma condio
especfica seja false, voc poder usar o mtodo Debug.Assert para verificar a
condio. O mtodo possui quatro sobrecargas, conforme mostrado nos exemplos
de cdigo a seguir.
[Visual Basic]
Debug.Assert(Page.IsPostBack)
Debug.Assert(Page.IsPostBack, "Brief Message")
Debug.Assert(Page.IsPostBack, "Brief Message", "Detail description
message")
Debug.Assert(Page.IsPostBack, "Brief Message", "Detail description
message", objectArrayToFormat)

[Visual C#]
Debug.Assert(Page.IsPostBack)
Debug.Assert(Page.IsPostBack, "Brief Message")
Debug.Assert(Page.IsPostBack, "Brief Message", "Detail description
message");
Debug.Assert(Page.IsPostBack, "Brief Message", "Detail description
message", objectArrayToFormat);

Uma caixa de dilogo exibe se o aplicativo executado com ou sem depurao e se
ele compilado no modo Debug ou Release. A caixa de dilogo gerada com a
sobrecarga do mtodo, que apresenta trs parmetros: condition, message e
description. A primeira sobrecarga mostrada acima tem apenas um parmetro condition
e mostra somente a pilha de chamadas. A sobrecarga seguinte mostra apenas o
parmetro message e a pilha de chamadas. A pilha de chamadas mostra os nomes das
funes na pilha, bem como os tipos e os valores de parmetro em determinado
momento.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Depu
Pontos
Se uma
identific
primeiro
das info
disso, vo
pretend
Debug.
quando
Habilit
Se desej
web.con
no elem
de cdig

rao de um
s principais
de suas pginas d
car a origem do p
o habilitar a depu
ormaes de depu
oc precisa decidi
de pausar a execu
Se tiver adicionad
o um ponto de int
tar a depurao
jar depurar seu ap
nfig. Voc precisar
mento system.web
go a seguir mostr
Soluodepro
m aplicativo W
da Web contiver u
problema. Para de
urao e, depois,
urao enquanto
ir se deseja adicio
uo, e, finalment
do pontos de inter
terrupo for atin
o do aplicativo
plicativo Web, voc
r localizar o elem
b e definir o valor
ram como definir

oblemascomaplicativosW
Web
um erro, voc pod
epurar um aplica
decidir se ser n
o aplicativo est
onar pontos de in
e, executar o apli
rrupo, voc pod
ngido.
Web
c dever habilita
mento compilatio
do atributo debug
r o valor do atribu
WebMicrosoftASP.NE
der usar a depura
tivo Web, voc p
ecessrio gerar u
sendo executado
terrupo no cd
icativo Web no m
der percorrer o c
ar a depurao no
on de abertura en
g como true. Os e
uto debug.
T 7-17

ao para
recisa
ma sada
o. Alm
digo, onde
modo
cdigo
o arquivo
contrado
exemplos
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-18 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
[Visual Basic]
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true">
...
</system.web>
<configuration>

[Visual C#]
<configuration>
<system.web>
<compilation debug="true">
...
</system.web>
<configuration>

Adio e remoo de pontos de interrupo
Se desejar pausar a execuo do aplicativo Web em pontos especficos do cdigo,
voc poder adicionar um ponto de interrupo. Primeiro, necessrio localizar a
linha de cdigo qual deseja adicionar o ponto de interrupo e, em seguida,
pressionar a tecla F9 ou clicar em Toggle Breakpoint no menu Debug. Para remover
o ponto de interrupo, pressione a tecla F9 novamente ou clique em Toggle
Breakpoint no menu Debug. Por padro, as linhas de cdigo com os pontos de
interrupo so realadas na cor de texto branca com a cor do plano de fundo
vermelho escuro.
Caso tenha vrios pontos de interrupo e decida remover todos eles, voc poder
pressionar CTRL+SHIFT+F9 ou clicar em Delete All Breakpoints no menu Debug
para remover todos os pontos de interrupo usando uma nica ao. Voc ser
solicitado a confirmar essa ao.
Execuo no modo Debug
Para executar o aplicativo no modo Debug, voc dever pressionar F5 ou clicar em
Start Debugging no menu Debug. Se a depurao ainda no tiver sido habilitada
nesse momento, voc ser solicitado a habilit-la quando a caixa de mensagem
Debugging Not Enabled for exibida. Na caixa de mensagem, clique em OK para
habilitar a depurao. Isso modificar o arquivo web.config.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-19
Percorrer o cdigo
Quando o depurador atingir a linha com o ponto de interrupo, ocorrer uma
pausa na execuo. Voc poder percorrer todo o cdigo e examinar a lgica do
aplicativo.
Pressione F10 ou clique em Step Over no menu Debug se quiser executar a linha
de cdigo atual sem depurar todo o cdigo subjacente (como, por exemplo, um
mtodo na mesma classe ou um mtodo em outra classe). A execuo pausar na
prxima linha de cdigo.
Pressione F11 ou clique em Step Into no menu Debug se quiser depurar todo o cdigo
subjacente da linha de cdigo atual a ser executada, se houver alguma. A execuo
pausar na prxima linha de cdigo no cdigo subjacente. Por padro, as propriedades
so normalmente depuradas parcialmente, pois, em geral, no contm uma lgica
complexa, mas possvel depur-las totalmente. Voc pode clicar com o boto direito
do mouse na linha de cdigo que est chamando a propriedade getter ou setter e,
em seguida, no menu de contexto, apontar para Step Into Specific e clicar em
NamespaceName.ClassName.set_PropertyName.
Uso das janelas de variveis do depurador
O depurador do Visual Studio 2010 fornece vrias janelas, conhecidas, coletivamente,
como janelas de variveis, para exibio de informaes de variveis durante a
depurao. Essas janelas so as seguintes: Autos, Locals, Watch e Watch1 a Watch
4. Cada janela de varivel contm uma grade com trs colunas: Name, Value e Type.
As janelas Autos e Locals exibem os nomes das variveis adicionadas automaticamente
na coluna Name.
Na coluna Name da janela Watch, voc pode adicionar suas prprias variveis ou
expresses. As colunas Value e Type exibem o valor e o tipo de dados do resultado
da expresso ou da varivel correspondente. Voc pode editar o valor de uma varivel
na coluna Value.
Para exibir uma janela de varivel
No menu Debug, escolha Windows e, em seguida, escolha o nome da janela de
varivel que deseja exibir. Para exibir esses itens de menu, o depurador deve
estar em execuo ou no modo de interrupo; no ser possvel acessar nem
exibir essas janelas no modo design.

Pergunta: Como voc examinar uma varivel ou um valor da varivel durante uma
sesso de depurao?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-20 Introduo
Depu
Pontos
A depur
um serv
servidor
esse tip
ou se de
Monito
Ao exec
Remota
2010 se
remoto
Por pad
no Win
poder
usando
iniciar e
aoDesenvolvimentonaW
rao remot
s principais
rao remota o
vidor separado. E
res diferentes, a p
o de depurao s
esejar testar o apl
or de depura
cutar a depurao
a ou msvsmon.ex
conecta. Voc po
ou execut-lo rem
ro, o Monitor de
dows. Para depu
configurar o mon
o Remote Debug
esse assistente na
WebcomoMicrosoftV
ta
processo de depu
Ela permite que vo
partir de uma ni
se no for possve
licativo durante s
o remota
o remota, voc po
xe que um pe
ode instalar o Mon
motamente em u
e Depurao Remo
urar no ASP.NET
nitor para ser exe
gger Configuration
a pasta Visual Stu
VisualStudio2010
urao de aplicat
oc depure aplica
ica estao de tra
el executar seu ap
sua implantao e
oder usar o Mon
queno aplicativo
nitor de Depurao
ma pasta compar
ota executado co
T ou em outro am
ecutado como um
n Wizard do Visu
dio Tools, no me
tivos Web execut
ativos Web em v
abalho. Voc pode
plicativo Web loc
em um servidor W
nitor de Depura
ao qual o Visual
o Remota no com
rtilhada.
omo um aplicativo
mbiente de servido
m servio do Win
ual Studio 2010. V
enu Start.

tados em
rios
er usar
calmente
Web.
o
Studio
mputador
o baseado
or, voc
dows
Voc pode
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-21
Antes de iniciar a depurao remota, necessrio configurar os ambientes no host
do depurador e no computador remoto. Voc tambm deve considerar os recursos
de segurana. Por exemplo, o servidor remoto deve conceder acesso ao usurio que
executa a depurao.
Configurao da depurao remota
O Visual Studio 2010 oferece suporte depurao remota de um computador para
outro. Na depurao remota, o computador host poder ser qualquer plataforma que
oferea suporte ao Visual Studio 2010. Alguns dos motivos para que voc execute a
depurao remota so quando o programa que est sendo depurado est no servidor
Web ou quando o programa apresenta um desempenho diferente em seu computador.
Pergunta: Em quais cenrios voc executar a depurao remota?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-22 Introduo
Lio 2
Rastream
Rastream
execu
monitor
Web po
a sada d
program
um amb
de rastr
Web po
toda sa
quando
rastream
2010 fo
Esta li
em um
aoDesenvolvimentonaW
mento no
mento o proces
o de um aplicativ
rar a execuo do
odem ajud-lo a id
do programa. Iss
ma. Em geral, o ra
biente semelhant
reamento podem
orque, por padro
da corresponden
o encontrar um er
mento ser til qu
ornece a classe Tr
o descreve como
aplicativo Web.
WebcomoMicrosoftV
o ASP.NET
sso de recebimen
vo Web em temp
o aplicativo Web. E
dentificar problem
so inclui o registro
astreamento usa
e onde no pos
permanecer no c
o, o rastreamento
nte ignorada. As
rro ou se houver
uando no for po
raceContext com
usar a classe Trac
VisualStudio2010
T
nto de mensagens
po de execuo
Essas mensagens
mas ou analisar o
o de detalhes de
ado em um ambi
ssvel executar a d
cdigo quando vo
o no est habilita
ssim, voc poder
um problema de
ossvel usar o dep
m essa finalidade.
ceContext para im
s informativas sob
ou seja, uma fo
informativas do a
o desempenho se
excees e do flu
iente de produo
depurao. As ins
oc libera o aplica
ado, o que signifi
habilitar o rastr
desempenho. Po
purador. O Visual
mplementar o rastr

bre a
orma de
aplicativo
em afetar
uxo do
o ou em
strues
ativo
ca que
reamento
ortanto, o
l Studio
reamento
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-23
Objetivos da lio
Depois de concluir esta lio, voc ser capaz de:
Descrever o processo de rastreamento.
Descrever a classe TraceContext.
Executar o rastreamento em um aplicativo Web.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-24 Introduo
O que
Pontos
O rastre
execu
Web co
execu
o rastre
o rastre
rastream
se desej
Rastrea
O ASP.N
informa
bastand
que voc
remov-
varivei
simples
aoDesenvolvimentonaW
e rastreame
s principais
eamento o proc
o de um aplicativ
ntiver um erro, e
o e verificar quan
amento. Para ras
amento e, depois
mento durante a e
ja usar o rastream
amento do ASP
NET introduz um
aes de diagnst
do habilit-la para
c grave instrue
-las do aplicativo a
is ou estruturas e
smente rastrear o
WebcomoMicrosoftV
ento?
cesso de recebime
vo Web em temp
e voc desejar ana
nto tempo foi gast
trear um aplicativ
s, decidir se preci
execuo desse a
mento no nvel de
P.NET
ma funo chamad
tico sobre uma n
a a pgina ou o ap
es de depurao d
ao implant-lo no
m uma pgina, d
caminho de exec
VisualStudio2010
ento de mensagen
po de execuo. S
alis-lo, ou se qui
to nos diversos m
vo Web, primeiro
isa obter uma sad
aplicativo. Voc ta
e pgina ou de ap
da rastreamento,
nica solicitao d
plicativo. O rastre
diretamente no c
s servidores de pr
declarar se uma co
cuo da pgina o
ns informativas s
Se uma de suas p
ser seguir o cami
mtodos, voc pod
o voc precisar h
da das informa
ambm precisar
plicativo.
a qual permite ex
de uma pgina AS
eamento tambm
cdigo sem precis
roduo. Voc po
ondio atendid
ou do aplicativo.

sobre a
ginas da
inho de
der usar
habilitar
es de
decidir
xibir
SP.NET
m permite
sar
de gravar
da ou
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-25
Para que essas mensagens e outras informaes de rastreamento sejam coletadas e
exibidas, voc deve habilitar o rastreamento para a pgina ou o aplicativo. Quando
o rastreamento habilitado, dois eventos ocorrem:
O ASP.NET acrescenta vrias tabelas de informaes de diagnstico
imediatamente aps a sada da pgina. As informaes tambm sero enviadas
a um aplicativo visualizador de rastreamento caso voc tenha habilitado o
rastreamento para o aplicativo.
O ASP.NET exibe as informaes de diagnstico personalizadas na tabela Trace
Information dos dados de desempenho acrescentados.

Pergunta: Para que serve a funcionalidade de rastreamento?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-26 Introduo
Classe
Pontos
Voc po
uma pg
rastream
registro
est pro
meio da
Na verd
todas as
nunca d
infraestr
Alm di

aoDesenvolvimentonaW
e TraceConte
s principais
ode usar a classe
gina ou no log de
mento, use a cole
s de rastreamento
ontamente dispon
a propriedade Tra
dade, a classe Trac
s informaes esp
deve criar uma in
rutura do .NET F
isso, a classe Trac
WebcomoMicrosoftV
ext
TraceContext pa
e rastreamento na
o de mensagen
o associados sol
nvel quando voc
ace da classe Page
ceContext do tip
ecficas de HTTP
stncia dessa clas
Framework; ela n
ceContext no p

VisualStudio2010
ara gravar mensa
a memria. Para
ns TraceRecords,
licitao atual. Co
trabalha em um
e, no necessri
po System.Web.H
sobre uma solicit
sse porque o con
o deve ser usad
ode ser herdada,
gens de rastream
implementar o lo
que uma cole
omo a classe Trac
Web Form ASP.N
io criar uma instn
HttpContext, que e
tao HTTP. Porta
nstrutor oferece su
a diretamente no
pois selada.

mento em
og de
o de
eContext
NET por
ncia dela.
encapsula
anto, voc
uporte
o cdigo.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-27
Para gravar informaes no log de rastreamento, voc pode usar qualquer um dos
mtodos da classe TraceContext apresentados a seguir:
Write. Grava uma mensagem de rastreamento no log de rastreamento. H trs
sobrecargas do mtodo Write, sendo que todas gravam uma mensagem de
rastreamento no log de rastreamento. A segunda sobrecarga especifica o nome
da categoria que receber a mensagem de rastreamento. A terceira sobrecarga
apresenta um terceiro parmetro do tipo Exception, o qual indica que voc pode
fornecer uma exceo definida pelo usurio ou capturada.
Warn. O mtodo Warn semelhante ao mtodo Write. No entanto,
diferentemente do mtodo Write, todos os avisos aparecem no log como texto
vermelho.

Os exemplos de cdigo a seguir mostram como gravar mensagens de rastreamento.
[Visual Basic]
Trace.Write("Trace Message")
Trace.Write("Category 1", "Trace Message")
Trace.Write("Category 2", "Trace Message", New Exception("En Exception
was thrown, because..."))

[Visual C#]
Trace.Write("Trace Message");
Trace.Write("Category 1", "Trace Message");
Trace.Write("Category 2", "Trace Message", new Exception("En Exception
was thrown, because..."));

Se voc habilitar o rastreamento, a sada ser acrescentada pgina na qual o cdigo
foi executado.
Na pgina de informaes de rastreamento, o parmetro de categoria permite
classificar e agrupar as mensagens de rastreamento. Por exemplo, voc pode definir a
ordem de classificao das mensagens de rastreamento para que as mensagens da
mesma categoria sejam exibidas juntas. O atributo TraceMode pode ser usado para
especificar a ordem em que as mensagens de rastreamento devem ser exibidas.
Defina TraceMode como SortByTime para classificar as mensagens de rastreamento
na ordem em que so processadas.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-28 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
O cdigo a seguir mostra como definir o atributo TraceMode como SortByCategory
para classificar as mensagens de rastreamento pelas categorias especificadas nas
chamadas dos mtodos Warn e Write.
<%@ Page ... Trace="True" TraceMode="SortByCategory" %>

Voc pode usar a propriedade IsEnabled da classe TraceContext para alterar
dinamicamente o estado do rastreamento em uma pgina.
Instruo TraceContext.IsEnabled
A classe TraceContext tem uma propriedade Boolean chamada IsEnabled, que
permite chamar os mtodos Write e Warn apenas quando o rastreamento est
habilitado. Os exemplos de cdigo a seguir ilustram como usar a instruo
Trace.IsEnabled.
[Visual Basic]
If Trace.IsEnabled Then
Trace.Write("Tracing is enabled!")
End If

[Visual C#]
if (Trace.IsEnabled)
{
Trace.Write("Tracing is enabled!");
}

Voc tambm pode usar a propriedade IsEnabled para alterar dinamicamente o estado
do rastreamento de uma pgina. Os seguintes exemplos de cdigo ilustram isso.
[Visual Basic]
Trace.IsEnabled = False

[Visual C#]
Trace.IsEnabled = false;


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-29
A captura de tela a seguir exibe as informaes de rastreamento relativas a uma
pgina de um aplicativo Web:

Voc pode usar a classe TraceContext para acrescentar mensagens a categorias
especficas de rastreamento e obter um conjunto de registros de rastreamento no
final da execuo da solicitao para processamento personalizado.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-30 Introduo
Rastre
Pontos
Voc po
o rastre
como tr
Habilit
Os exem
de pgin
[Visua
<%@ Pa
[Visua
<%@ Pa
aoDesenvolvimentonaW
eamento de
s principais
ode habilitar o ras
amento no nvel
rue para o Web F
tao do rastre
mplos de cdigo
na.
al Basic]
age Language="V
al C#]
age Language="C
WebcomoMicrosoftV
um aplicativ
streamento no nv
de pgina, voc d
Form.
eamento de apl
a seguir mostram
VB" Trace="true"
C#" Trace="true"
VisualStudio2010
vo Web
vel de pgina ou d
definir o atributo
icativos Web
m como habilitar o
" %>
" %>
de aplicativo. Para
Trace da diretiv
o rastreamento em

a habilitar
va Page
m nvel


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-31
Quando voc usa o rastreamento no nvel de pgina, todas as mensagens de
rastreamento so acrescentadas ao final da pgina da Web, o que permite exibi-las
rapidamente durante a exibio da pgina.
Para habilitar o rastreamento no nvel de aplicativo, necessrio configurar o arquivo
web.config para o aplicativo Web e adicionar o elemento trace. O cdigo a seguir
mostra como habilitar o rastreamento no nvel de aplicativo.
<configuration>
...
<system.web>
<trace enabled="true" />
...
</system.web>
</configuration>

Se precisar exibir as informaes de rastreamento durante a execuo do aplicativo,
voc poder usar os mtodos da classe TraceContext.
Quando voc habilita o rastreamento no nvel de aplicativo, ele habilitado para
todas as pginas do aplicativo Web. Esse tipo de rastreamento tambm oferece
flexibilidade quando voc grava instrues de rastreamento. Por exemplo, com o
rastreamento no nvel de pgina, todas as mensagens de rastreamento so
acrescentadas pgina. Entretanto, com o rastreamento no nvel de aplicativo, as
mensagens de rastreamento podem ser gravadas na pgina ou na memria. As
instrues de rastreamento salvas na memria podem ser acessadas por meio do
visualizador de rastreamento no nvel de aplicativo trace.axd. Para exibir esse
visualizador, digite a URL do aplicativo e adicione trace.axd a ela por exemplo,
http://www.contoso.com/trace.axd.
Quando uma pgina do aplicativo Web solicitada, ela coleta informaes de
rastreamento e executa todas as instrues de rastreamento contidas nela. Voc pode
exibir a sada do rastreamento no visualizador de rastreamento. O visualizador lista
as solicitaes na ordem em que foram processadas, e voc poder escolher uma
solicitao especfica de qualquer uma das pginas do aplicativo solicitadas.
Resultados do rastreamento
Os resultados do rastreamento no nvel de pgina so acrescentados ao final da
pgina .aspx para a qual esto habilitados. Os resultados do rastreamento contm
muitas informaes, alm das mensagens personalizadas criadas com as instrues
Trace.Write e Trace.Warn.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-32 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Categorias de rastreamento
Os resultados do rastreamento contm vrias categorias de informaes. A tabela a
seguir lista cada categoria e fornece uma descrio do tipo de informao que ela
contm.
Category Descrio
Request Details Contm informaes sobre a solicitao: identificao da
sesso (ID), tempo de solicitao, tipo de solicitao e status
da solicitao.
Trace Information Contm a sada de instrues de rastreamento padro e
personalizadas. A coluna From First(s) contm o tempo total
de execuo at o rastreamento ser executado, e a coluna
From Last(s) exibe a durao do incremento.
Essa seo muito til para depurao. As informaes de
tempo localizadas aqui so valiosas durante a criao de perfis
e a pesquisa de mtodos no aplicativo cuja execuo muito
demorada.
Control Tree Lista todos os itens contidos na pgina, junto com o tamanho
de cada item.
Mostra uma representao HTML da rvore de Controle
ASP.NET. Mostra o ID exclusivo de cada controle, o seu tipo
de tempo de execuo, o nmero de bytes necessrios para
renderiz-lo e os bytes necessrios em ViewState e
ControlState. As trs colunas que mostram o peso de cada
controle indicam o nmero de bytes ocupados em ViewState
ou ControlState pelo controle em questo. Voc dever saber
o nmero de bytes usados por cada controle, especialmente
se gravar controles personalizados. Voc desejar que os seus
controles retornem o menor nmero possvel de bytes para
manter o peso geral da pgina mnimo.
Session State Contm informaes sobre os valores armazenados no estado
da Sesso, se houver algum.
Application State Contm informaes sobre os valores armazenados no estado
do Aplicativo, se houver algum.
Cookies Collection Exibe uma lista de cookies em uso para a solicitao e a resposta.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-33
(continuao)
Category Descrio
Headers Collection Exibe uma lista de pares de nome/valor do cabealho da
mensagem de solicitao e resposta.
Form Collection Exibe uma lista de controles e dos respectivos valores no
formulrio postado.
Querystring Collection Exibe uma lista de valores passados na URL.
Server Variables Lista de todas as variveis de servidor e dos seus respectivos
valores.

Voc pode exibir informaes de rastreamento na parte inferior de cada pgina.
A captura de tela a seguir exibe as solicitaes no visualizador de rastreamento:

Pergunta: Como voc exibir as informaes de rastreamento?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-34 Introduo
Laborat
aplicativ

Observa
program
de prog
estiver u
na Seo
Introdu
Neste la
em temp
voc im
estado d

aoDesenvolvimentonaW
rio: Solu
os Web M
ao: voc pode e
mao Visual Basic
ramao, consulte
sando o Visual C#
o 2 da pgina do l
uo
aboratrio, voc d
po de execuo, a
mplementar o rast
da sesso, estado
WebcomoMicrosoftV
uo de p
Microsoft
executar tarefas ne
ou Visual C#. Se e
e as etapas fornecid
como linguagem d
aboratrio.
depurar um aplic
adicionando pont
treamento no apli
do aplicativo e v

VisualStudio2010
problemas
t ASP.NET
este laboratrio usa
estiver usando o Vi
das na Seo 1 da
de programao, c
cativo Web ASP.N
tos de interrupo
icativo Web para
variveis do servid
s com
T
ando a linguagem
isual Basic como li
pgina do laborat
consulte as etapas f
NET a fim de local
o e inspees. Al
exibir informa
dor.

de
nguagem
trio. Se
fornecidas
lizar erros
m disso,
es, como
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-35
Objetivos
Depois de concluir este laboratrio, voc ser capaz de:
Depurar um aplicativo Web para exibir informaes de tempo de execuo.
Habilitar e implementar o rastreamento em um aplicativo Web.

Configurao do laboratrio
Neste laboratrio, voc usar o ambiente de mquina virtual disponvel. Antes de
iniciar o laboratrio, voc deve:
Inicie a mquina virtual 10560A-GEN-DEV e depois faa logon usando as
seguintes credenciais:
Nome de usurio: Aluno
Senha: Pa$$w0rd


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-36 Introduo
Cenr
Voc tra
possui u
informa
precisa
problem
adiciona
Voc tam
identific
aplicativ
preparo
de desem
Como n
voc dev
exibir o

aoDesenvolvimentonaW
rio de labora
abalha como dese
uma base global d
aes dos clientes
depurar o aplicat
mas lgicos em su
ando instrues d
mbm precisa ha
car possveis erro
vo Web conclud
onde a depurao
mpenho durante a
no tem permisso
ve habilitar o rastr
s tempos relativo
WebcomoMicrosoftV
atrio
envolvedor na Co
de clientes. Sua o
s. Para manter as
tivo Web de gere
ua funcionalidade
de sada, pontos
abilitar o rastream
os no cdigo aps
da no mdulo ant
o no possvel. N
a carga ou a rende
o para acrescentar
reamento no nvel
s ao Web Form In

VisualStudio2010
ontoso, Ltd, uma
organizao usa u
informaes corr
enciamento do cli
e. Voc precisa de
de interrupo e
mento usando o a
s a implantao d
terior foi implanta
No entanto, apare
erizao do Web F
r informaes de r
l de aplicativo e, d
nsertCustomer.as
a grande organiza
um site para geren
retas dos usurio
iente a fim de loc
epurar o aplicativ
inspees aprop
arquivo web.confi
do aplicativo. A ve
ada em um servid
entemente h um p
Form InsertCustom
rastreamento a cad
depois, verificar se
spx.

ao que
nciar as
os, voc
calizar
vo
priados.
ig para
erso do
dor de
problema
mer.aspx.
da pgina,
consegue
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-37
Seo 1: Visual Basic
Exerccio 1: Depurao de um aplicativo Web
Estas so as principais tarefas do exerccio:
1. Abrir um site ASP.NET existente.
2. Habilitar a depurao do projeto Web CustomerManagement.
3. Adicionar instrues de sada de depurao ao controle do usurio.
4. Localizar e corrigir um bug.

Tarefa 1: Abrir um site ASP.NET existente
Faa logon em 10560A-GEN-DEV como Aluno, com a senha Pa$$w0rd.
Abra o Microsoft Visual Studio 2010.
Abra a soluo CustomerManagement, localizada na pasta
D:\Labfiles\Starter\M7\VB.

Tarefa 2: Habilitar a depurao do projeto Web CustomerManagement
Abra o arquivo web.config do projeto Web CustomerManagement.
Defina o atributo debug do elemento compilation como true.
<compilation debug="true" strict="false" explicit="true"
targetFramework="4.0" />
Salve e feche o arquivo web.config.

Tarefa 3: Adicionar instrues de sada de depurao ao controle do
usurio
Abra o controle do usurio Customer.
Importe o namespace System.Diagnostics.
Imports System.Diagnostics
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-38 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
No manipulador de eventos Page_Load, envie a mensagem Page Postback
detected in Page_Load para os ouvintes de rastreamento, quando a pgina for
carregada em resposta a um postback.
Debug.WriteLine("Page Postback detected in Page_Load")
No manipulador de eventos Page_Load, envie a mensagem No Page Postback
detected in Page_Load aos ouvintes de rastreamento, quando a pgina no for
carregada em resposta a um postback.
Debug.WriteLineIf(Not Page.IsPostBack, "No Page Postback detected
in Page_Load")
No final do manipulador de eventos Page_Unload, envie a mensagem Page
has been unloaded para os ouvintes de rastreamento.
Debug.WriteLine("Page has been unloaded")
No final do evento Click do controle CustomerInsertButton, envie a mensagem
Customer has been inserted in CustomerInsertButton_Click para os ouvintes
de rastreamento.
Debug.WriteLine("Customer has been inserted in
CustomerInsertButton_Click");
No final do mtodo privado populateUI, envie a mensagem UI controls have
been populated para os ouvintes de rastreamento.
Debug.WriteLine("UI controls have been populated")
No final do mtodo privado instantiateCustomerObject, envie a mensagem
Customer object has been instantiated para os ouvintes de rastreamento.
Debug.WriteLine("Customer object has been instantiated")
Salve o arquivo de cdigo de controle do usurio.
Adicione um item padro ao controle Country DropDownList.
Na janela Customer.ascx.vb, clique com o boto direito do mouse e, em
seguida, clique em View Designer.
Na janela Customer.ascx, clique no controle
CustomerCountryDropDownList.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-39
Clique no boto Smart Tag e, em seguida, clique em Edit Items.
Na caixa de dilogo ListItem Collection Editor, clique em Add.
No painel ListItem properties, na caixa Text, digite USA e clique em OK.
Salve e feche o arquivo de controle do usurio.
Execute o aplicativo Web no modo Debug.
Verifique a sada dos mtodos Page_Load, Page_Unload e
instantiateCustomerObject, criando um novo cliente e exibindo o painel Output
das janelas de variveis do depurador.

Observao: no painel Debug da janela Output, observe que a sada das instrues Debug
exibida. Talvez seja necessrio rolar a janela para cima para ver as instrues.
Verifique a sada do manipulador de eventos Click do controle
CustomerInsertButton, criando um novo cliente com as informaes apresentadas
a seguir e, em seguida, clicando no boto Insert:
First Name: Claus
Last Name: Hansen
Address: 4567 Main St.
Zip Code: 98052
City: Buffalo
State: NY
Web Address: http://www.cohowinery.com
Feche o Windows Internet Explorer.


Observao: no painel Debug da janela Output, observe que a mensagem Customer has
been inserted in CustomerInsertButton_Click exibida.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-40 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa 4: Localizar e corrigir um bug
Execute o aplicativo Web CustomerManagement para testar sua funcionalidade.
Crie um novo cliente usando as seguintes informaes:
Nome: Claus
Sobrenome: Hansen
Endereo: 4567 Main St.
CEP: 98052
Cidade: Buffalo
Estado: NY
Endereo Web: http://www.cohowinery.com

Observao: observe que o valor da caixa Credit Limit est definido como 0 por padro.
Clique no boto Insert.

Observao: observe que o valor da caixa Credit Limit est definido como 50, o que est
incorreto.
Feche o Windows Internet Explorer.
Adicione um ponto de interrupo ao mtodo do manipulador de eventos
Page_Load na linha de cdigo que chama o mtodo instantiateCustomerObject.
instantiateCustomerObject();
Execute o aplicativo Web no modo Debug.
Na janela Contoso Customer Management Windows Internet Explorer, no
menu Customers, clique em New.
Faa uma depurao total do mtodo instantiateCustomerObject.
Faa uma depurao parcial da primeira linha de cdigo e verifique se h um
postback no mtodo instantiateCustomerObject.
Adicione uma inspeo propriedade Text do controle
CustomerCreditLimitTextBox.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-41
Continue a depurar o aplicativo Web.
Crie um novo cliente usando as informaes apresentadas a seguir e clique no
boto Insert:
Nome: Claus
Sobrenome: Hansen
Endereo: 4567 Main St.
CEP: 98052
Cidade: Buffalo
Estado: NY
Endereo Web: http://www.cohowinery.com

Observao: observe que, na janela Watch 1, o valor da propriedade de texto
CustomerCreditLimitTextBox est definido como 0.
Execute a depurao parcial da chamada para o mtodo
instantiateCustomerObject.
Execute a depurao parcial da chamada para o mtodo populateUI.

Observao: na janela Watch1, observe que o valor de CustomerCreditLimitTextBox
foi alterado para 50.
Interrompa a depurao no projeto Web.
Examine o cdigo do mtodo populateUI que atribui um valor propriedade
CustomerCreditLimitTextBox.Text.

Observao: observe que o valor 50 no atribudo propriedade CreditLimit aqui.
Execute novamente o aplicativo Web no modo Debug para examinar a classe
Customer.
Crie um novo cliente e ignore o primeiro ponto de interrupo continuando
com a execuo do programa.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-42 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Crie um novo cliente usando as informaes apresentadas a seguir e clique no
boto Insert:
Nome: Claus
Sobrenome: Hansen
Endereo: 4567 Main St.
CEP: 98052
Cidade: Buffalo
Estado: NY
Endereo Web: http://www.cohowinery.com
Faa uma depurao total do mtodo instantiateCustomerObject.
Faa uma depurao parcial da primeira linha de cdigo e verifique se h postback.
Faa uma depurao total do mtodo que cria a instncia do objeto Customer.

Observao: a depurao total da instanciao da ao do objeto Customer poder levar
um certo tempo.
Faa uma depurao parcial de cada linha de cdigo na janela do cdigo
Customer.vb, at chegar linha de cdigo do construtor apresentada a seguir
que inicializa a propriedade CreditLimit.
Me.CreditLimit = creditLimit
Examine a atribuio do valor passado para a propriedade CreditLimit.
Localize a etapa que adiciona o valor extra 50 caixa CreditLimit do membro
privado customerCreditLimit.
Me.customerCreditLimit = value + 50
Exiba as funes e as chamadas de procedimento existentes na pilha atualmente
exibindo a janela Call Stack.
Interrompa a depurao no projeto Web.
Remova o valor extra da propriedade customerCreditLimit.
Me.customerCreditLimit = value
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-43
Salve e feche o arquivo de classe.
Execute o aplicativo Web para verificar o valor de Credit Limit.
Crie um novo cliente usando as seguintes informaes:
Nome: Claus
Sobrenome: Hansen
Endereo: 4567 Main St.
CEP: 98052
Cidade: Buffalo
Estado: NY
Endereo Web: http://www.cohowinery.com
Clique no boto Insert.

Observao: observe que o valor da caixa Credit Limit ainda 0.
Feche o Windows Internet Explorer.

Resultados: Depois de concluir este exerccio, voc ter habilitado a depurao do
projeto Web CustomerManagement, adicionado instrues de sada de depurao ao
controle do usurio e corrigido um bug na funcionalidade do aplicativo Web
CustomerManagement.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-44 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio 2: Rastreamento de um aplicativo Web
Estas so as principais tarefas do exerccio:
1. Habilitar o rastreamento em nvel de aplicativo do projeto Web
CustomerManagement.
2. Implementar o rastreamento de aplicativo.

Tarefa 1: Habilitar o rastreamento em nvel de aplicativo do projeto
Web CustomerManagement
Adicione um elemento de rastreamento ao arquivo web.config como o primeiro
elemento em system.web e defina o valor do atributo enabled como true.
<trace enabled="true" />
Salve e feche o arquivo web.config.

Tarefa 2: Implementar o rastreamento de aplicativo
Execute o aplicativo Web e exiba os detalhes do rastreamento.
Crie um novo cliente usando as informaes apresentadas a seguir e clique no
boto Insert:
Nome: Claus
Sobrenome: Hansen
Endereo: 4567 Main St.
CEP: 98052
Cidade: Buffalo
Estado: NY
Endereo Web: http://www.cohowinery.com
Exiba os detalhes do rastreamento do aplicativo usando a URL
http://localhost:1111/CustomerManagement/trace.axd no navegador.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-45
Exiba os detalhes da pgina da Web InsertCustomer.aspx.
Na janela http://localhost:1111/CustomerManagement/trace.axd Windows
Internet Explorer, clique em View Details de /InsertCustomer.aspx
correspondente ao Verb, GET.

Observao: role a janela para baixo para ver toda a sada das informaes, incluindo a
rvore de controle, o estado da sesso e do aplicativo, a coleo de formulrios e strings
de consulta, e as variveis de servidor da pgina da Web InsertCustomer.aspx. Verifique
se possvel ver a seo Trace Information, que fornece informaes sobre o tempo gasto
para carregar, renderizar e descarregar o Formulrio da Web.
Feche o Windows Internet Explorer.

Tarefa 3: Desativar a mquina virtual e reverter as alteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Resultados: Depois de concluir este exerccio, voc ter habilitado e implementado o
rastreamento no nvel de aplicativo para o aplicativo Web CustomerManagement.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-46 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Seo 2: Visual C#
Exerccio 1: Depurao de um aplicativo Web
Estas so as principais tarefas do exerccio:
1. Abrir um site ASP.NET existente.
2. Habilitar a depurao do projeto Web CustomerManagement.
3. Adicionar instrues de sada de depurao ao controle do usurio.
4. Localizar e corrigir o bug.

Tarefa 1: Abrir um site ASP.NET existente
Faa logon em 10560A-GEN-DEV como Aluno, com a senha Pa$$w0rd.
Abra o Microsoft Visual Studio 2010.
Abra a soluo CustomerManagement, localizada na pasta
D:\Labfiles\Starter\M7\CS.

Tarefa 2: Habilitar a depurao do projeto Web CustomerManagement
Abra o arquivo web.config do projeto Web CustomerManagement.
Defina o atributo debug do elemento compilation como true.
<compilation debug="true" targetFramework="4.0">
Salve e feche o arquivo web.config.

Tarefa 3: Adicionar instrues de sada de depurao ao controle do
usurio
Abra o controle do usurio Customer.
Importe o namespace System.Diagnostics para o controle do usurio.
using System.Diagnostics;

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-47
No manipulador de eventos Page_Load, envie a mensagem Page Postback
detected in Page_Load para os ouvintes de rastreamento, quando a pgina for
carregada em resposta a um postback.
Debug.WriteLine("Page Postback detected in Page_Load");
No manipulador de eventos Page_Load, envie a mensagem No Page Postback
detected in Page_Load aos ouvintes de rastreamento, quando a pgina no for
carregada em resposta a um postback.
Debug.WriteLineIf(Not Page.IsPostBack, "No Page Postback detected
in Page_Load");
No final do manipulador de eventos Page_Unload, envie a mensagem Page has
been unloaded para aos ouvintes de rastreamento.
Debug.WriteLine("Page has been unloaded");
No final do evento Click do controle CustomerInsertButton, envie a mensagem
Customer has been inserted in CustomerInsertButton_Click para os ouvintes
de rastreamento.
Debug.WriteLine("Customer has been inserted in
CustomerInsertButton_Click");
No final do mtodo privado populateUI, envie a mensagem UI controls have
been populated para os ouvintes de rastreamento.
Debug.WriteLine("UI controls have been populated");
No final do mtodo privado instantiateCustomerObject, envie a mensagem
Customer object has been instantiated para os ouvintes de rastreamento.
Debug.WriteLine("Customer object has been instantiated");
Salve o arquivo de cdigo de controle do usurio.
Adicione um item padro ao controle Country DropDownList.
Na janela Customer.ascx.cs, clique com o boto direito do mouse e, em
seguida, clique em View Designer.
Na janela Customer.ascx, clique no controle
CustomerCountryDropDownList.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-48 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Clique no boto Smart Tag e, em seguida, clique em Edit Items.
Na caixa de dilogo ListItem Collection Editor, clique em Add.
No painel ListItem properties, na caixa Text, digite USA e clique em OK.
Salve e feche o arquivo de controle do usurio.
Execute o aplicativo Web no modo Debug.
Verifique a sada dos mtodos Page_Load, Page_Unload e
instantiateCustomerObject, criando um novo cliente e exibindo o painel Output
das janelas de variveis do depurador.

Observao: no painel Debug da janela Output, observe que a sada das instrues Debug
exibida. Talvez seja necessrio rolar a janela para cima para ver as instrues.
Verifique a sada do manipulador de eventos Click do controle
CustomerInsertButton, criando um novo cliente com as informaes
apresentadas a seguir e depois clique no boto Insert:
First Name: Claus
Last Name: Hansen
Address: 4567 Main St.
Zip Cod: 98052
City: Buffalo
State: NY
Web Address: http://www.cohowinery.com
Feche o Windows Internet Explorer.


Observao: no painel Debug da janela Output, observe que a mensagem Customer has
been inserted in CustomerInsertButton_Click exibida.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-49
Tarefa 4: Localizar e corrigir um bug
Execute o aplicativo Web CustomerManagement para testar sua funcionalidade.
Crie um novo cliente usando as seguintes informaes:
Nome: Claus
Sobrenome: Hansen
Endereo: 4567 Main St.
CEP: 98052
Cidade: Buffalo
Estado: NY
Endereo Web: http://www.cohowinery.com

Observao: observe que o valor da caixa Credit Limit est definido como 0 por padro.
Clique no boto Insert.

Observao: observe que o valor da caixa Credit Limit est definido como 50, o que est
incorreto.
Feche o Windows Internet Explorer.
Adicione um ponto de interrupo ao mtodo do manipulador de eventos
Page_Load na linha de cdigo que chama o mtodo instantiateCustomerObject.
instantiateCustomerObject();
Execute o aplicativo Web no modo Debug.
Faa uma depurao total do mtodo instantiateCustomerObject.
Execute uma depurao parcial na primeira linha de cdigo e verifique se h
um postback no mtodo instantiateCustomerObject.
Adicione uma inspeo propriedade Text do controle
CustomerCreditLimitTextBox.
Continue a depurar o aplicativo Web.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-50 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Crie um novo cliente usando as informaes apresentadas a seguir e clique no
boto Insert:
Nome: Claus
Sobrenome: Hansen
Endereo: 4567 Main St.
CEP: 98052
Cidade: Buffalo
Estado: NY
Endereo Web: http://www.cohowinery.com

Observao: observe que, na janela Watch 1, o valor da propriedade de text
CustomerCreditLimitTextBox est definido como 0.
Execute a depurao parcial da chamada para o mtodo
instantiateCustomerObject.
Execute a depurao parcial da chamada para o mtodo populateUI.

Observao: na janela Watch1, observe que o valor de CustomerCreditLimitTextBox
foi alterado para 50.
Interrompa a depurao no projeto Web.
Examine o cdigo do mtodo populateUI que atribui um valor propriedade
CustomerCreditLimitTextBox.Text.

Observao: observe que o valor 50 no atribudo propriedade CreditLimit aqui.
Execute novamente o aplicativo Web no modo Debug para examinar a classe
Customer.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-51
Crie um novo cliente e ignore o primeiro ponto de interrupo, continuando
com a execuo do programa. Crie um novo cliente usando as informaes a
seguir e clique no boto Insert:
First Name: Claus
Last Name: Hansen
Address: 4567 Main St.
Zip Code: 98052
City: Buffalo
State: NY
Web Address: http://www.cohowinery.com
Faa uma depurao total do mtodo instantiateCustomerObject.
Execute uma depurao parcial na primeira linha de cdigo e verifique se h
postback.
Faa uma depurao total do mtodo que cria a instncia do objeto Customer.

Observao: a depurao total da instanciao da ao do objeto Customer poder levar
um certo tempo.
Execute uma depurao parcial em cada linha de cdigo na janela do cdigo
Customer.cs, at chegar linha de cdigo do construtor apresentada a seguir
que inicializa a propriedade CreditLimit.
this.CreditLimit = creditLimit;
Examine a atribuio do valor passado para a propriedade CreditLimit.
Localize a etapa que adiciona o valor extra 50 caixa Credit Limit do membro
particular customerCreditLimit.
this.customerCreditLimit = value + 50;
Exiba as funes e as chamadas de procedimento existentes na pilha atualmente
exibindo a janela Call Stack.
Interrompa a depurao no projeto Web.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-52 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Remova o valor extra da propriedade customerCreditLimit.
this.customerCreditLimit = value;
Salve e feche o arquivo de classe.
Execute o aplicativo Web para verificar o valor de Credit Limit.
Crie um novo cliente usando as informaes apresentadas a seguir e clique no
boto Insert:
Nome: Claus
Sobrenome: Hansen
Endereo: 4567 Main St.
CEP: 98052
Cidade: Buffalo
Estado: NY
Endereo Web: http://www.cohowinery.com

Observao: observe que o valor da caixa Credit Limit ainda 0.
Feche o Windows Internet Explorer.

Resultados: Depois de concluir este exerccio, voc ter habilitado a depurao do
projeto Web CustomerManagement, adicionado instrues de sada de depurao ao
controle do usurio e corrigido um bug na funcionalidade do aplicativo Web
CustomerManagement.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-53
Exerccio 2: Rastreamento de um aplicativo Web
Estas so as principais tarefas do exerccio:
1. Habilitar o rastreamento em nvel de aplicativo do projeto Web
CustomerManagement.
2. Implementar o rastreamento de aplicativo.

Tarefa 1: Habilitar o rastreamento em nvel de aplicativo do projeto
Web CustomerManagement
Adicione um elemento de rastreamento ao arquivo web.config como o primeiro
elemento em system.web e defina o valor do atributo enabled como true.
<trace enabled="true" />
Salve e feche o arquivo web.config.

Tarefa 2: Implementar o rastreamento de aplicativo
Execute o aplicativo Web e exiba os detalhes do rastreamento.
Crie um novo cliente usando as informaes apresentadas a seguir e clique no
boto Insert:
Nome: Claus
Sobrenome: Hansen
Endereo: 4567 Main St.
CEP: 98052
Cidade: Buffalo
Estado: NY
Endereo Web: http://www.cohowinery.com
Exiba os detalhes do rastreamento do aplicativo usando a URL
http://localhost:1110/CustomerManagement/trace.axd no navegador. Exiba
os detalhes da pgina da Web InsertCustomer.aspx.
Na janela http://localhost:1110/CustomerManagement/trace.axd Windows
Internet Explorer, clique em View Details de /InsertCustomer.aspx
correspondente ao Verb, GET.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-54 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

Observao: role a janela para baixo para ver toda a sada das informaes, incluindo a
rvore de controle, o estado da sesso e do aplicativo, a coleo de formulrios e strings
de consulta, e as variveis de servidor da pgina da Web InsertCustomer.aspx. Verifique
se possvel ver a seo Trace Information, que fornece informaes sobre o tempo gasto
para carregar, renderizar e descarregar o Formulrio da Web.
Feche o Windows Internet Explorer.

Resultados: Depois de concluir este exerccio, voc ter habilitado e implementado o
rastreamento no nvel de aplicativo para o aplicativo Web CustomerManagement.
Tarefa 3: Desativar a mquina virtual e reverter as alteraes
Depois de concluir o laboratrio, desligue a mquina virtual 10560A-GEN-DEV e
reverta as alteraes.
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Revis
Pergun
1. Qua
2. Com
cd

o do labora
ntas e respostas
ais so as etapas n
mo voc ativar e
digo?
Soluodepro
atrio
s de reviso
necessrias para h
explicitamente o r

oblemascomaplicativosW
habilitar o rastream
rastreamento em
WebMicrosoftASP.NE
mento no nvel d
m um componente
T 7-55

e pgina?
e usando
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
7-56 Introduo
Reviso d
complem
Pergun
1. Qu
Sys
2. Qua
3. Com
4. Qu

aoDesenvolvimentonaW
do mdu
mentares
ntas e respostas
al a diferena en
stem.Diagnostics
al a diferena en
mo voc habilita
ais so os tipos d
WebcomoMicrosoftV
ulo e info
s de reviso
ntre o objeto Sys
s.Debug?
ntre o rastreament
o rastreamento n
de erros que voc

VisualStudio2010
rmaes
stem.Diagnostics
o no nvel de pgi
no nvel de aplica
precisa tratar ao
s.Trace e o objeto
ina e no nvel de a
ativo?
desenvolver apli

o
aplicativo?
icativos?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
SoluodeproblemascomaplicativosWebMicrosoftASP.NET 7-57
Problemas e cenrios do mundo real
1. Em um mtodo, voc deseja gravar o valor de uma varivel nos ouvintes de
rastreamento, mas somente se uma condio especfica for verdadeira. Qual a
maneira mais fcil de implement-lo?
Chamar o mtodo Debug.WriteIf.
2. Em um servidor de produo, voc precisa iniciar o rastreamento, mas no deseja
que os usurios vejam a sada do rastreamento em cada pgina solicitada por
eles. Como voc implementar isso?
Habilitando o rastreamento no nvel de aplicativo e usando o visualizador de
rastreamento trace.axd para exibir a sada do rastreamento.

Prticas recomendadas
Mencione algumas prticas recomendadas no contexto da sua prpria situao
corporativa.
Voc deve sempre gravar as mensagens nos ouvintes de rastreamento que no
devem ser includas em uma verso de liberao do seu aplicativo usando o
objeto Debug.
Sempre desabilite o rastreamento em um aplicativo Web antes da implantao
em um servidor de produo.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S



U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-1
Mdulo8
GerenciamentodedadosemumaplicativoWeb
MicrosoftASP.NET4.0
Contedo:
Lio1:VisogeraldoADO.NET 8-3
Lio2:Conexocomumbancodedados 8-16
Lio3:Gerenciamentodedados 8-29
Laboratrio:gerenciamentodedadosemumaplicativoWebASP.NET4.0 8-48

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-2 Introduo
Visoge
O Micro
baseado
Microso
ambient
para voc
Conside
tecnolog
um arqu
Este m
aplicativ
no Micr

aoDesenvolvimentonaW
eraldom
osoft ADO.NET
os no Microsoft .N
oft SQL Server e
tes desconectados
c integrar acesso
erando o alcance
gia de dados com
uitetura desconec
dulo explica o q
vo Web Microsof
rosoft Visual Stud
WebcomoMicrosoftV
mdulo
uma tecnologia q
NET Framework a
arquivos XML. O
s como a Internet
o a dados e manip
da Internet como
mo o ADO.NET tor
ctada.
que o ADO.NET
ft ASP.NET usand
dio 2010.

VisualStudio2010
que voc pode usa
a fontes de dados
O ADO.NET foi pr
t e fornece uma m
pulao de dados
o meio de comuni
rna os dados aces
T e como possv
do as ferramentas
ar para conectar a
como bancos de
rojetado para ope
maneira simples e
aos seus aplicativ
icao de dados, u
ssveis e atualizv
vel incorpor-lo em
s que esto integr

aplicativos
dados
rar em
flexvel
vos Web.
uma
eis em
m um
radas
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Lio1
Visoge
Devido
estar fam
Web Fo
Framew
usar o A
tambm
dois com
e no ace
Esta li
Objetiv
Depois
Des
Des
Des
eraldoAD
importncia do
miliarizado com o
orms ASP.NET. O
work, que auxilia e
ADO.NET para ac
m em sistemas de b
mponentes no AD
esso a fontes de d
o explica o que
vos da lio
de concluir esta l
screver o ADO.NE
screver o modelo
screver o ADO.NE
Gerenciamentodedad
DO.NET
armazenamento
os mtodos de ace
ADO.NET faz pa
em operaes de
cessar e gerenciar
bancos de dados
DO.NET (provedo
dados.
o ADO.NET e c
lio, voc ser ca
ET.
o de objetos do AD
ET Entity Framew
dosemumaplicativoWeb
de dados em apli
esso a dados que
arte da BCL (Base
acesso e manipul
dados em fontes
relacionais, como
ores de dados e Da
como ele funcion
apaz de:
DO.NET.
work.
bMicrosoftASP.NET4.
icativos Web, voc
o ADO.NET forn
Class Library) do
lao de dados. V
de dados no rela
o o SQL Server 20
ataSet) ajudam na
a.
0 8-3

c precisa
nece para
o .NET
Voc pode
acionais e
008. Os
a conexo
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-4 Introduo
Oque
Pontos
O ADO.
em um
dados. M
dados n
que est
Server 2
ADO.N
O ADO
um amb
baseado
dados e
O ADO.
conecta

aoDesenvolvimentonaW
eoADO.N
s principais
.NET faz parte da
conjunto de comp
Mesmo que o AD
no relacionais, ele
o armazenados e
2008.
NET
.NET foi especific
biente desconecta
os na Internet. O
entre o banco de d
.NET consistem e
da.
WebcomoMicrosoftV
ET?
a BCL (Base Class
ponentes que voc
O.NET possa ser
e utilizado princ
em sistemas de ba
camente projetad
ado, o que faz de
ADO.NET usa o
dados e seu aplic
em duas camadas

VisualStudio2010
s Library) do .NET
c pode usar para
usado para acess
cipalmente para a
ancos de dados re
do para conexes
le uma boa opo
XML como form
cativo Web.
: uma camada de
T Framework, con
a acessar e manipu
sar dados em font
acessar e gerencia
elacionais, como o
s relacionadas a d
o para aplicativos
mato para transmi
sconectada e uma

nsistindo
ular
tes de
ar dados
o SQL
dados em
s Web
isso de
a camada
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-5
Camada desconectada
A camada desconectada consiste em vrias classes para o armazenamento de dados
e relaes. A classe DataSet a classe principal que representa um cache de dados
na memria. DataSet contm uma coleo de um ou mais objetos DataTable, que
consistem em linhas e colunas de dados, bem como as informaes de chaves
primrias, chaves estrangeiras, restries e relaes sobre os dados nesses objetos
DataTable. A classe DataSet pode ser vista como uma representao de banco de
dados na memria.
Camada conectada
A camada conectada gerencia o trfego de dados de e para a fonte de dados e
especfica para uma fonte de dados, como o SQL Server ou um arquivo XML. Ela
tambm conhecido como o provedor de dados. O ADO.NET acompanha vrios
provedores de dados prontos para uso, incluindo:
Provedor de Dados SQL Server .NET Framework, para acessar bancos de
dados do SQL Server 7.0 e verses mais recentes.
Provedor de Dados OLE DB .NET Framework, para acessar qualquer fonte
de dados OLE DB para a qual voc possua um provedor OLE DB.
Provedor de Dados ODBC .NET Framework, para acessar qualquer fonte
de dados ODBC para a qual voc possua um driver ODBC.

Vrios fornecedores, incluindo a IBM e a Oracle, criaram implementaes de
Provedores de Dados .NET Framework. A maioria das fontes de dados dos
principais fornecedores facilita o acesso aos dados com o uso do ADO.NET.
Pergunta: qual o principal uso do ADO.NET?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-6 Introduo
Mode
Pontos
O mode
para ace
a camad
relacion
Camad
A camad
Constra
e pode s
us-la co
locais p
uma fon

aoDesenvolvimentonaW
elodeobjeto
s principais
elo de objetos AD
essar dados a par
da desconectada,
nadas, e a camada
da desconectad
da desconectada
aint, DataRelatio
ser usada para ge
om vrias fontes
ara o aplicativo. C
nte de dados usan
WebcomoMicrosoftV
osdoADO.N
DO.NET fornece u
rtir de diferentes
que geralment
a conectada, tamb
da
inclui as classes
on e DataView. E
erenciar dados na
de dados ou dad
Como opo, voc
ndo a camada co

VisualStudio2010
NET
uma infraestrutur
fontes. Esse mod
e formada pela cl
bm conhecida co
DataTable, Data
Ela independent
a memria. Como
dos XML ou para
c pode conectar
nectada.
ra que voc pode
delo possui duas c
lasse DataSet e c
omo provedor de
aRow, DataColum
te de uma fonte d
o resultado, pos
gerenciar dados
a camada descon

e usar
camadas:
classes
e dados.
mn,
de dados
ssvel
que so
nectada a
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-7
A camada desconectada consiste em tipos comuns para o armazenamento de
dados e relaes, que residem no namespace System.Data. A tabela a seguir
lista esses tipos comuns.
Tipo Descrio
Constraint Representaumarestrioquepodeserimpostaemumou
maisobjetosDataColumn.Umarestrioumaregrausada
paramanteraintegridadedosdadosemumatabela.Aclasse
baseabstrataConstraintpossuiduasclassesderivadasque
sousadasparachavesprimriase/ouvaloresdecoluna
exclusivascomousodaclasseUniqueConstraint.Aclasse
ForeignKeyConstraintdeterminaseosvaloresnastabelas
relacionadastambmseroexcludos,definidoscomovalores
null,definidoscomovalorespadro,ousenenhumaao
deveserrealizada.
DataColumn RepresentaoesquemadeumanicacolunanoDataTable.
VriosobjetosDataColumnsousadosparaespecificara
estruturaouoesquemaumDataTable.
DataRelation Representaumarelaodepai/filhoentredoisobjetos
DataTable.UmobjetoDataRelationvinculadoaum
mesmonmerodeobjetosDataColumnemdoisobjetos
DataTablediferentes.OobjetoDataRelationpossibilita
anavegaoentretabelasdedadosrelacionadas.
DataRow RepresentaumalinhadedadosemumobjetoDataTable.
DataSet Umobjetocontinergeralquerepresentaumbancodedados
namemria,consistindodeumoumaisobjetosDataTablee
dezerooumaisobjetosDataRelation.Essaclasseserializvele
podesertransportadaviaserviosderede.
DataTable Representaumatabeladedadosnamemria.Aestruturados
dadosformadaporumoumaisobjetosDataColumn,eos
dadossosalvosemobjetosDataRow.Essaclasseserializvel
epodesertransportadaviaserviosderede.
DataTableReader ObtmocontedodeumoumaisobjetosDataTableno
formatodeumoumaisconjuntosderesultadossomentede
leituraeexclusivamenteprogressivos.
DataView RepresentaumaexibiopersonalizadadeDataTable,que
podeserutilizadaparaoperaesdeclassificao,filtragem,
pesquisa,edioenavegao.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-8 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Camada conectada
A camada conectada do ADO.NET fornece o link entre a fonte de dados e a camada
desconectada, que um objeto DataSet e/ou um objeto DataTable. Os tipos base
comuns encontram-se no namespace System.Data.Common.
A camada conectada inclui classes como DataAdapter, Connection, Command e
DataReader. Os Provedores de Dados .NET Framework foram projetados para
manipulao de dados e para um rpido acesso a dados do tipo somente leitura e
exclusivamente progressivo.
O objeto Connection fornece conectividade com uma fonte de dados.
O objeto Command permite acesso a comandos de banco de dados, que podem
ser usados para retornar dados, modificar dados, executar procedimentos
armazenados e enviar ou recuperar informaes em parmetros.
A classe DataReader fornece um fluxo de dados de alto desempenho a partir
da fonte de dados.
A classe DataAdapter fornece a ponte entre o objeto DataSet e a fonte de
dados. A classe DataAdapter usa objetos Command para executar comandos
SQL na fonte de dados, tanto para carregar o objeto DataSet com dados quanto
para reconciliar as alteraes que foram efetuadas nos dados no objeto
DataSet de volta a essa fonte de dados.

A tabela a seguir lista os tipos base comuns fornecidos pela camada conectada.
Nomedotipo Descriodotipo
DbCommand RepresentaumainstruoSQLouumprocedimentoarmazenado
aserexecutadocombaseemumafontededados.Essetipo
geralmentedivididoemquatroobjetosdecomandodiferentes
paraoperaesdegerenciamentodedados:umparaselecionar
dados,outroparainseri-los,umterceiroparaatualiz-loseo
quartoparaexclu-los.
DbConnection Representaaconexorealcomumafontededadoseseconecta
usandoumastringdeconexo.
DbDataAdapter Representaumaconexodebancodedadoseumconjunto
decomandosSQLquesousadosparapreencherDataSet
e/ouDataTableeatualizarafontededados.Essetipoa
ponteentreoladodoclienteedoservidoreutilizaumobjeto
deconexoeobjetosdecomandoparaexecutarsuastarefas.
DbDataReader Lumfluxodelinhasdotiposomenteleituraeexclusivamente
progressivoapartirdeumafontededados.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-9
Os tipos listados na tabela anterior so todos tipos base abstratos que precisam ser
herdados. Portanto, voc deve utilizar os seguintes tipos para uma implementao
de fonte de dados especfica:
Com o Provedor de Dados SQL Server .NET Framework, use as classes
SqlDataAdapter, SqlDataReader, SqlCommand e SqlConnection, todas
localizadas no namespace System.Data.SqlClient.
Com o Provedor de Dados OLE DB .NET Framework, use as classes
OleDbDataAdapter, OleDbDataReader, OleDbCommand e OleDbConnection,
todas localizadas no namespace System.Data.OleDb.
Com o Provedor de Dados ODBC .NET Framework, use as classes
OdbcDataAdapter, OdbcDataReader, OdbcCommand e OdbcConnection,
todas localizadas no namespace System.Data.Odbc.
Com o Provedor de Dados Oracle .NET, use as classes OracleDataAdapter,
OracleDataReader, OracleCommand e OracleConnection, todas localizadas
no namespace System.Data.OracleClient. Utilize o Provedor de Dados
Oracle .NET se quiser estabelecer uma conexo com um banco de dados
Oracle verso 8.1.7 ou mais recente.


Observao:nopossvelmisturarecorresponderostiposapartirdacamadaconectada.
Todosostiposusadosparaogerenciamentodedadoscomumanicafontededados
devemserprovenientesdomesmoProvedordeDados.NET.
Pergunta: como voc ir trabalhar com DataSet para popular dados?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-10 Introduo
Viso
Pontos
O Entity
suporte
parte da
Arquitet
bastante
modelar
solucion
utilizad
por vri
At mes
precisam
escrever

aoDesenvolvimentonaW
geraldaest
s principais
y Framework u
e ao desenvolvime
a plataforma de d
tos e desenvolved
e no sentido de a
r as entidades, as
nando e tambm
os para armazena
ios sistemas de ar
smo os aplicativo
m balancear os re
r um cdigo de a
WebcomoMicrosoftV
truturadeen
m conjunto de te
ento de aplicativo
dados da Microso
dores de aplicativ
alcanar dois obje
s relaes e a lgi
precisam trabalh
ar e recuperar os
rmazenamento, c
s que operam co
equisitos desse si
aplicativo eficiente

VisualStudio2010
ntidadesdoA
ecnologias no AD
os de software or
oft.
vos orientados a d
etivos muito difer
ica dos problema
har com os mecan
dados. Esses dad
cada qual com seu
m um nico siste
istema com rela
e e que possa ser
ADO.NET
DO.NET que ofere
rientados a dados
dados tm se esfo
rentes: eles precis
as corporativos qu
nismos de dados
dos podem se est
us prprios proto
ema de armazena
o aos requisitos
r mantido.

ecem
s e faz
orado
sam
ue esto
que so
tender
ocolos.
amento
de se
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-11
Com o Entity Framework, voc pode trabalhar com dados no formato de
propriedades e objetos especficos de um domnio (como clientes e endereos de
clientes), sem precisar se preocupar com as tabelas e colunas de banco de dados
subjacentes nas quais esses dados esto armazenados. Isso possvel por meio da
elevao do nvel de abstrao no qual voc pode trabalhar enquanto manipula
dados e por meio da reduo do cdigo que necessrio para criar e manter
aplicativos orientados a dados. Como o Entity Framework um componente
do .NET Framework, aplicativos Entity Framework podem ser executados em
qualquer computador no qual o .NET Framework 4 esteja instalado.
Modelos conceituais
Um padro de design comum e antigo para a modelagem de dados a diviso do
modelo de dados em trs partes: um modelo conceitual, um modelo lgico e um
modelo fsico. O modelo conceitual define as entidades e as relaes no sistema que
est sendo modelado. O modelo lgico de um banco de dados relacional normaliza as
entidades e as relaes em tabelas com restries de chaves estrangeiras. O modelo
fsico aborda as capacidades de um mecanismo de dados especfico, especificando
detalhes de armazenamento como particionamento e indexao.
O modelo fsico refinado por administradores de banco de dados para melhorar o
desempenho, mas os programadores que escrevem o cdigo do aplicativo basicamente
se limitam a trabalhar com o modelo lgico, escrevendo consultas SQL e chamando
procedimentos armazenados. Voc pode usar modelos conceituais como uma
ferramenta para capturar e comunicar os requisitos de um aplicativo. Frequentemente,
esses modelos conceituais so utilizados como diagramas inertes que so visualizados
e discutidos nos estgios preliminares de um projeto e depois, abandonados. Muitas
equipes de desenvolvimento desconsideram a criao de um modelo conceitual e
comeam especificando tabelas, colunas e chaves em um banco de dados relacional.
O Entity Framework d vida a modelos conceituais, permitindo que voc consulte
entidades e relaes nesses modelos e, ao mesmo tempo, possa contar com o Entity
Framework para converter essas operaes em comandos especficos de fontes de
dados. Isso liberta os aplicativos das dependncias embutidas em cdigo em uma
fonte de dados especfica. O modelo conceitual, o modelo de armazenamento e o
mapeamento entre os dois so expressos em uma especificao externa, conhecida
como EDM (Modelo de Dados de Entidade). O modelo de armazenamento e os
mapeamentos podem ser alterados conforme necessrio, sem exigir alteraes no
modelo conceitual, nas classes de dados ou no cdigo do aplicativo. Como os modelos
de armazenamento so especficos de cada provedor, voc pode trabalhar com um
modelo conceitual consistente entre vrias fontes de dados.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-12 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Um EDM definido pelos trs seguintes arquivos de modelo e mapeamento, que
possuem extenses de nome de arquivo correspondentes:
Arquivo de linguagem de definio de esquema conceitual (.csdl). Define o
modelo conceitual.
Arquivo de linguagem de definio de esquema de armazenamento (.ssdl).
Define o modelo de armazenamento, que tambm chamado modelo lgico.
Arquivo de linguagem de especificao de mapeamento (.msl). Define o
mapeamento entre o modelo conceitual e o modelo de armazenamento.

O Entity Framework usa esses arquivos de mapeamento e modelos baseados
em XML para transformar, criar, ler, atualizar e excluir operaes em entidades
e relaes no modelo conceitual para operaes equivalentes na fonte de dados.
Alm disso, o EDM oferece suporte ao mapeamento de entidades no modelo
conceitual em procedimentos armazenados na fonte de dados.
Mapeamento de objetos para dados
A programao orientada a objetos representa um desafio para a interao com
sistemas de armazenamento de dados. Frequentemente, a organizao de classes
reflete com preciso a organizao de tabelas de bancos de dados relacionais.
Porm, esse ajuste no perfeito. Vrias tabelas normalizadas muitas vezes
correspondem a uma nica classe, e as relaes entre classes so representadas
de maneira diferente das relaes entre tabelas. Por exemplo, para representar o
cliente de uma ordem de venda, uma classe Order usa uma propriedade que
contm uma referncia a uma instncia de uma classe Customer, mas uma linha
da tabela Order em um banco de dados contm uma coluna de chaves estrangeiras
ou um conjunto de colunas com um valor que corresponde a um valor de chave
primria na tabela Customer. Uma classe Customer pode ter uma propriedade
denominada Orders que contm uma coleo de instncias da classe Order, mas a
tabela Customer em um banco de dados no tem uma coluna comparvel.
Solues existentes ajudam a fechar essa lacuna, que costuma ser chamada
incompatibilidade de impedncia, fazendo o mapeamento apenas de propriedades e
classes orientadas a dados para tabelas e colunas relacionais. Em vez de adotar essa
abordagem tradicional, o Entity Framework mapeia tabelas e colunas relacionais e
restries de chaves estrangeiras em modelos lgicos para entidades e relaes em
modelos conceituais. Isso proporciona maior flexibilidade na definio de objetos e
na otimizao do modelo lgico.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-13
As ferramentas de EDM geram classes de dados extensveis que se baseiam no
modelo conceitual. Essas classes so classes parciais que podem ser estendidas
com membros adicionais inseridos pelo desenvolvedor. As classes que so geradas
para um modelo conceitual especfico so derivadas de classes base que fornecem
Servios de Objeto para a materializao de entidades como objetos e para o
acompanhamento e a gravao das alteraes. Voc pode usar essas classes para
trabalhar com as entidades e as relaes como objetos que so relacionados por
propriedades de navegao.
Acesso e alterao de dados de entidade
O Entity Framework permite que os aplicativos acessem e alterem os dados que
so representados como entidades e relaes no modelo conceitual. Os Servios
de Objeto usam o EDM para converter consultas de objetos com base em tipos
de entidade representados no modelo conceitual em consultas especficas de uma
fonte de dados. Os resultados dessas consultas so materializados em objetos que
os Servios de Objeto gerenciam.
Controle EntityDataSource
O controle EntityDataSource oferece suporte a cenrios de associao de dados
com base no EDM. A especificao do EDM representa os dados como conjuntos
de entidades e relaes. O Entity Framework usa o EDM no mapeamento relacional
de objetos e em outros cenrios, como os Servios de Dados ADO.NET. Os usurios
acostumados com o modelo em tempo de design dos controles de associao de
dados ASP.NET percebero que a programao do controle EntityDataSource
semelhante dos outros controles de fonte de dados.
O controle EntityDataSource gerencia as operaes de leitura, de criao, de atualizao
e de excluso com uma fonte de dados em nome dos controles associados a dados na
pgina. O controle EntityDataSource funciona com grades editveis, formulrios com
classificao e filtragem controladas pelo usurio, controles de lista suspensa com
associao bidirecional e pginas mestras de detalhes. O controle EntityDataSource
capaz de obter valores de parmetros de consulta a partir de controles de pgina,
parmetros de consulta acrescentados ao URI da pgina, cookies e outros objetos de
parmetros ASP.NET.
Ferramentas de EDM
As ferramentas de EDM foram projetadas para ajudar voc a criar aplicativos Entity
Framework. Com elas, voc pode criar um modelo conceitual a partir de um banco
de dados existente e depois visualizar e editar graficamente esse modelo conceitual.
Outra opo primeiro criar um modelo conceitual graficamente e depois gerar um
banco de dados que oferea suporte ao seu modelo. Em qualquer um dos casos, voc
pode atualizar seu modelo automaticamente quando o banco de dados subjacente
alterado e gerar automaticamente um cdigo de camada de objetos para o seu aplicativo.
Os processos de gerao de banco de dados e de gerao do cdigo de camada de
objetos so personalizveis.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-14 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Junto com o tempo de execuo do Entity Framework, o .NET Framework 4 inclui o
EDM Generator. Esse utilitrio de linha de comando pode estabelecer uma conexo
com uma fonte de dados usando um provedor de dados .NET Framework especfico
de fonte de dados e pode gerar os arquivos de modelo conceitual (.csdl), de modelo
de armazenamento (.ssdl) e de mapeamento (.msl) que so utilizados pelo Entity
Framework. O EDM Generator pode validar um modelo existente e gerar um arquivo
de cdigo Microsoft Visual Basic ou Microsoft Visual C# contendo as classes de
objetos geradas a partir de um arquivo de modelo conceitual (.csdl). Ele tambm
pode gerar um arquivo de cdigo Visual Basic ou Visual C# contendo as exibies
pr-geradas para um modelo existente.
Componentes da Plataforma de Dados
No .NET Framework 4, o ADO.NET Entity Framework fornece os componentes da
Plataforma de Dados que esto listados na tabela a seguir.
Componente Descrio
EDM Umaespecificaodedesignquedefinedadosdeaplicativos
comoconjuntosdeentidadeserelaes.Osdadosnessemodelo
oferecemsuporteparaomapeamentorelacionaldeobjetose
paraaprogramabilidadededadosalmdasfronteirasdo
aplicativo.TiposdedadoserelaesdeEDMsodefinidosem
ummodeloconceitual.Trata-sedeumesquemaXMLescritoem
CSDL(linguagemdedefiniodeesquemaconceitual).Voc
utilizaomodeloconceitualparacriarclassesprogramveisque
representamdadosdeaplicativos.possvelestenderesses
objetosconformenecessrioparaoferecersuporteadiversas
necessidadesdeaplicativos.
ObjectServices Permitemqueosprogramadoresinterajamcomomodelo
conceitualatravsdeumconjuntodeclassesCLR(Common
LanguageRuntime).Essasclassespodemserautomaticamente
geradasapartirdomodeloconceitualoupodemserdesenvolvidas
independentementepararefletiremaestruturadomodelo
conceitual.ServiosdeObjetotambmfornecemsuportede
infraestruturaparaoEntityFramework,incluindoservioscomo
gerenciamentodeestado,acompanhamentodealteraes,
resoluodeidentidades,carregamentoenavegaoderelaes,
propagaodealteraesdeobjetosparamodificaesdebanco
dedadosesuporteparaacriaodeconsultasparaoEntitySQL.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-15
(continuao)
Componente Descrio
LINQtoEntities UmaimplementaodoLINQ(consultaintegradalinguagem)
quepermitecriarconsultasfortementetipadascombaseno
contextodoEntityFramework,utilizandoexpressesLINQe
operaesdeconsultapadroLINQ.OLINQtoEntitiespermite
queosdesenvolvedorestrabalhemcombaseemummodelo
conceitualcomummapeamentorelacionaldeobjetosbastante
flexvelembancosdedadosSQLServeredeterceiros.
EntitySQL Umalinguagemdeconsultabaseadaemtextoprojetadapara
interaocomumEDM.OEntitySQLumdialetoSQLque
contmconstruesparaconsultaemtermosdeconceitosde
modelagemdenvelsuperior,comoherana,tiposcomplexos
erelaesexplcitas.VoctambmpodeusaroEntitySQL
diretamentecomoServiosdeObjeto.
EntityClient Umprovedordedados.NETFrameworkquepermiteainterao
comumEDM.EntityClientsegueopadrodeprovedordedados
do.NETFrameworkdeexporobjetosEntityConnectione
EntityCommandqueretornamEntityDataReader.EntityClient
funcionacomalinguagemEntitySQL,proporcionandoum
mapeamentoflexvelparaprovedoresdedadosespecficosde
armazenamento.
EDMTools OEntityFrameworkforneceferramentasdelinhadecomando,
assistentesedesignersparafacilitaracriaodeaplicativosEDM.
OcontroleEntityDataSourceoferecesuporteacenriosde
associaodedadoscombasenoEDM.Asuperfciede
programaodocontroleEntityDataSourcesemelhantea
outroscontrolesdefontededadosnoMicrosoftVisualStudio.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-16 Introduo
Lio2
Conexo
Voc po
banco d
de dado
integrad
DataRe
Alguma
uso do A
Esta li
como cr
de dado
Objetiv
Depois
Cria
Hab
aoDesenvolvimentonaW
ocomum
ode usar o ADO.N
de dados) a objeto
os pode ser estabe
do) do Visual Stud
ader para estabel
s das tarefas com
ADO.NET so sel
o explica como tr
riar uma conexo
os SQL Server.
vos da lio
de concluir esta l
ar uma conexo c
bilitar o transpor
WebcomoMicrosoftV
mbancod
NET para conectar
os e controles em
elecida com o uso
dio 2010. Voc ta
lecer uma comuni
muns que podem s
lecionar, inserir, a
rabalhar programa
para acessar os da
lio, voc ser ca
com uma fonte d
te de dados entre
VisualStudio2010
dedados
r dados em uma f
Web Forms. Um
o do IDE (ambien
ambm pode usar
icao de dados e
ser executadas pro
atualizar e excluir
aticamente com d
ados que esto arm
apaz de:
de dados.
e clientes e servid
fonte de dados (c
ma conexo com u
nte de desenvolvim
r os objetos DataA
entre o cliente e o
ogramaticamente
dados.
ados usando o AD
mazenados em um
dores.

omo um
uma fonte
mento
Adapter e
o servidor.
e com o
DO.NET e
m banco
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Cria
Pontos
Voc po
com um
conexo
Cria
O Serve
conecte
de objet
explor
se encon
especial

odeumaco
s principais
ode usar o IDE do
ma fonte de dados
o tambm pode se
o de uma cone
er Explorer (que fa
a fontes de dado
tos existentes e vi
rado, o estado da
ntra na janela. Iss
lmente quando o
Gerenciamentodedad
onexo
Visual Studio 201
s e ento verificar
er criada program
exo usando o S
faz parte do IDE d
s, crie objetos de
isualize os dados.
conexo aberto
so pode exercer um
servidor remoto

dosemumaplicativoWeb
10 para estabelece
essa conexo em
maticamente.
Server Explorer
do Visual Studio 2
banco de dados,
Quando o servid
o, permanecendo
m certo impacto s
o e intensamente
bMicrosoftASP.NET4.
er facilmente uma
tempo de design
r
2010) permite qu
explore as propri
dor de uma fonte
assim sempre qu
sobre a disponibi
utilizado.
0 8-17

conexo
n. Uma
e voc se
iedades
de dados
ue o foco
ilidade,
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-18 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
ParaestabelecerumaconexocomumbancodedadosSQLServer
1. No Server Explorer, clique com o boto direito do mouse em Data Connections
e depois clique em Add Connection. A caixa de dilogo Add Connection exibida.
2. Na caixa de dilogo Add Connection:
3. Na caixa Data source, verifique se o provedor de dados e o tipo de fonte de
dados corretos esto selecionados.
Na caixa de dilogo Add Connection, quando voc clica em Change,
exibida uma caixa de dilogo Change Data Source que permite a seleo
do tipo de fonte de dados.
4. Na caixa Server name, digite ou selecione o nome do servidor da fonte de dados.
5. Na caixa de dilogo Add Connection, em Log on to the server pane, clique
em Use Windows Authentication ou em Use SQL Server Authentication.
Se voc selecionar a autenticao do SQL Server, fornea suas credenciais.
6. Em Connect to a database, na lista Select or enter a database name,
selecione um banco de dados e depois clique em OK.

Aps a criao de uma conexo, o Server Explorer exibe essa conexo em Data
Connections. No Server Explorer, expanda a conexo e depois expanda a pasta
Tables para visualizar as tabelas na conexo de banco de dados.
A conexo criada com o uso do Server Explorer til em cenrios nos quais voc
deseja projetar novas tabelas ou modificar tabelas ou procedimentos armazenados
existentes. A conexo criada tambm pode ser usada para arrastar objetos de tabela
diretamente para um Web Form. Nesse caso, um controle GridView adicionado
ao formulrio com um controle de fonte de dados.
Criao programtica de uma conexo
Se quiser que a sua conexo esteja disponvel de imediato a partir do cdigo, crie
um objeto de conexo programaticamente. Para criar uma conexo com o SQL
Server 7.0 ou verses mais recentes, primeiro necessrio importar o namespace
System.Data.SqlClient, da seguinte maneira.
[Visual Basic]
Imports System.Data.SqlClient

[Visual C#]
using System.Data.SqlClient;
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-19
Depois de importar o namespace, voc poder criar seu objeto de conexo da
seguinte maneira.
[Visual Basic]
Dim orderConnection As New SqlConnection()

[Visual C#]
SqlConnection orderConnection = new SqlConnection();

Aps a criao do objeto de conexo, necessrio definir a string de conexo. A
string de conexo direciona o objeto de conexo ao servidor e ao banco de dados
com os quais uma conexo ser estabelecida, como mostra os exemplos de cdigo
a seguir.
[Visual Basic]
orderConnection.ConnectionString =
"Data Source=DatabaseServer;Initial
Catalog=OrderDatabase;Integrated Security=True"

[Visual C#]
orderConnection.ConnectionString =
"Data Source=DatabaseServer;Initial
Catalog=OrderDatabase;Integrated Security=True";

Observe como uma fonte de dados ou servidor, um catlogo ou banco de dados
inicial, bem como as credenciais usadas para acesso ao banco de dados, foram
todos especificados.
Para obter esses detalhes, contate seu administrador de banco de dados. Se voc
estiver estabelecendo uma conexo com o SQL Server, a segurana integrada ser
frequentemente usada conforme especificado. Porm, esse nem sempre o caso e,
portanto, talvez seja necessrio especificar as credenciais usando os atributos User
ID e Password.

Dica:sevoctivercriadoumaconexocomumbancodedadosusandooServer
Explorer,podercopiarastringdeconexoapartirdeleeus-ladiretamentenocdigo.
AbraoServerExplorerecliquenaconexodedados.Emseguida,pressioneateclaF4
paraabrirajanelaProperties(seelaaindanoestiveraberta)eselecioneecopieotexto
dapropriedadeConnectionString.Porfim,coleotextocopiadonoseucdigo.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-20 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Assim que o objeto de conexo estiver inicializado e instanciado, ser necessrio
abri-lo para que ele possa usado pelas classes DataAdapter e/ou DataReader, o
que feito da seguinte maneira.
[Visual Basic]
orderConnection.Open()

[Visual C#]
orderConnection.Open();

Observao:comoumobjetodeconexoutilizaumrecursonogerenciado,acoletade
lixonoocorreautomaticamente.Portanto,vocdeveprecisarfecharoudescartaro
objetodeconexodepoisdeutiliz-lo.Casocontrrio,aconexocomoservidorpermanecer
aberta,importantesrecursosdeservidorserodesperdiados,odesempenhodoservidor
diminuirpotencialmenteououtrosusuriosnemmesmoconseguiroacessaresseservidor.
Quando voc terminar de trabalhar com a sua conexo, feche-a ou a descarte da
seguinte maneira.
[Visual Basic]
' Close connection
orderConnection.Close()
' Dispose of connection
orderConnection.Dispose()

[Visual C#]
// Close connection
orderConnection.Close();
// Dispose of connection
orderConnection.Dispose();

necessrio fechar ou descartar a conexo, pois ambas as operaes acabaro
descartando tanto os recursos gerenciados quanto os no gerenciados. No entanto,
no h nenhuma desvantagem em chamar ambos os mtodos, alm do que isso
pode facilitar a leitura do seu cdigo sob um ponto de vista de manuteno. Na
maioria dos casos, trata-se de uma questo de preferncia pessoal ou uma deciso
que se baseia nas convenes de codificao do seu ambiente de trabalho.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-21
Outro mtodo para garantir o descarte de um objeto de conexo inseri-lo em uma
instruo Using/using, como nos exemplos a seguir.
[Visual Basic]
Using orderConnection As New SqlConnection()
orderConnection.ConnectionString = _
"Data Source=DatabaseServer;Initial
Catalog=OrderDatabase;Integrated Security=True"
orderConnection.Open()
...
orderConnection.Close()
End Using

[Visual C#]
using (SqlConnection orderConnection = new SqlConnection())
{
orderConnection.ConnectionString =
"Data Source=DatabaseServer;Initial
Catalog=OrderDatabase;Integrated Security=True";
orderConnection.Open();
...
orderConnection.Close();
}

Quando a instruo Using/using utilizada, no necessrio chamar o mtodo
Close explicitamente, pois isso feito pelo mtodo Dispose, que implicitamente
chamado quando a instanciao do objeto inserida em uma instruo Using/using.
No entanto, isso pode facilitar a leitura do cdigo.
Pergunta: como voc pode alterar o tipo de fonte de dados para uma conexo?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-22 Introduo
Facilit
Pontos
Depois
para fac
justam
apenas
manipu
DataAd
O objet
de dado
gerencia
O objeto
Sele
fon
Upd
na f
aoDesenvolvimentonaW
taodotran
s principais
de criar uma con
cilitar o transport
mente nesse pont
quiser recuperar
ulao, o objeto D
dapter
o DataAdapter u
os e utiliza objeto
amento dos dado
o DataAdapter po
ectCommand. Em
nte de dados.
dateCommand. E
fonte de dados se
WebcomoMicrosoftV
nsportededa
nexo com o banc
te e a sincroniza
to que o objeto D
dados do banco
DataReader ser a
utiliza o objeto Co
os de comando de
os.
ossui quatro propr
mite uma instru
Emite uma instru
empre que altera
VisualStudio2010
adosentrecl
co de dados, voc
o de dados entr
DataAdapter ti
de dados, sem fa
a sua melhor op
onnection para s
e forma a emitir o
riedades relaciona
o SQL SELECT
o SQL UPDAT
es forem feitas n
ienteseserv
precisa de um o
e o cliente e o ser
il. No entanto, se
azer nenhum tipo
o.
se conectar a um b
os comandos par
adas a objetos de c
T para recuperar d
TE para atualizar o
no cliente.
idores

objeto
rvidor.
voc
o de
banco
a o
comando:
dados da
os dados
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-23
InsertCommand. Emite uma instruo SQL INSERT para inserir novos dados
no servidor sempre que novos dados so criados no cliente.
DeleteCommand. Emite uma instruo SQL DELETE para excluir dados no
servidor sempre que esses dados so excludos no cliente.

Dessas quatro propriedades, apenas SelectCommand deve ser definida. Porm, se
voc tentar atualizar, inserir ou excluir dados, uma exceo ser lanada caso a
propriedade correspondente no tenha sido definida. Cada uma dessas propriedades
pode ter instrues SQL ou podem ser chamadas por procedimentos armazenados
no banco de dados. Voc pode usar procedimentos armazenados para reduzir a
quantidade de cdigo necessria para a execuo de operaes do tipo SELECT,
INSERT, UPDATE e DELETE. Voc tambm pode obter uma camada extra de
segurana, pois o cdigo SQL real para a execuo da ao est localizado no servidor.
A permisso de execuo pode estar limitada aos procedimentos armazenados.
Criao programtica de um DataAdapter
Se quiser que o seu adaptador de dados esteja disponvel de imediato a partir
do cdigo, crie um objeto DataAdapter programaticamente. Para criar um objeto
DataAdapter para operao com um banco de dados do SQL Server verso 7.0 ou
mais recente, primeiro necessrio importar o namespace System.Data.SqlClient.
Depois de importar o namespace, voc poder criar o objeto SqlDataAdapter, como
mostram os exemplos de cdigo a seguir.

Observao:osexemplosnorestantedestetpicoforamcriadoscomaaplicaodo
exercciodelaboratrio,paramostrarcomovocpodecriaroobjetoDataAdapter
manualmente,deformaqueeleseadapteaumasoluoconcretacomum.
[Visual Basic]
' Declare and instantiate data adapter
Dim ordersDataAdapter As New SqlDataAdapter()

[Visual C#]
// Declare and instantiate data adapter
SqlDataAdapter ordersDataAdapter = new SqlDataAdapter();

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-24 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Ao instanciar o adaptador de dados, voc pode definir as propriedades de comando
da seguinte maneira.
[Visual Basic]
' Declare and instantiate command objects
Dim selectCommand As New SqlCommand("SELECT * FROM Orders",
orderConnection)
Dim deleteCommand As New SqlCommand("DELETE FROM Orders WHERE ID=@ID",
orderConnection)
Dim insertCommand As New SqlCommand("INSERT INTO Orders (CustomerID,
InvoiceDate, CreatedDate, CreatedBy) VALUES(@CustomerID, @InvoiceDate,
@CreatedDate, @CreatedBy)", orderConnection)
Dim updateCommand As New SqlCommand("UPDATE Orders SET
CustomerID=@CustomerID, InvoiceDate=@InvoiceDate,
"ModifiedDate=@ModifiedDate, ModifiedBy=@ModifiedBy WHERE ID=@ID",
orderConnection)

' Assign command objects
ordersDataAdapter.SelectCommand = selectCommand
ordersDataAdapter.DeleteCommand = deleteCommand
ordersDataAdapter.InsertCommand = insertCommand
ordersDataAdapter.UpdateCommand = updateCommand

[Visual C#]
// Declare and instantiate command objects
SqlCommand selectCommand = new SqlCommand("SELECT * FROM Orders",
orderConnection);
SqlCommand deleteCommand = new SqlCommand("DELETE FROM Orders WHERE
ID=@ID", orderConnection);
SqlCommand insertCommand = new SqlCommand("INSERT INTO Orders
(CustomerID, InvoiceDate, CreatedDate, CreatedBy) VALUES(@CustomerID,
@InvoiceDate, @CreatedDate, @CreatedBy)", orderConnection);
SqlCommand updateCommand = new SqlCommand("UPDATE Orders SET
CustomerID=@CustomerID, InvoiceDate=@InvoiceDate,
"ModifiedDate=@ModifiedDate, ModifiedBy=@ModifiedBy WHERE ID=@ID",
orderConnection);

// Assign command objects
ordersDataAdapter.SelectCommand = selectCommand;
ordersDataAdapter.DeleteCommand = deleteCommand;
ordersDataAdapter.InsertCommand = insertCommand;
ordersDataAdapter.UpdateCommand = updateCommand;

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-25
Ao definir as propriedades de comando do objeto de adaptador de dados, se voc
criar o objeto Command em uma etapa separada e depois o atribuir a essas
propriedades, seu cdigo ficar mais legvel. Usando esse mtodo, fcil atribuir
parmetros a objetos Command sempre que necessrio.
No cdigo, o objeto selectCommand utiliza a instruo SQL SELECT para obter
todas as linhas da tabela Orders. O objeto deleteCommand exclui todas as linhas
que contm um valor de @ID na coluna ID. @ID tambm conhecida como um
parmetro nomeado e pode ter um valor atribudo em um estgio posterior. Neste
estgio, voc declarou e instanciou o objeto Command.

Observao:acolunaIDdatabelaOrdersexclusivae,portanto,quandoumvalor
atribudoaoparmetro@ID,apenasumalinhacomessevalorserlocalizada.
O objeto updateCommand tambm utiliza o parmetro @ID para identificar a
linha correta a ser atualizada (WHERE ID=@ID). Alm disso, ele atribui valores s
diversas colunas usando parmetros nomeados (SET CustomerID=@CustomerID,
Invoicedate=@Invoicedate, ...). O objeto insertCommand executa a mesma
funo de updateCommand, embora com uma sintaxe diferente. Voc pode
atribuir os valores de parmetros da seguinte maneira.
[Visual Basic]
' Declare and instantiate parameter objects
Dim deleteIDParameter As New SqlParameter("@ID",
SqlDbType.UniqueIdentifier, 0, "ID")

Dim updateIDParameter As New SqlParameter("@ID",
SqlDbType.UniqueIdentifier, 0, "ID")
Dim updateInvoiceDateParameter As New SqlParameter("@InvoiceDate",
SqlDbType.SmallDateTime, 0, "InvoiceDate")
...

Dim insertInvoiceDateParameter As New SqlParameter("@InvoiceDate",
SqlDbType.SmallDateTime, 0, "InvoiceDate")
...

' Assign parameters to command object
deleteCommand.Parameters.Add(deleteIDParameter)
updateCommand.Parameters.Add(updateIDParameter)
...

insertCommand.Parameters.Add(insertInvoiceDateParameter)
...

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-26 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
[Visual C#]
// Declare and instantiate parameter objects
SqlParameter deleteIDParameter = new SqlParameter("@ID",
SqlDbType.UniqueIdentifier, 0, "ID");

SqlParameter updateIDParameter = new SqlParameter("@ID",
SqlDbType.UniqueIdentifier, 0, "ID");
SqlParameter updateInvoiceDateParameter = new
SqlParameter("@InvoiceDate", SqlDbType.SmallDateTime, 0,
"InvoiceDate");
...

SqlParameter insertInvoiceDateParameter = new
SqlParameter("@InvoiceDate", SqlDbType.SmallDateTime, 0,
"InvoiceDate");
...

// Assign parameters to command object
deleteCommand.Parameters.Add(deleteIDParameter);

updateCommand.Parameters.Add(updateIDParameter);
...

insertCommand.Parameters.Add(insertInvoiceDateParameter);
...

Observao:aenumeraoSqlDbTypeusadaparaespecificarotipodedadosparaos
vriosparmetrosfazpartedonamespaceSystem.Datae,portanto,onamespace
System.Dataprecisaserimportadonosarquivosdoseucdigo.
Ao definir as propriedades de parmetro dos objetos Command, se voc criar o
objeto Parameter em uma etapa separada e depois o atribuir aos parmetros de
comando, seu cdigo ficar mais legvel. Usando esse mtodo, possvel especificar
o tipo de dados, o tamanho, o nome do parmetro e o nome da coluna de origem.
Observe que alguns parmetros so duplicados porque esto atribudos a mais de
um objeto Command. Um objeto de parmetro s pode ser atribudo a um nico
objeto Command.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-27
Criao programtica de um DataReader
Se voc quiser criar um fluxo de linhas rpido, somente leitura e exclusivamente
progressivo a partir da sua fonte de dados, ser necessrio criar um objeto
DataReader. Para criar um objeto DataReader para operao com o SQL Server
7.0 ou verses mais recentes, primeiro necessrio importar o namespace
System.Data.SqlClient. Depois de importar o namespace, voc poder criar seu
objeto SqlDataReader usando o mtodo ExecuteReader do objeto SqlCommand,
conforme ilustrado nos exemplos de cdigo a seguir.
[Visual Basic]

Dim ordersDataReader As SqlDataReader = selectCommand.ExecuteReader()

' Any more rows?
While ordersDataReader.Read()
...
End While

' Always call Close when done
ordersDataReader.Close()

[Visual C#]

SqlDataReader ordersDataReader = selectCommand.ExecuteReader();

// Any more rows?
while (ordersDataReader.Read())
{
//...
}

// Always call Close when done
ordersDataReader.Close();

Observe como o objeto SqlCommand selectCommand usado para criar o objeto
DataReader, que seleciona todas as linhas da tabela Orders. Quando o mtodo
ExecuteReader chamado, o objeto SqlConnection associado ao objeto
SqlCommand deve estar aberto; caso contrrio, uma exceo ser lanada.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-28 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Para ler qualquer linha do objeto DataReader, voc precisa chamar o mtodo Read,
que retorna um valor Booleano que indica se o cursor est localizado em uma linha
vlida. Se o cursor no estiver localizado em uma linha vlida, o mtodo indicar
que no h mais linhas no objeto DataReader. Portanto, se voc quiser fazer loop
pelas linhas em um objeto DataReader, chamar o mtodo Read ser a nica opo
disponvel, pois DataReader uma construo exclusivamente progressiva.
(Embora seja possvel fech-lo e reabri-lo, essa operao bastante custosa em
termos de recursos de servidor.) Por fim, certifique-se de chamar o mtodo Close
no objeto DataReader, para permitir que o objeto de conexo seja reutilizado para
outras finalidades.
Na prtica, o objeto DataReader usado em segundo plano pelo DataAdapter para
obter os dados e o esquema da fonte de dados durante a populao de um DataSet
ou DataTable.

Observao:quandovocabrirumobjetoDataReader,eleirmonopolizaraconexo
associadaaoobjetodecomandoqueusadoparacriaroobjetoDataReader,atque
esseobjetoDataReadersejafechado.Noserpossvelusaroobjetodeconexo(por
exemplo,paraumobjetoDataAdapter)enquantoeleestiveremusopeloobjeto
DataReader.
Para recuperar dados de uma nica tabela de banco de dados sem criar os vrios
objetos de comando manualmente, possvel usar a classe CommandBuilder.
Pergunta: quais so as quatro propriedades de tipo de comando do objeto
DataAdapter?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Lio3
Gerencia
Quando
dados d
no clien
para per
pode us
O objeto
deles) n
um obje
como ap
uma sen
disso, vo
Esta li
suporte
armazen

amentod
o existe uma cone
de e parar o servid
nte. Esse mtodo
rmitir que os usu
sar os tipos da ca
o DataSet fornece
no banco de dado
eto DataSet. Porm
presentar um nic
nha. Para tais ope
oc pode usar um
o explica como u
e aos requisitos de
namento local de
Gerenciamentodedad
dedados
exo com uma fo
dor, voc precisa
pode estar voltad
urios os manipul
mada conectada
e uma cpia desco
s. Para aplicativos
m, na maioria do
co conjunto de da
raes, no nec
m objeto DataRea
usar os objetos D
e Web Forms em
e dados.

dosemumaplicativoWeb
onte de dados e
de um mtodo p
do para a apresen
lem. Para realizar
e da camada des
onectada de todo
s Web de longa ex
s casos, voc exec
ados diretamente
essrio manter um
der.
DataSet e DataRe
m termos de mani
bMicrosoftASP.NET4.
possvel transpo
para gerar esses d
ntao dos dados
r essas tarefas, vo
conectada do AD
os os dados (ou de
xecuo, possv
cuta operaes b
e ao usurio ou ac
m objeto DataSet
eader para oferec
pulao de dado
0 8-29

ortar
dados
s ou
oc
DO.NET.
e alguns
vel usar
sicas,
cessar
t. Em vez
er
s e
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-30 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Objetivos da lio
Depois de concluir esta lio, voc ser capaz de:
Recuperar dados simples usando a classe DataReader.
Recuperar dados no simples usando as classes DataSet e DataTable.
Manipular dados usando o objeto DataAdapter.
Associar dados a controles de servidor usando o IDE do Visual Studio 2010.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Recup
Pontos
Quando
de linha
SqlCom
sero ap
contin
Recupe
possv
comand
objeto D
acessar
de dado
de resul
consequ
SelectC
SELECT
peraoded
s principais
o necessrio rec
as do banco de da
mmand. Se voc d
presentados aos u
er para esses dad
erao de dado
vel usar o objeto C
do SELECT font
DataReader. Em s
o conjunto de res
os, voc poder us
ltados. Na maioria
uncia de vrias in
ommand usado
T * FROM Orders
Gerenciamentodedad
dadossimple
cuperar um nico
ados), voc pode
deseja recuperar d
usurios, a classe
dos recuperados.
os somente leitu
Command para c
te de dados e dep
seguida, utilize o m
sultados. Se o com
sar o mtodo Nex
a dos casos, vrio
nstrues SELECT
o com o Provedor
s;SELECT * FROM
dosemumaplicativoWeb
es
o valor (como um
e usar o mtodo E
do banco de dad
e DataReader u
ura
chamar o mtodo
pois salvar os resu
mtodo Read do
mando SELECT re
xtResult para aces
os conjuntos de re
T. Por exemplo, o
r de Dados SQL S
Customers
bMicrosoftASP.NET4.
ma senha ou o n
ExecuteScalar da
os apenas os dad
ma tima opo
ExecuteReader,
ultados retornados
objeto DataRead
etornar vrios con
ssar o prximo co
esultados so uma
o seguinte objeto
Server .NET Fram
0 8-31

mero
a classe
dos que
como
enviar o
s em um
der para
njuntos
onjunto
a
mework.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-32 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

ObservequeasduasinstruesSELECTsoseparadasporumponto-e-vrgula.
Os exemplos de cdigo a seguir criam e abrem uma conexo, executam o comando,
armazenam o resultado no objeto ordersDataReader e depois fecham a conexo
aps o processamento dos resultados.
[Visual Basic]
' Declare and instantiate connection
Dim orderConnection As New SqlConnection()
' Initialize connection
orderConnection.ConnectionString = "..."
' Declare and instantiate command object
Dim selectCommand As New SqlCommand("SELECT * FROM Orders",
orderConnection)

' Open connection
orderConnection.Open()

' Declare, instantiate and initialize datareader
Dim ordersDataReader As SqlDataReader = _
selectCommand.ExecuteReader()

' Any rows returned?
If Not ordersDataReader.HasRows Then
' ...
Else
' Any more rows?
While ordersDataReader.Read()
...
End While
End If

' Close datareader
ordersDataReader.Close()
' Close connection
orderConnection.Close()

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-33
[Visual C#]
// Declare and instantiate connection
SqlConnection orderConnection = new SqlConnection();
// Initialize connection
orderConnection.ConnectionString = "...";
// Declare and instantiate command objects
SqlCommand selectCommand = new SqlCommand("SELECT * FROM Orders",
orderConnection);

// Open connection
orderConnection.Open();

// Declare, instantiate and initialize datareader
SqlDataReader ordersDataReader = selectCommand.ExecuteReader();

// Any rows returned?
if (!ordersDataReader.HasRows)
{
...
}
else
{
// Any more rows?
while (ordersDataReader.Read())
{
...
}
}

// Close datareader
ordersDataReader.Close();
// Close connection
orderConnection.Close();

A propriedade HasRows do objeto DataReader verifica se linhas foram retornadas.
Se nenhuma linha tiver sido retornada, voc poder informar o usurio ou executar
qualquer outra ao apropriada. Se a propriedade HasRows for true, as linhas
faro loop usando o mtodo Read, que avana para a linha seguinte, comeando
na primeira linha ao ser chamado pela primeira vez. Se o mtodo Read retornar
false, significa que no h mais linhas, e voc no poder mais acessar os dados no
objeto DataReader. Se isso for feito, uma exceo ser lanada.
Se voc precisar recuperar apenas um valor em vez de usar o mtodo ExecuteReader,
basta usar o mtodo ExecuteScalar. O mtodo a seguir retorna um nico valor escalar,
como aquele retornado pela instruo SELECT.
SELECT ID FROM Orders WHERE CreatedBy=Weber
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-34 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

Se apenas um cliente com o nome Weber for localizado, uma nica entrada com
o nome Weber ser retornada. No entanto, se mais de um cliente com o nome
Weber for localizado, apenas a primeira entrada localizada ser retornada. A ID
retornada depende da maneira na qual as linhas so classificadas na tabela Orders.
Se mais de um campo for retornado pela instruo SELECT (por exemplo, uma
linha inteira), o mtodo ExecuteScalar retornar a primeira coluna dessa linha. O
mtodo ExecuteScalar retorna o valor do tipo System.Object. Portanto, talvez seja
necessrio converter o valor de retorno antes de us-lo. Os exemplos de cdigo a
seguir demonstram o mtodo ExecuteScalar.
[Visual Basic]
' Declare and instantiate command object
Dim selectCommand As New SqlCommand("SELECT ID FROM Orders WHERE
CreatedBy='Weber'", orderConnection)

' Open connection
orderConnection.Open()

' Get scalar value
Dim name As String = CType(selectCommand.ExecuteScalar(), String)

' Close connection
orderConnection.Close()

[Visual C#]
// Declare and instantiate connection
SqlConnection orderConnection = new SqlConnection();
// Initialize connection
orderConnection.ConnectionString = "...";
// Declare and instantiate command objects
SqlCommand selectCommand = new SqlCommand("SELECT ID FROM Orders WHERE
CreatedBy='Weber'", orderConnection);

// Open connection
orderConnection.Open();

// Get scalar value
string name = (string) selectCommand.ExecuteScalar();

// Close connection
orderConnection.Close();

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Recup
Pontos
Se voc
inteira o
DataTa
possv
Existe a
adiciona
DataSet
em uma

peraoded
s principais
precisa recupera
ou um subconjun
able so excelente
vel impor a integr
a opo de usar a c
ados) ou de impo
t para armazenar
a fonte de dados l
Gerenciamentodedad
dadosnosim
ar dados no simp
nto de linhas de u
es opes em um
ridade de dados e
classe DataSet pa
ortar documentos
uma cpia ou o c
localizada em um

dosemumaplicativoWeb
mples
ples, como o con
uma tabela, as cla
m cenrio descone
em uma classe Da
ara armazenar dad
XML. Tambm
cache dos dados
m servidor diferent
bMicrosoftASP.NET4.
ntedo de uma tab
asses DataSet ou
ectado.
ataSet usando rest
dos locais (manua
possvel usar a c
(ou um subconju
te.
0 8-35

bela
tries.
almente
classe
unto deles)
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-36 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Trabalho programtico com DataSet
Para criar um objeto DataSet, possvel usar um de dois construtores disponveis,
dos quais o primeiro no obtm parmetros e o segundo obtm o nome do conjunto
de dados. Os exemplos de cdigo a seguir mostram como declarar e instanciar um
DataSet.
[Visual Basic]
Dim ordersDataSet As New DataSet("OrdersDataSet")

[Visual C#]
DataSet ordersDataSet = new DataSet("OrdersDataSet");

Populao de DataSet
Aps a criao de um objeto DataSet, voc pode popular o objeto DataSet usando
um objeto DataAdapter. possvel chamar o mtodo Fill no objeto DataAdapter
e depois especificar o nome do objeto DataTable que criado para voc em
DataSet. Os exemplos de cdigo a seguir criam e populam a tabela Orders. O
esquema da tabela Orders no banco de dados automaticamente copiado para o
objeto Orders DataTable.
[Visual Basic]
ordersDataAdapter.Fill(ordersDataSet, "Orders")

[Visual C#]
ordersDataAdapter.Fill(ordersDataSet, "Orders");

O mtodo Fill executa a instruo SQL que est contida no objeto Command, que
acessado com o uso da propriedade SelectCommand do objeto DataAdapter.
Voc sempre deve nomear a tabela que est sendo criada e populada, preferivelmente
com o nome da tabela no banco de dados, pois poder usar esse nome quando acessar
os dados mais tarde.
O mtodo DataAdapter.Fill usa o objeto DataReader implicitamente para retornar
os nomes e os tipos de coluna que so usados para criar as tabelas em DataSet, bem
como os dados para popular as linhas das tabelas em DataSet. Tabelas e colunas
apenas sero criadas se ainda no existirem. Caso contrrio, Fill usar o esquema
DataSet existente.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-37
Acesso a DataTable
Depois de inserir dados em um objeto DataSet, voc pode acessar os dados
programaticamente. Como ilustram os exemplos de cdigo a seguir, cada objeto
DataSet consiste em um ou mais objetos DataTable aos quais voc pode fazer
referncia por nome ou por posio ordinal.
[Visual Basic]
' Access Orders table by name
ordersDataSet.Tables("Orders")
' Access Orders table by ordinal position
ordersDataSet.Tables(0)

[Visual C#]
// Access Orders table by name
ordersDataSet.Tables["Orders"];
// Access Orders table by ordinal position
ordersDataSet.Tables[0];

As classes DataRow e DataColumn so componentes primrios de uma classe
DataTable, na qual os objetos DataColumn formam a estrutura de DataTable e os
objetos DataRow contm os dados reais. Voc pode usar um objeto DataRow e suas
propriedades e mtodos para recuperar e avaliar os valores em um objeto DataTable.
DataRowCollection representa os objetos DataRow reais residentes no objeto
DataTable, enquanto DataColumnCollection contm os objetos DataColumn que
definem o esquema do objeto DataTable. A propriedade Rows do objeto DataTable
fornece acesso programtico a DataRowCollection. A propriedade Columns do
objeto DataTable fornece acesso programtico a DataColumnCollection.
Os exemplos de cdigo a seguir recuperam os nomes de colunas do objeto
DataTable denominado Orders, que est contido no objeto ordersDataSet.
[Visual Basic]
For Each col As DataColumn In ordersDataSet.Tables("Orders").Columns
Response.Write(col.ColumnName)
Next

[Visual C#]
foreach (DataColumn col in ordersDataSet.Tables["Orders"].Columns)
{
Response.Write(col.ColumnName);
};

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-38 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tanto o objeto DataRowCollection quanto o objeto DataColumnCollection tm
uma propriedade Count que permite determinar o nmero de linhas ou colunas
em um objeto DataTable. Os seguintes exemplos de cdigo ilustram isso.
[Visual Basic]
ordersDataSet.Tables("Orders").Rows.Count
ordersDataSet.Tables("Orders").Columns.Count

[Visual C#]
ordersDataSet.Tables["Orders"].Rows.Count;
ordersDataSet.Tables["Orders"].Columns.Count;
Em geral, no convm usar o ndice para localizar uma linha no objeto DataTable,
pois no h como ter certeza de que voc est acessando a linha correta. Embora a
coluna possa ser acessada por estar implcita na fonte de dados, as linhas podem
estar classificadas de diferentes maneiras, ou uma linha pode estar marcada como
excluda, o que torna difcil determinar com preciso qual linha deve ser acessada.
Voc pode fazer loop pelas linhas e, ao encontrar a linha correta, pode recuperar
os valores das vrias colunas. Outra opo usar o mtodo Find do objeto
DataRowCollection, que exposto pela propriedade Rows, para localizar uma ou
mais linhas usando a chave primria, conforme indicado a seguir.
[Visual Basic]
' Apply the full schema from the data source
ordersDataAdapter.FillSchema(ordersDataSet, SchemaType.Source,
"Orders")
' Get the data row
Dim ordersDataRow As DataRow =
ordersDataSet.Tables("Orders").Rows.Find("a05c7f53-9c4e-de11-aa78-
0003ffa70544")

[Visual C#]
// Apply the full schema from the data source
ordersDataAdapter.FillSchema(ordersDataSet, SchemaType.Source,
"Orders");
// Get the data row
DataRow ordersDataRow =
ordersDataSet.Tables["Orders"].Rows.Find("a05c7f53-9c4e-de11-aa78-
0003ffa70544");

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-39
Observe como uma chamada para o mtodo FillSchema do objeto DataAdapter
feita antes da chamada para o mtodo Find do objeto DataRowCollection. Voc
precisa chamar o mtodo FillSchema para aplicar o esquema completa ao objeto
Orders DataTable, pois somente o tipo de dados e o nome so aplicados quando
o mtodo Fill do objeto DataAdapter utilizado. Se quiser aplicar uma chave
primria, primeiro ser necessrio chamar o mtodo FillSchema.
Pergunta: como o mtodo Fill retorna os nomes de colunas?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-40 Introduo
Manip
Pontos
Se for n
diretam
os coma
Manipu
Os exem
localme

aoDesenvolvimentonaW
pulaoded
s principais
necessrio manipu
mente no servidor
andos de banco d
ulao de dado
mplos de cdigo
ente.
WebcomoMicrosoftV
dados
ular os dados no
), utilize o objeto
de dados e manip
os usando um o
a seguir ilustram

VisualStudio2010
seu banco de dad
o DataAdapter. T
pular dados usan
objeto DataAda
como inserir um
dos (seja localme
Tambm possve
do o objeto Com
apter
ma nova linha de d

ente ou
el acessar
mmand.
dados
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-41
[Visual Basic]
' Create new row locally
Dim newOrderDataRow As DataRow =
ordersDataSet.Tables("Orders").NewRow()
newOrderDataRow("ID") = Guid.NewGuid()
newOrderDataRow("CustomerID") = currentCustomer.ID
newOrderDataRow("InvoiceDate") = DateTime.Now
newOrderDataRow("CreatedDate") = DateTime.Now
newOrderDataRow("CreatedBy") = currentUser.Name

' Insert new row locally
ordersDataSet.Tables("Orders").Rows.Add(newOrderDataRow)

' Update data source
ordersDataAdapter.Update(ordersDataSet, "Orders")

[Visual C#]
// Create new row locally
DataRow newOrderDataRow = ordersDataSet.Tables["Orders"].NewRow();
newOrderDataRow["ID"] = Guid.NewGuid();
newOrderDataRow["CustomerID"] = currentCustomer.ID;
newOrderDataRow["InvoiceDate"] = DateTime.Now;
newOrderDataRow["CreatedDate"] = DateTime.Now;
newOrderDataRow["CreatedBy"] = currentUser.Name;

// Insert new row locally
ordersDataSet.Tables["Orders"].Rows.Add(newOrderDataRow);

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-42 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Se quiser modificar os dados existentes localmente, faa isso conforme demonstrado
nos exemplos de cdigo a seguir.
[Visual Basic]
' Find row
Dim orderDataRow As DataRow = _
ordersDataSet.Tables("Orders").Rows.Find("a05c7f53-9c4e-de11-aa78-
0003ffa70544")

' Update row locally
orderDataRow("ModifiedDate") = DateTime.Now
orderDataRow("ModifiedBy") = currentUser.Name

[Visual C#]
// Find row
DataRow orderDataRow =
ordersDataSet.Tables["Orders"].Rows.Find("a05c7f53-9c4e-de11-aa78-
0003ffa70544");

// Update row locally
orderDataRow["ModifiedDate"] = DateTime.Now;
orderDataRow["ModifiedBy"] = currentUser.Name;

Se quiser excluir os dados existentes localmente, faa isso conforme demonstrado
nos exemplos de cdigo a seguir.
[Visual Basic]
' Find row
Dim orderDataRow As DataRow = _
ordersDataSet.Tables("Orders").Rows.Find("20389eb1-f24f-de11-aa78-
0003ffa70544")

' Delete row locally
orderDataRow.Delete()

[Visual C#]
// Find row
DataRow orderDataRow =
ordersDataSet.Tables["Orders"].Rows.Find("20389eb1-f24f-de11-aa78-
0003ffa70544");

// Delete row locally
orderDataRow.Delete();
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-43

Observao:ocdigodeexemplonestetpicopartedoprincpiodequevoctenha
configuradoosobjetosCommandparaaspropriedadesInsertCommand,
UpdateCommandeDeleteCommanddoobjetoDataAdapter.
Depois de manipular os dados localmente, talvez voc precise envi-los ao servidor.
Os seguintes exemplos de cdigo ilustram isso.
[Visual Basic]
' Update data source
ordersDataAdapter.Update(ordersDataSet, "Orders")

[Visual C#]
// Update data source
ordersDataAdapter.Update(ordersDataSet, "Orders");
Pergunta: Qual a principal finalidade de se usar o objeto DataAdapter?


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-44 Introduo
Dado
Pontos
Para qu
permite
de um c
adiciona
GridVie
Exibi
Depois
Explore
se voc
2010 cr
Con
qua
Com
exib
aoDesenvolvimentonaW
sparacontro
s principais
ue voc possa gere
e a criao admini
controle de servid
ar um objeto SqlD
ew ao banco de d
o de dados em
de criar uma con
er para adicionar
arrastar uma tab
riar um controle
ntrole GridView.
al cada coluna rep
mo opo, um us
bidos no controle
WebcomoMicrosoftV
olesdeservi
enciar dados de f
istrativa de uma
dor GridView em
DataSource ao W
dados.
m um Web Form
nexo com um ba
dados diretamen
ela at o editor d
e GridView e um
. Exibe os valores
presenta um cam
surio pode selec
e.
VisualStudio2010
idorusando
forma eficiente, o
conexo de banc
m um Web Form.
Web Form e vincu
m
anco de dados, vo
nte a um Web For
de texto no modo
controle SqlData
s de uma fonte de
mpo e cada linha r
ionar, classificar
oIDE
o Visual Studio 20
co de dados e a cr
Em seguida, po
ular facilmente o
oc pode usar o S
rm. No Server Ex
Design, o Visual
aSource por padr
e dados em uma
representa um reg
e editar os itens q

010
riao
ossvel
controle
Server
xplorer,
l Studio
ro:
tabela na
gistro.
que so
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-45
Controle SqlDataSource. Permite o uso de um controle de servidor para
acessar dados que esto localizados em um banco de dados relacional, como
bancos de dados SQL Server.

O Visual Studio 2010 define automaticamente as propriedades ConnectionString
e Command de SqlDataSource, como mostra o cdigo a seguir.
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:OrderConnectionString1 %>"
DeleteCommand="DELETE FROM [Orders] WHERE [ID] = @ID"
InsertCommand="INSERT INTO [Orders] ([ID], [CustomerID],
[InvoiceDate], [CreatedDate], [CreatedBy], [ModifiedDate],
[ModifiedBy]) VALUES (@ID, @CustomerID, @InvoiceDate, @CreatedDate,
@CreatedBy, @ModifiedDate, @ModifiedBy)"
ProviderName="<%$
ConnectionStrings:OrderConnectionString1.ProviderName %>"
SelectCommand="SELECT [ID], [CustomerID], [InvoiceDate],
[CreatedDate], [CreatedBy], [ModifiedDate], [ModifiedBy] FROM
[Orders]"
UpdateCommand="UPDATE [Orders] SET [CustomerID] = @CustomerID,
[InvoiceDate] = @InvoiceDate, [CreatedDate] = @CreatedDate,
[CreatedBy] = @CreatedBy, [ModifiedDate] = @ModifiedDate, [ModifiedBy]
= @ModifiedBy WHERE [ID] = @ID">
...
</asp:SqlDataSource>

A marcao a seguir mostra a configurao de string de conexo
OrderConnectionString1 no arquivo web.config, que referenciada
na marcao anterior.
<configuration>
...
<appSettings/>
<connectionStrings>
<add name="OrderConnectionString1" connectionString="Data
Source=DatabaseServer;Initial Catalog=OrderDatabase;Integrated
Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
...
</configuration>

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-46 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
A propriedade DataSourceID do controle GridView tambm definida como o
nome do controle SqlDataSource. O cdigo a seguir mostra como a propriedade
DataSourceID definida para o controle SqlDataSource.
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" DataKeyNames="ID"
DataSourceID="SqlDataSource1" EmptyDataText="There are no data records
to display.">
Neste estgio, voc pode visualizar o Web Form em um navegador para apresentar
os dados a partir da fonte de dados.
Definio de propriedades de fonte de dados e de exibio de controles
Voc pode usar o controle SqlDataSource junto com um controle associado a
dados para recuperar dados de um banco de dados relacional. Tambm pode
exibir, editar e classificar dados em um Web Form usando pouco ou nenhum
cdigo. Ao selecionar um controle SqlDataSource, voc pode usar a janela
Properties para definir suas propriedades.
O controle SqlDataSource inclui as seguintes propriedades principais:
ConnectionString. A string de conexo a ser usada para estabelecer uma
conexo com o banco de dados.
ProviderName. O nome do assembly do Provedor de Dados .NET.

O controle GridView inclui as seguintes propriedades principais, que tambm
podem ser definidas na janela Properties:
AllowPaging. Permite a paginao no controle.
AllowSorting. Permite a classificao no controle.
Columns. Exibe o conjunto de colunas a serem exibidas no controle.
DataSourceID. Exibe a ID de controle de uma fonte de dados.
PageSize. O nmero de linhas na fonte de dados a ser exibido por pgina.

possvel definir as propriedades na janela Properties e no modo Design.
Voc pode usar o controle SqlDataSource para estabelecer conexo com um
banco de dados usando pouco ou nenhum cdigo. O controle SqlDataSource
tambm o controle padro usado para arrastar uma tabela do Server Explorer at
um Web Form. No entanto, voc pode usar outros controles de servidor, incluindo
LinqDataSource.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-47
O controle LinqDataSource expe a LINQ a desenvolvedores da Web atravs da
arquitetura de controles de fonte de dados do ASP.NET. A LINQ fornece um
modelo de programao unificado para a consulta e a atualizao de dados a partir
de diferentes tipos de fontes, alm de estender recursos de dados diretamente para
as linguagens de programao .NET Framework, como o Visual Basic e o Visual C#.
A LINQ simplifica a interao entre a programao orientada a objetos e dados
relacionais, aplicando a este ltimos os princpios dessa programao.
Pergunta: Para que serve o controle SqlDataSource?

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-48 Introduo
Laborat
aplicativ

Observa
program
deprog
Seestive
fornecid
Introdu
Neste la
dados S
do usu
de dado

aoDesenvolvimentonaW
rio:Gere
oWebA
ao:vocpodee
maoVisualBasic
ramao,consulte
erusandooVisual
asnaSeo2dod
uo
aboratrio, voc i
SQL Server usand
rio no aplicativo
os de origem e ve
WebcomoMicrosoftV
enciamen
ASP.NET4
executartarefasne
ouVisualC#.See
easetapasfornecid
C#comolinguag
documentodolab
ir conectar o apl
do o controle de s
a uma fonte de d
erificar as altera

VisualStudio2010
ntodeda
4.0
estelaboratriousa
estiverusandooVi
dasnaSeo1do
emdeprograma
boratrio.
licativo Web ASP
servidor e depois
dados. Tambm i
es efetuadas nes
adosemu
andoalinguagem
isualBasiccomoli
documentodola
o,consulteaseta
.NET a um banco
s ir associar o co
ir modificar o ba
se banco de dado
um

de
nguagem
boratrio.
apas
o de
ntrole
anco
os.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-49
Objetivos
Depois de concluir este laboratrio, voc ser capaz de:
Conectar-se a um banco de dados SQL Server usando o controle SqlDataSource.
Associar um controle do usurio fonte de dados.
Modificar o banco de dados de origem e verificar as alteraes.

Configurao do laboratrio
Neste laboratrio, voc usar o ambiente de mquina virtual disponvel. Antes de
iniciar o laboratrio, voc deve:
Inicie a mquina virtual 10560A-GEN-DEV e depois faa logon usando as
seguintes credenciais:
Nome de usurio: Aluno
Senha: Pa$$w0rd

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-50 Introduo
Cenr
Voc tra
possui u
informa
usurio
funcion
dados e
chances
dados, v
do usu
do usu
aoDesenvolvimentonaW
riodelabora
abalha como dese
uma base global d
aes dos clientes
s da sua organiza
nalidade para tare
em um curto espa
s de se criar um c
voc precisa adici
rio. Tambm pre
rio para exibir d
WebcomoMicrosoftV
atrio
envolvedor na Co
de clientes. Sua o
s. Voc respons
ao. Para desem
efas simples de ac
ao de tempo e se
cdigo passvel de
onar e configurar
cisa adicionar e a
ados especficos
VisualStudio2010
ontoso, Ltd, uma
organizao usa u
svel por gerencia
penhar essa taref
cesso a dados, com
em usar muito c
e erro ao acessar
r um controle de f
ssociar um contro
do banco de dad
a grande organiza
um site para geren
ar as informaes
fa, necessrio ad
m o objetivo de r
digo. Para minim
os dados no ban
fonte de dados ao
ole de servidor ao
dos.

ao que
nciar as
s dos
dicionar
recuperar
mizar as
nco de
o controle
o controle
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-51
Seo1:VisualBasic
Exerccio1:Conexocomumafontededados
Estas so as principais tarefas do exerccio:
1. Abrir um projeto da Web ASP.NET existente.
2. Adicionar um banco de dados SQL Server 2008 Express.
3. Adicionar um controle de fonte de dados ao controle do usurio.
4. Configurar um controle de fonte de dados.

Tarefa1:AbrirumprojetodaWebASP.NETexistente
Faa logon em 10560A-GEN-DEV como Aluno, com a senha Pa$$w0rd.
Abra o Microsoft Visual Studio 2010.
Abra a soluo CustomerManagement, localizada na pasta
D:\Labfiles\Starter\M8\VB.

Tarefa2:AdicionarumbancodedadosSQLServer2008Express
Adicione uma nova pasta de banco de dados denominada App_Data e
adicione um banco de dados existente a essa pasta, D:\LabFiles\Starter\
M8\CustomerManagement.mdf.

Tarefa3:Adicionarumaorigemdecontrolededadosaocontroledo
usurio
Abra o controle do usurio Customer no modo Design.
Adicione um controle SqlDataSource ao controle do usurio para estabelecer
uma conexo com um banco de dados SQL Server.
Renomeie o controle SqlDataSource como CountriesSqlDataSource.
Salve o controle do usurio Customer.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-52 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa4:Configurarumcontroledefontededados
No modo Design, com o controle CountriesSqlDataSource selecionado, exiba
Marca Inteligente.
Abra o Configure Data Source Wizard, estabelea uma conexo com o banco
de dados CustomerManagement.mdf e crie uma nova string de conexo
denominada CustomerManagementConnectionString.
Configure a instruo SELECT de forma a incluir as colunas ID e Name da
tabela Countries.
Teste a consulta e verifique se voc obtm os dados corretos da tabela
Countries.

Observao:verifiqueseaslinhasretornadasincluemosvaloresparaascolunasIDe
Namedevriospases.
Salve o controle do usurio Customer.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-53
Exerccio2:Associaodeumcontroledeservidorcom
umafontededados
Estas so as principais tarefas do exerccio:
1. Associar o controle DropDownList a uma fonte de dados.
2. Transmitir os valores ao objeto Customer.

Tarefa1:AssociarocontroleDropDownListaumafontededados
Abra o controle do usurio Customer no modo Source.
Localize a marcao para o controle CustomerCountryDropDownList.
Remova o elemento ListItem esttico do controle
CustomerCountryDropDownList.
<asp:ListItem>USA</asp:ListItem>
Associe o controle CustomerCountryDropDownList ao controle
CountriesSqlDataSource usando o atributo DataSourceID.
DataSourceID="CountriesSqlDataSource"
Defina o campo de valor do controle CustomerCountryDropDownList como
a coluna ID do banco de dados, usando o atributo DataValueField.
DataValueField="ID"
Defina o campo de texto do controle CustomerCountryDropDownList como
a coluna Name do banco de dados, usando o atributo DataTextField.
DataTextField="Name"
Compile o controle do usurio e corrija todos os erros.


Observao:observeamensagemdecompilaobem-sucedidanopainelBuildda
janelaOutput.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-54 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa2:TransmitirosvaloresaoobjetoCustomer
Abra o controle do usurio Customer no modo Code.
Localize o cdigo do mtodo privado instantiateCustomerObject e transmita
o valor selecionado do controle CustomerCountryDropDownList ao
construtor da classe Customer usando a propriedade SelectedValue inserida
em um objeto new Guid.
' Instantiate new Customer object with user input
currentCustomer = New CustomerManagementEntities.Customer(
Nothing, CustomerFirstNameTextBox.Text,
CustomerLastNameTextBox.Text,
CustomerAddressTextBox.Text, CustomerZipCodeTextBox.Text,
CustomerCityTextBox.Text,
CustomerStateTextBox.Text, New
Guid(CustomerCountryDropDownList.SelectedValue),
CustomerPhoneTextBox.Text,
CustomerEmailAddressTextBox.Text,
CustomerWebAddressTextBox.Text,
CustomerNewsSubscriberCheckBox.Checked,
Integer.Parse(CustomerCreditLimitTextBox.Text), DateTime.Now,
"", Nothing, "")
Compile o controle do usurio e corrija todos os erros.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-55
Exerccio3:Modificaodeumafontededados
Estas so as principais tarefas do exerccio:
1. Criar o Formulrio da Web Customers.
2. Adicionar o controle SqlDataSource ao Formulrio da Web.
3. Configurar o controle SqlDataSource.
4. Adicionar o controle ListView ao Formulrio da Web.
5. Adicionar cdigo para salvar um cliente manualmente em uma fonte de dados.
6. Atualizar o mapa do site para habilitar a visualizao de todos os clientes.
7. Criar um cliente e verificar a Fonte de Dados.

Tarefa1:CriaroFormulriodaWebCustomers
Crie o Formulrio da Web Customers com base na pgina mestra, Site.master.
Abra o Web Form Customers no modo Design.

Tarefa2:AdicionarocontroleSqlDataSourceaoWebForm
Adicione o controle SqlDataSource ao Web Form Customers.aspx.
Renomeie o controle SqlDataSource como CustomersSqlDataSource.
Salve o Formulrio da Web Customers.

Tarefa3:ConfigurarocontroleSqlDataSource
No modo Design, com o controle CustomersSqlDataSource selecionado,
exiba a Marca Inteligente.
Abra o Configure Data Source Wizard.
Selecione a string de conexo CustomerManagementConnectionString para
o controle CustomersSqlDataSource.
Configure a instruo SELECT de forma a incluir todas as colunas da tabela
Customers, verifique se possvel manipular os dados na fonte de dados e
utilize o mtodo de simultaneidade otimista.
Salve o Web Form Customers.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-56 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Tarefa4:AdicionarocontroleListViewaoWebForm
Adicionar o controle ListView ao Web Form Customers.
Renomeie o controle ListView como CustomersListView.
Associe o controle CustomersListView ao controle CustomersSqlDataSource
usando o recurso de Marca Inteligente.
Habilite a paginao no controle CustomersListView.
Salve o Web Form Customers.
Compile o controle do usurio e corrija todos os erros.
Exiba o Web Form Customers no navegador.
Feche o Windows Internet Explorer.

Tarefa5:Adicionarcdigoparasalvarumclientemanualmenteem
umafontededados
Abra o controle do usurio Customer no modo Code.
Importe o namespace usado para acessar um banco de dados SQL Server 2008,
System.Data.SqlClient.
Importe o namespace usado com a camada desconectada do ADO.NET,
System.Data.
Importe o namespace para ler a string de conexo a partir do arquivo
web.config, System.Configuration.
Localize o manipulador de eventos CustomerInsertButton_Click.
Protected Sub CustomerInsertButton_Click(ByVal sender As Object,
ByVal e As System.EventArgs) Handles CustomerInsertButton.Click
' Did page validation succeed?
If Not Page.IsValid Then
Exit Sub
End If

' Add the current user name
currentCustomer.CreatedBy = Context.User.Identity.Name
' Add the user credit limit
currentCustomer.CreditLimit = 50000
End Sub

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-57
Remova a atribuio do valor 50000 propriedade CreditLimit.
' Add the user credit limit
currentCustomer.CreditLimit = 50000
Acrescente o seguinte cdigo ao manipulador de eventos
CustomerInsertButton_Click usando um snippet de cdigo denominado
ADO.NET Insert Customer. O trecho de cdigo foi fornecido pelo desenvolvedor
snior e colocado na pasta My Code Snippets.
' Create and instantiate connection
Using customerManagementConnection As New SqlConnection()
' Initialize connection string from web.config
customerManagementConnection.ConnectionString =

ConfigurationManager.ConnectionStrings("CustomerManagementConnecti
onString").ConnectionString

' Open connection
customerManagementConnection.Open()
' Declare and instantiate data adapter
Dim customerManagementDataAdapter As New SqlDataAdapter()

' Declare and instantiate command objects
Dim selectCommand As New SqlCommand("SELECT * FROM Customers",
customerManagementConnection)
Dim insertCommand As New SqlCommand(
"INSERT INTO Customers (FirstName, LastName, Address,
ZipCode, City, State, CountryID, Phone, EmailAddress, " &
"Url, CreditLimit, NewsSubscriber, CreatedDate, CreatedBy)
VALUES(@FirstName, @LastName, @Address, @ZipCode, @City, @State, "
&
"@CountryID, @Phone, @EmailAddress, @WebAddress,
@CreditLimit, @NewsSubscriber, @CreatedDate, @CreatedBy)",
customerManagementConnection)

' Assign command objects
customerManagementDataAdapter.SelectCommand = selectCommand
customerManagementDataAdapter.InsertCommand = insertCommand

' Declare and instantiate parameter objects
Dim insertFirstNameParameter As New SqlParameter("@FirstName",
SqlDbType.NVarChar, 50, "FirstName")
Dim insertLastNameParameter As New SqlParameter("@LastName",
SqlDbType.NVarChar, 30, "LastName")
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-58 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Dim insertAddressParameter As New SqlParameter("@Address",
SqlDbType.NVarChar, 50, "Address")
Dim insertZipCodeParameter As New SqlParameter("@ZipCode",
SqlDbType.NVarChar, 10, "ZipCode")
Dim insertCityParameter As New SqlParameter("@City",
SqlDbType.NVarChar, 30, "City")
Dim insertStateParameter As New SqlParameter("@State",
SqlDbType.NVarChar, 30, "State")
Dim insertCountryIDParameter As New SqlParameter("@CountryID",
SqlDbType.UniqueIdentifier, 0, "CountryID")
Dim insertPhoneParameter As New SqlParameter("@Phone",
SqlDbType.VarChar, 30, "Phone")
Dim insertEmailAddressParameter As New
SqlParameter("@EmailAddress", SqlDbType.NVarChar, 50,
"EmailAddress")
Dim insertWebAddressParameter As New
SqlParameter("@WebAddress", SqlDbType.NVarChar, 80, "Url")
Dim insertCreditLimitParameter As New
SqlParameter("@CreditLimit", SqlDbType.Int, 0, "CreditLimit")
Dim insertNewsSubscriberParameter As New
SqlParameter("@NewsSubscriber", SqlDbType.Bit, 0,
"NewsSubscriber")
Dim insertCreatedDateParameter As New
SqlParameter("@CreatedDate", SqlDbType.SmallDateTime, 0,
"CreatedDate")
Dim insertCreatedByParameter As New SqlParameter("@CreatedBy",
SqlDbType.VarChar, 15, "CreatedBy")

' Assign parameters to command object
insertCommand.Parameters.Add(insertFirstNameParameter)
insertCommand.Parameters.Add(insertLastNameParameter)
insertCommand.Parameters.Add(insertAddressParameter)
insertCommand.Parameters.Add(insertZipCodeParameter)
insertCommand.Parameters.Add(insertCityParameter)
insertCommand.Parameters.Add(insertStateParameter)
insertCommand.Parameters.Add(insertCountryIDParameter)
insertCommand.Parameters.Add(insertPhoneParameter)
insertCommand.Parameters.Add(insertEmailAddressParameter)
insertCommand.Parameters.Add(insertWebAddressParameter)
insertCommand.Parameters.Add(insertCreditLimitParameter)
insertCommand.Parameters.Add(insertNewsSubscriberParameter)
insertCommand.Parameters.Add(insertCreatedDateParameter)
insertCommand.Parameters.Add(insertCreatedByParameter)
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-59

' Declare and instantiate dataset
Dim customerManagementDataSet As New
DataSet("CustomerManagementDataSet")
' Apply the full schema from the data source

customerManagementDataAdapter.FillSchema(customerManagementDataSet
, SchemaType.Source, "Customers")
customerManagementDataAdapter.MissingSchemaAction =
MissingSchemaAction.AddWithKey
customerManagementDataAdapter.MissingMappingAction =
MissingMappingAction.Passthrough
' Populate Customers DataTable
customerManagementDataAdapter.Fill(customerManagementDataSet,
"Customers")

' Create new row locally
Dim newCustomerDataRow As DataRow =
customerManagementDataSet.Tables("Customers").NewRow()
newCustomerDataRow("ID") = Guid.NewGuid()
newCustomerDataRow("FirstName") = currentCustomer.FirstName
newCustomerDataRow("LastName") = currentCustomer.LastName
newCustomerDataRow("Address") = currentCustomer.Address
newCustomerDataRow("ZipCode") = currentCustomer.ZipCode
newCustomerDataRow("City") = currentCustomer.City
newCustomerDataRow("State") = currentCustomer.State
newCustomerDataRow("CountryID") = currentCustomer.CountryID
newCustomerDataRow("Phone") = currentCustomer.Phone
newCustomerDataRow("EmailAddress") =
currentCustomer.EmailAddress
newCustomerDataRow("Url") = currentCustomer.EmailAddress
newCustomerDataRow("CreditLimit") =
currentCustomer.CreditLimit
newCustomerDataRow("NewsSubscriber") =
currentCustomer.NewsSubscriber
newCustomerDataRow("CreatedDate") =
currentCustomer.CreatedDate
newCustomerDataRow("CreatedBy") = currentCustomer.CreatedBy

' Insert new row locally

customerManagementDataSet.Tables("Customers").Rows.Add(newCustomer
DataRow)
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-60 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010

' Update data source
If
customerManagementDataAdapter.Update(customerManagementDataSet,
"Customers") = 1 Then
' Instantiate new Customer object
currentCustomer = New
CustomerManagementEntities.Customer()
' Reload page to refresh with "blank" input controls
Response.Redirect("~/InsertCustomer.aspx")
End If
End Using
Salve o arquivo code-behind Customer.

Tarefa6:Atualizaromapadositeparahabilitaravisualizaode
todososclientes
Abra o arquivo web.sitemap.
Acrescente o novo elemento siteMapNode ao siteMapNode de Customers.
<siteMapNode title="All" description="View All Customers"
url="~/Customers.aspx" />
Salve e feche o arquivo web.sitemap.

Tarefa7:CriarumclienteeverificaraFontedeDados
Desenvolva a soluo CustomerManagement.
Execute o aplicativo Web CustomerManagement.
Abra o Web Form InsertCustomer e clique em New no menu Customers.
Crie um novo cliente usando as informaes apresentadas a seguir e clique no
boto Insert:
First Name: Kim
Last Name: Abercrombie
Address: 9876 Maine Road
Zip Code: M24NG
City: Manchester
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-61
Country: Great Britain
Phone: 0161-123 555
Email Address: kim@litwareinc.com
Web Address: http://www.litwareinc.com
Credit Limit: 50000
News Subscriber: Sim
Verifique se o novo cliente foi adicionado fonte de dados usando o novo
Formulrio da Web Customers.
Feche o Internet Explorer.

Tarefa8:Desativaramquinavirtualereverterasalteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-62 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Seo2:VisualC#
Exerccio1:Conexocomumafontededados
Estas so as principais tarefas do exerccio:
1. Abrir um projeto da Web ASP.NET existente.
2. Adicionar um banco de dados SQL Server 2008 Express.
3. Adicionar um controle de fonte de dados ao controle do usurio.
4. Configurar um controle de fonte de dados.

Tarefa1:AbrirumprojetodaWebASP.NETexistente
Faa logon em 10560A-GEN-DEV como Aluno, com a senha Pa$$w0rd.
Abra o Microsoft Visual Studio 2010.
Abra a soluo CustomerManagement, localizada na pasta
D:\Labfiles\Starter\M8\CS.

Tarefa2:AdicionarumbancodedadosSQLServer2008Express
Adicione uma nova pasta de banco de dados denominada App_Data e
adicione um banco de dados existente a essa pasta, D:\LabFiles\Starter\
M8\CustomerManagement.mdf.

Tarefa3:Adicionarumcontroledefontededadosaocontroledousurio
Abra o controle do usurio Customer no modo Design.
Adicione um controle SqlDataSource ao controle do usurio para estabelecer
uma conexo com um banco de dados SQL Server.
Renomeie o controle SqlDataSource como CountriesSqlDataSource.
Salve o controle do usurio Customer.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-63
Tarefa4:Configurarumcontroledefontededados
No modo Design, com o controle CountriesSqlDataSource selecionado, exiba
a Marca Inteligente.
Abra o Configure Data Source Wizard, estabelea uma conexo com o banco
de dados CustomerManagement.mdf e crie uma nova string de conexo
denominada CustomerManagementConnectionString.
Configure a instruo SELECT de forma a incluir as colunas ID e Name da
tabela Countries.
Teste a consulta e verifique se voc obtm os dados corretos da tabela
Countries.

Observao:verifiqueseaslinhasretornadasincluemosvaloresparaascolunasIDe
Namedevriospases.
Salve o controle do usurio Customer.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-64 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio2:Associaodeumcontroledeservidorcom
umafontededados
Estas so as principais tarefas do exerccio:
1. Associar o controle DropDownList fonte de dados.
2. Transmitir os valores ao objeto Customer.

Tarefa1:AssociarocontroleDropDownListaumafontededados
Abra o controle do usurio Customer no modo Source.
Localize a marcao para o controle CustomerCountryDropDownList.
Remova o elemento ListItem esttico do controle
CustomerCountryDropDownList.
<asp:ListItem>USA</asp:ListItem>
Associe o controle CustomerCountryDropDownList ao controle
CountriesSqlDataSource usando o atributo DataSourceID.
DataSourceID="CountriesSqlDataSource"
Defina o campo de valor do controle CustomerCountryDropDownList como
a coluna ID do banco de dados, usando o atributo DataValueField.
DataValueField="ID"
Defina o campo de texto do controle CustomerCountryDropDownList como
a coluna Name do banco de dados, usando o atributo DataTextField.
DataTextField="Name"
Compile o controle do usurio e corrija todos os erros.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-65
Tarefa2:TransmitirosvaloresaoobjetoCustomer
Abra o controle do usurio Customer no modo Code.
Localize o cdigo do mtodo particular instantiateCustomerObject e
transmita o valor selecionado do controle CustomerCountryDropDownList
ao construtor da classe Customer usando a propriedade SelectedValue
inserida em um objeto new Guid.
// Instantiate new Customer object with user input
currentCustomer = new CustomerManagementEntities.Customer(
null, CustomerFirstNameTextBox.Text,
CustomerLastNameTextBox.Text,
CustomerAddressTextBox.Text, CustomerZipCodeTextBox.Text,
CustomerCityTextBox.Text, CustomerStateTextBox.Text,
new Guid(CustomerCountryDropDownList.SelectedValue),
CustomerPhoneTextBox.Text,
CustomerEmailAddressTextBox.Text,
CustomerWebAddressTextBox.Text,
int.Parse(CustomerCreditLimitTextBox.Text),
CustomerNewsSubscriberCheckBox.Checked,
DateTime.Now, "", null, "");
Compile o controle do usurio e corrija todos os erros.


U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-66 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Exerccio3:Modificaodeumafontededados
Estas so as principais tarefas do exerccio:
1. Criar o Formulrio da Web Customers.
2. Adicionar o controle SqlDataSource ao Formulrio da Web.
3. Configurar o controle SqlDataSource.
4. Adicionar o controle ListView ao Formulrio da Web.
5. Adicionar cdigo para salvar um cliente manualmente em uma fonte de dados.
6. Atualizar o mapa do site para habilitar a visualizao de todos os clientes.
7. Criar um cliente e verificar a Fonte de Dados.

Tarefa1:CriaroFormulriodaWebCustomers
Crie o Formulrio da Web Customers com base na pgina mestra Site.master.
Abra o Web Form Customers no modo Design.

Tarefa2:AdicionarocontroleSqlDataSourceaoWebForm
Adicione o controle SqlDataSource ao Web Form Customers.aspx.
Renomeie o controle SqlDataSource como CustomersSqlDataSource.
Salve o Formulrio da Web Customers.

Tarefa3:ConfigurarocontroleSqlDataSource
No modo Design, com o controle CustomersSqlDataSource selecionado,
exiba a Marca Inteligente.
Abra o Configure Data Source Wizard.
Selecione a string de conexo CustomerManagementConnectionString para
o controle CustomersSqlDataSource.
Configure a instruo SELECT de forma a incluir todas as colunas da tabela
Customers, verifique se possvel manipular os dados na fonte de dados e
utilize o mtodo de simultaneidade otimista.
Salve o Formulrio da Web Customers.

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-67
Tarefa4:AdicionarocontroleListViewaoFormulriodaWeb
Adicione o controle ListView ao Formulrio da Web Customers.
Renomeie o controle ListView como CustomersListView.
Associe o controle CustomersListView ao controle CustomersSqlDataSource
usando o recurso de Marca Inteligente.
Habilite a paginao no controle CustomersListView.
Salve o Formulrio da Web Customers.
Compile o controle do usurio e corrija todos os erros.
Exiba o Formulrio da Web Customers no navegador.
Feche o Internet Explorer.

Tarefa5:Adicionarcdigoparasalvarumclientemanualmenteem
umafontededados
Abra o controle do usurio Customer no modo Code.
Importe o namespace usado para acessar um banco de dados SQL Server 2008,
System.Data.SqlClient.
Importe o namespace usado com a camada desconectada do ADO.NET,
System.Data.
Importe o namespace para ler a string de conexo a partir do arquivo
web.config, System.Configuration.
Localize o manipulador de eventos CustomerInsertButton_Click.
protected void CustomerInsertButton_Click(object sender, EventArgs e)
{
// Did page validation succeed?
if (!Page.IsValid)
return;

// Add the current user name
currentCustomer.CreatedBy = Context.User.Identity.Name;
// Add the user credit limit
currentCustomer.CreditLimit = 50000;
}

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-68 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Remova a atribuio do valor 50000 propriedade CreditLimit.
// Add the user credit limit
currentCustomer.CreditLimit = 50000;
Acrescente o seguinte cdigo ao manipulador de eventos
CustomerInsertButton_Click usando um snippet de cdigo denominado
ADO.NET Insert Customer. O trecho de cdigo foi fornecido pelo desenvolvedor
snior e colocado na pasta My Code Snippets.
// Create and instantiate connection
using (SqlConnection customerManagementConnection = new
SqlConnection())
{
// Initialize connection string from web.config
customerManagementConnection.ConnectionString =

ConfigurationManager.ConnectionStrings["CustomerManagementConnecti
onString"].ConnectionString;

// Open connection
customerManagementConnection.Open();
// Declare and instantiate data adapter
SqlDataAdapter customerManagementDataAdapter = new
SqlDataAdapter();

// Declare and instantiate command objects
SqlCommand selectCommand = new SqlCommand("SELECT * FROM
Customers",
customerManagementConnection);
SqlCommand insertCommand = new SqlCommand(
"INSERT INTO Customers (FirstName, LastName, Address,
ZipCode, City, State, CountryID, Phone, EmailAddress, " +
"Url, CreditLimit, NewsSubscriber, CreatedDate, CreatedBy)
VALUES(@FirstName, @LastName, @Address, @ZipCode, @City, @State, "
+
"@CountryID, @Phone, @EmailAddress, @WebAddress,
@CreditLimit, @NewsSubscriber, @CreatedDate, @CreatedBy)",
customerManagementConnection);

// Assign command objects
customerManagementDataAdapter.SelectCommand = selectCommand;
customerManagementDataAdapter.InsertCommand = insertCommand;
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-69

// Declare and instantiate parameter objects
SqlParameter insertFirstNameParameter = new
SqlParameter("@FirstName", SqlDbType.NVarChar, 50, "FirstName");
SqlParameter insertLastNameParameter = new
SqlParameter("@LastName", SqlDbType.NVarChar, 30, "LastName");
SqlParameter insertAddressParameter = new
SqlParameter("@Address", SqlDbType.NVarChar, 50, "Address");
SqlParameter insertZipCodeParameter = new
SqlParameter("@ZipCode", SqlDbType.NVarChar, 10, "ZipCode");
SqlParameter insertCityParameter = new SqlParameter("@City",
SqlDbType.NVarChar, 30, "City");
SqlParameter insertStateParameter = new SqlParameter("@State",
SqlDbType.NVarChar, 30, "State");
SqlParameter insertCountryIDParameter = new
SqlParameter("@CountryID", SqlDbType.UniqueIdentifier, 0,
"CountryID");
SqlParameter insertPhoneParameter = new SqlParameter("@Phone",
SqlDbType.VarChar, 30, "Phone");
SqlParameter insertEmailAddressParameter = new
SqlParameter("@EmailAddress", SqlDbType.NVarChar, 50,
"EmailAddress");
SqlParameter insertWebAddressParameter = new
SqlParameter("@WebAddress", SqlDbType.NVarChar, 80, "Url");
SqlParameter insertCreditLimitParameter = new
SqlParameter("@CreditLimit", SqlDbType.Int, 0, "CreditLimit");
SqlParameter insertNewsSubscriberParameter = new
SqlParameter("@NewsSubscriber", SqlDbType.Bit, 0,
"NewsSubscriber");
SqlParameter insertCreatedDateParameter = new
SqlParameter("@CreatedDate", SqlDbType.SmallDateTime, 0,
"CreatedDate");
SqlParameter insertCreatedByParameter = new
SqlParameter("@CreatedBy", SqlDbType.VarChar, 15, "CreatedBy");


// Assign parameters to command object
insertCommand.Parameters.Add(insertFirstNameParameter);
insertCommand.Parameters.Add(insertLastNameParameter);
insertCommand.Parameters.Add(insertAddressParameter);
insertCommand.Parameters.Add(insertZipCodeParameter);
insertCommand.Parameters.Add(insertCityParameter);
insertCommand.Parameters.Add(insertStateParameter);
insertCommand.Parameters.Add(insertCountryIDParameter);
insertCommand.Parameters.Add(insertPhoneParameter);
insertCommand.Parameters.Add(insertEmailAddressParameter);
(O cdigo continua na prxima pgina.)
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-70 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
insertCommand.Parameters.Add(insertWebAddressParameter);
insertCommand.Parameters.Add(insertCreditLimitParameter);
insertCommand.Parameters.Add(insertNewsSubscriberParameter);
insertCommand.Parameters.Add(insertCreatedDateParameter);
insertCommand.Parameters.Add(insertCreatedByParameter);

// Declare and instantiate dataset
DataSet customerManagementDataSet = new
DataSet("CustomerManagementDataSet");
// Apply the full schema from the data source

customerManagementDataAdapter.FillSchema(customerManagementDataSet,
SchemaType.Source, "Customers");
customerManagementDataAdapter.MissingSchemaAction =
MissingSchemaAction.AddWithKey;
customerManagementDataAdapter.MissingMappingAction =
MissingMappingAction.Passthrough;
// Populate Customers DataTable
customerManagementDataAdapter.Fill(customerManagementDataSet,
"Customers");

// Create new row locally
DataRow newCustomerDataRow =
customerManagementDataSet.Tables["Customers"].NewRow();
newCustomerDataRow["ID"] = Guid.NewGuid();
newCustomerDataRow["FirstName"] = currentCustomer.FirstName;
newCustomerDataRow["LastName"] = currentCustomer.LastName;
newCustomerDataRow["Address"] = currentCustomer.Address;
newCustomerDataRow["ZipCode"] = currentCustomer.ZipCode;
newCustomerDataRow["City"] = currentCustomer.City;
newCustomerDataRow["State"] = currentCustomer.State;
newCustomerDataRow["CountryID"] = currentCustomer.CountryID;
newCustomerDataRow["Phone"] = currentCustomer.Phone;
newCustomerDataRow["EmailAddress"] =
currentCustomer.EmailAddress;
newCustomerDataRow["Url"] = currentCustomer.EmailAddress;
newCustomerDataRow["CreditLimit"] =
currentCustomer.CreditLimit;
newCustomerDataRow["NewsSubscriber"] =
currentCustomer.NewsSubscriber;
newCustomerDataRow["CreatedDate"] =
currentCustomer.CreatedDate;
newCustomerDataRow["CreatedBy"] = currentCustomer.CreatedBy;
(O cdigo continua na prxima pgina.)

U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-71

// Insert new row locally

customerManagementDataSet.Tables["Customers"].Rows.Add(newCustomer
DataRow);

// Update data source
if
(customerManagementDataAdapter.Update(customerManagementDataSet,
"Customers") == 1)
{
// Instantiate new Customer object
currentCustomer = new
CustomerManagementEntities.Customer();
// Reload page to refresh with "blank" input controls
Response.Redirect("~/InsertCustomer.aspx");
}
}
Salve o arquivo code-behind Customer.

Tarefa6:Atualizaromapadositeparahabilitaravisualizaode
todososclientes
Abra o arquivo web.sitemap.
Acrescente o novo elemento siteMapNode ao siteMapNode de Customers.
<siteMapNode title="All" description="View All Customers"
url="~/Customers.aspx" />
Salve e feche o arquivo web.sitemap.

Tarefa7:CriarumclienteeverificaraFontedeDados
Desenvolva a soluo CustomerManagement.
Execute o aplicativo Web CustomerManagement.
Abra o Formulrio da Web InsertCustomer.
Crie um novo cliente usando as informaes apresentadas a seguir e clique no
boto Insert:
First Name: Kim
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-72 IntroduoaoDesenvolvimentonaWebcomoMicrosoftVisualStudio2010
Last Name: Abercrombie
Address: 9876 Maine Road
Zip Code: M24NG
City: Manchester
Country: Great Britain
Phone: 0161-123 555
Email Address: kim@litwareinc.com
Web Address: http://www.litwareinc.com
Credit Limit: 50000
News Subscriber: Sim
Verifique se o novo cliente foi adicionado fonte de dados usando o novo
Formulrio da Web Customers.
Feche o Internet Explorer.

Tarefa8:Desativaramquinavirtualereverterasalteraes
Desative a mquina virtual 10560A-GEN-DEV.
Reverta as alteraes efetuadas na mquina virtual 10560A-GEN-DEV.

Observao:asrespostasdosexercciosestonoCDcomplementardocurso.

Encerramentodolaboratrio
Depois de concluir o laboratrio, desligue a mquina virtual 10560A-GEN-DEV e
reverta as alteraes.
1. No Microsoft Hyper-V Manager, no painel Virtual Machines, clique com o boto
direito do mouse em 10560A-GEN-DEV e, em seguida, clique em Turn Off.
2. Na caixa de dilogo Turn Off Machine, clique em Turn Off.
3. No Hyper-V Manager, no painel Virtual Machines, clique com o boto direito
do mouse em 10560A-GEN-DEV e depois clique em Revert.
4. Na caixa de dilogo Revert Virtual Machine, clique em Revert.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Revis
Pergun
1. Com
2. Com

odolabora
ntas e respostas
mo possvel hab
mo estabelecer um
Gerenciamentodedad
atrio
s de reviso
bilitar a pagina
ma conexo com

dosemumaplicativoWeb
o para um contro
m um banco de da
bMicrosoftASP.NET4.
ole GridView?
ados SQL Server?
0 8-73

?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
8-74 Introduo
Revisod
complem
Pergun
1. Com
2. Qu
obj
3. Qu

aoDesenvolvimentonaW
domdu
mentares
ntas e respostas
mo criar uma con
e objeto usado
eto DataSet e vic
al a principal di
WebcomoMicrosoftV
uloeinfo
s de reviso
nexo com um ba
para facilitar o tr
ce-versa?
iferente entre um

VisualStudio2010
rmaes
anco de dados no
ransporte a partir
m objeto DataSet
o Visual Studio 20
r da fonte de dado
e um objeto Data

010?
os at um
aReader?
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S
GerenciamentodedadosemumaplicativoWebMicrosoftASP.NET4.0 8-75
Problemas e cenrios do mundo real
1. Voc precisa se conectar a um banco de dados Oracle. Qual a maneira mais
fcil de estabelecer essa conexo?
Use o Provedor de Dados OLE DB .NET Framework.
2. Em um servidor de produo, no qual muitas conexes esto abertas com o
banco de dados, parece que, depois de alguns dias de atividade, o servidor
Web e o servidor de banco de dados ficaram mais lentos devido quantidade
cada vez maior de memria e recursos de conexo em uso. Qual a primeira
coisa que voc precisa verificar?
Voc precisa verificar se os objetos de conexo foram fechados corretamente.

Prticas recomendadas
Mencione algumas prticas recomendadas no contexto da sua prpria situao
corporativa.
Objetos de conexo sempre devem ser explicitamente descartados.
Use um objeto DataTable, em vez de um objeto DataSet, quando apenas for
necessrio trabalhar localmente com o contedo de uma nica entidade de
banco de dados. Isso economiza recursos.
Sempre que possvel, insira a string de conexo no arquivo web.config,
tornando-a acessvel a todo o aplicativo Web e facilitando a tarefa do
administrador de alterar o arquivo sem recompilar o cdigo.
U
S
O

E
X
C
L
U
S
I
V
O

D
E

I
N
S
T
R
U
T
O
R
E
S

M
C
T
.

P
R
O
I
B
I
D
O

O

U
S
O

P
O
R

A
L
U
N
O
S

Você também pode gostar