Buscar

Asp net 3 5 vb net e c#

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 212 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 212 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 212 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é 
protegidos por direitos autorais e outros direitos de propriedade intelectual; 
Este documento é de distribuição gratuita para uso pessoal. É vedada qualquer outra 
forma de utilização, divulgação, publicação, distribuição etc. sem autorização do autor. 
 
Sobre o Autor 
Fernando Amaral trabalha a mais de 10 anos com o desenvolvimento de software. É 
certificado Microsoft MCP, MCAD, MCSD, MCDBA e MCT, Comptia CDIA+, 
Project Managment Institute PMP. É Pós Graduado em Gestão de Sistemas de 
Informação pela Uniderp e em Melhoria de Processo de Software pela UFLA. Além 
disso tudo é Ateu. Atualmente reside em Campo Grande MS. 
Sobre www.fernandoamaral.com.br 
Eu mantenho um site com alguns artigos e tutoriais de tecnologia no endereço 
www.fernandoamaral.com.br. Através do site existe um formulário onde posso ser 
contatado.
Sobre ASP.NET 3.5 em VB.NET e C# 
Existe muito conteúdo para quem quer aprender ASP.NET. Existem centenas de bons 
livros. Porém este curso em formato digital traz algumas características que talvez você 
não encontre em nenhum lugar: 
 
É completo no sentido que abrange todos os principais temas relacionados ao 
ASP.NET 3.5; 
 
Segue uma seqüência lógica. Você não precisará ficar garimpando informações 
em lugares diferentes; 
 
É em português. 
Porque não um Livro? 
Este curso foi criado dentro de minhas possibilidades, de maneira que não precisei 
assumir nenhum compromisso. 
ASP.NET 3.5 em VB.NET e C# 
1. Introdução ao ASP.NET....................................................
 
7 
2. Visual Studio 2008: O ambiente e as linguagens.............
 
13 
3. Web Forms.......................................................................
 
31 
4. Controle............................................................................
 
33 
5. Master Page......................................................................
 
44 
6. Themes e Skins.................................................................
 
53 
7. Navigation........................................................................
 
59 
8. WebParts.......................................................................... 71 
10 LINQ .............................................................................. 116 
11. MemberShip e Roles .....................................................
 
119 
12 .Manutenção de Estado................................................... 
 
153 
13 . ASP.NET AJAX ...........................................................
 
167 
14. Criando e Consumindo WebServices ............................
 
179 
15. Criando uma página de erros personalizada................... 
 
188 
16. Eventos da aplicação...................................................... 191 
17. Distribuindo sua Aplicação ...........................................
 
193 
18. Relatórios com Crystal Report ......................................
 
202 
6 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
1. Introdução ao ASP.NET 
Desenvolver aplicações nunca foi tão fácil. Ambientes RAD cada vez mais modernos e 
amigáveis tem tornado o trabalho dos arquitetos de software cada vez mais simples. 
Com o versão 3.5 do ASP.NET, conseguiu-se atingir níveis de produtividade nunca 
antes imaginados. 
Este curso tem por objetivo introduzir o desenvolvedor no mundo do desenvolvimento 
de aplicações Web utilizando o ASP.NET 3.5. Não é um curso introdutório de lógica de 
programação. 
Os exemplos ao longo do curso serão todos demonstrados em VB.NET e C#. 
Blocos de código serão precedidos pelo ícone da linguagem utilizada: 
 para código em VB 
 
para código em C# 
O que é o Microsoft .NET FrameWork? 
Tradicionalmente o desenvolvedor escreve Software para um sistema Operacional ou 
dispositivo especifico. Por exemplo, ao criar um programa no Delphi 7 ou no Visual 
Basic 6, ele esta criado um Software para rodar em Sistemas Operacionais Windows 
sobre a plataforma Intel. 
Ao desenvolver um software para o .NET, o desenvolvedor ao invés disto esta fazendo 
um software para rodar em qualquer dispositivo ou plataforma que tenha o .NET 
Framework instalado. 
Existem dezenas de linguagem que podem ser usadas para criar um programa .NET, a 
Microsoft desenvolveu o VB.NET, uma versão Orientada a Objetos do clássico VB e o 
C#, que herdou sua sintaxe do C++. Outras empresas desenvolveram outras: COBOL, 
Delphi, Fortran etc. só para citar algumas. Você mesmo pode criar sua própria 
linguagem. A escolha entre uma linguagem ou outra é apenas uma questão de sintaxe. 
7 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Isto é possível porque um programa escrito para .NET é compilado em uma linguagem 
intermediaria chamada MSIL (Microsoft Intermediate Language). Não importa qual 
linguagem em que você codificou, o resultado, em termos de performance, qualidade, 
tamanho dos binários etc. será o mesmo. O arquivo compilado em MSIL normalmente 
resulta um uma DLL, denominada assembly. 
Quando o programa for executado pela primeira vez, entre em cena o JIT (Just In Time 
Compiler), que vai fazer uma nova compilação do programa, desta vez de acordo com 
as especificações do sistema operacional e do dispositivo em que o .NET Framework se 
encontra. 
Desenvolver um sistema para o plataforma .NET, traz mais alugmas vantagens além de 
das ficaram óbvias nesta introdução. A mais importante é que o seu programa vai rodar 
em um ambiente protegido e especifico, sem ter que se preocupar com as especificações 
ou problemas do sistema operacinal. Toda a interação com este, como por exemplo, o 
gerencimento de memória, é feita pelo .NET. 
ASP.NET 1.X 
Nos ultimos anos surgiram fantásticas IDEs para desenvolvimento de aplicações 
Windows. Algumas permitiam que você abrisse uma tabela qualquer, permitindo ainda 
a sua edição, sem sequer escrever uma linha de código. Outras através de assistentes 
automatizavam tarefas poupando tempo e muitas dores de cabeça. Surgiram ainda 
diversas ferramentas que prometiam a criação de aplicativos inteiros sem a necessidade 
de escrever uma linha de código qualquer. 
Porem não podemos dizer o mesmo para as aplicações Web. Além algumas frustadas 
tentativas, não existiu nenhum ambiente de alta produtividade como existiam para 
aplicações convencionais. As linguagens, principalmente o ASP classico, semelhante ao 
Visual Basic, era limitada é sem os recusos de linguagens OO. 
Ao planejar o .NET, a Microsoft vislumbrou um ambiente para aplicações Web onde se 
pudesse desenvolver aplicações no mesmo ambiente e com as mesmas facilidades de 
aplicações convencionais, utilizando a mesma linguagem. 
8 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Promessa cumprida: O .NET 1.x junto com o Visual Studio 2002 / 2003 proporcionou 
um ambiente para aplicações WEB, totalmente integrado, com as facilidades só antes 
vistas em ambientes de aplicações convencionais: WYSIWYG, Drag and Drop, 
Intellisense, recursos de depuração avançados etc. Já era possivel exibir uma tabela 
numa aplicação WEB com duas linhas de código, e sem escrever uma Tag HTML 
sequer! 
ASP.NET 2.0Não há duvidas que a plataforma .NET 1.x e o ASP.NET 1.x mudaram a maneira como 
as aplições Web são desenvolvidas. Porém a equipe de desenvolvimento da plataforma 
percebeu que muito ainda poderia ser feito, principalmente no que diz respeito a 
produtividade, e esse foi o objetivo principal da equipe de durante seu 
desenvolvimento. Como resultado, houve uma melhora de produtividade em até 70% ! 
Vejamos algumas das melhorias do ASP.NET 2.0 em relação ao seu antecessor: 
 
Mais de 50 novos Server Controls 
 
Novas ferramentas adiminstrativas 
 
Nova IDE do Visual Studio 2005 
 
Site Navigation: Controles que facilitam a navegação em Web Sites 
 
Master Pages: Agora é possível utilizar herança visual em aplicações Web, o que 
na versão 1.x só era possivel com aplicações Windows Forms. 
 
Themes: Tornam mais facil o gerenciamento do visual de sua aplicação 
 
Acesso a Dados: O ADO.NET embora extramente eficiente, era 
demasiadamente complexo. O Acesso a dados foi reformulado e simplificado. 
 
Snippets: Partes de códigos especificas que podem ser armazenadas para 
utilização futura. 
 
O ASP.NET foi o primeiro ambiente que permitiu que se desenvolvessem 
aplicações convencionais ou para Web em uma mesma IDE, utilizando a 
mesma linguagem. 
 
Normalmente você não precisa ser um profundo conhecedor de HTML para 
desenvover uma aplicação Web no VS 2005. Porém um conhecimento básico 
é recomandado: sempre há necessidade de algum ajuste manual. 
9 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
ASP.NET 3.5 
As mudanças do ASP.NET 2.0 e 3.5 foram poucas, porém significativas. Na verdade o 
core engine das duas versões continua o mesmo. Para projetos em ASP.NET 3.5 o 
ASP.NET AJAX Extensions passou a estar integrado a IDE do Visual Studio, não é 
mais necessário baixar e instalar separadamente. É encontrado no assemblie 
System.Web.Extensions.dll. 
Outra grande novidade, já há bastante esperada é o LINQ. A Gap que existe entre dados 
relacionais e objetos já não é um assunto novo, já recebendo inclusive artigos meus. Já 
postei também alguns artigos técnicos sobre LLBLGen e NHibernate. Agora o .NET 
avança nesse sentido com o LINQ. O LINQ não é nenhuma novidade, porém agora é 
integrado ao Visual Studio. A idéia do LINQ também não é nova, com esta tecnologia 
você pode operar o banco de dados em uma linguagem nativa, como se tivesse gerando 
código VB.NET ou C#. É encontrado nos assemblies System.Core.dll, 
System.Data.Linq.dll, System.Xml.Linq.dll e System.Data.DataSetExtensions.dll. 
Também há controles novos. Além dos controles Ajax Extensions que na versão 
anterior deviam ser instalados separadamente, existem mais três novos controles: 
ListView, DataPager e LinqDataSource. O Listview é um controle de exibição de dados 
tabulares, semelhante ao Datagrid e GridView, porém com novas funcionalidades e 
maior controle sobre o resultado produzido. DataPager é um controle que prove 
paginação de dados ao Listview. LinqDataSource é mais um controle de acesso a dados, 
como ObjectDataSource e o SQLDataSource, porém utilizando o modelo LINQ descrito 
em sessão anterior. 
Estrutura de uma aplicação ASP.NET 2.0 e 3.5 
Nesta sessão apresento algumas considerações sobre o estrutura de aplicações ASP.NET 
2.0 e 3.5, que como dito em seção anterior, permaneceram inalterados. 
Você já percebeu que muita coisa mudou entre o ASP.NET 1.x e seu predecessor. Uma 
das grandes propagandas no lançamento da primeira versão do ASP.NET era o modelo 
code-behind, onde apresentação e código de servidor ficam armazenados em arquivos 
10 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
fisicamente separados, tornando o código mais limpo e intuitivo tanto para o designer 
quanto para o programador. Trabalhar com tudo em um único arquivo até era possível, 
porém desvantajoso. 
No ASP.NET 3.5, embora o padrão seja um arquivo único, pode-se facilmente optar em 
trabalhar com arquivos separados, basta desmarcar a opção place code in separated file 
na caixa de dialogo de criação de um novo Web Form: 
 
Este novo modelo é denominado code-inline. Se você optar por trabalhar com este 
modelo, seu código de servidor vai estar separado entre tags Script. O grande problema 
na versão 1.x era que trabalhando com um único arquivo perdíamos alguns recursos 
poderosos de programação, como o Intellisense. Na versão 2.0 e 3.5 não há qualquer 
problema: tudo que funciona no modelo code-behind funciona também no code-inline. 
Post-Back entre páginas 
Até o.NET 1.x um controle só poderia causar um post back para a própria página. Agora 
esta limitação acabou, através da propriedade PostBackUrl, presente no botão de 
comando e similares, que permite que seja executa um postback para outra pagina Asp. 
Este novo recurso é conhecido como Cross-Page Posting. 
11 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Agora é possível inclusive ler valores de controles ou propriedades de páginas que 
deram origem ao postback. Esta fantástica inovação surgida no ASP.NET 2.0 permite 
tornar o código mais limpo, mas otimizado, além de reduzir a necessidade de utilização 
de variáveis de sessão, querystring e outros. 
Pastas 
A partir da versão 2.0 o ASP.NET uma aplicação Web deixou de ser orientada a projeto 
e passou a ser orientada a arquivos. Em conseqüência foram definidas uma série de 
pastas com funções especificas, vamos ver as principais: 
 
App_Code: Para armazenamento de classes 
 
App_data: Armazena fontes de dados 
 
App_Themes: Armazena um tema. Estudaremos temas mais adiante. 
 
App_LocalResources: Armazena arquivos de recursos 
Arquivos 
Nesta sessão vamos ver os principais tipos de arquivos que uma aplicação ASP.NET 
pode conter: 
 
Web.config: è um arquivo contendo as configurações da aplicação, formatado 
com XML. 
 
.aspx: arquivo contendo a apresentação de uma página. 
 
.vb ou .cs: arquivo com código de servidor relacionado a uma página 
 
Global.aspx: Arquivo contendo os eventos globais da aplicação. 
 
.master: Arquivo contendo uma MasterPage. 
 
.ascx: Arquivo contendo um WebUserControl 
 
.css: Arquivo css 
 
.resx: Arquivo de recursos 
 
.sitemap: Arquivo contendo um mapa do site 
 
.skin: Arquivo contendo um skin 
12 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
2. Visual Studio 2008: O ambiente e as linguagens 
Nesta seção vamos ver os principais compontentes da IDE do VS 2008. 
 
A esquerda, por padrão oculta, existe a Barra de Ferramentas, onde ficam agrupados por 
categoria os compontes padrão do VS ou de terceiros instalados no ambiente. Para 
instalar um novo componente, basta clicar com o botão direito sobre a barra e selecionar 
Choose Itens. Você pode também personalizar a sua barra de ferramentas da maneira 
que achar melhor. 
A direita temos o Solution Explorer, que permite uma navegação rápida entre os 
arquivos de um projeto ou solução. 
Abaixo, a janela de propriedades, permite configurar as propriedades de um controle ou 
de um formulário, bem como acessar eventos. 
Entre as principais novidadesdo ambiente temos as notificações de status da linha 
através de cores: Uma nova linha de código ou código alterado é marcado como 
amarelo. Se a linha já foi salva sua cor muda para verde. 
13 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Outra novidade são os Snippets: pedaços de código pré fabricados para executar uma 
tarefa especifica. Tudo bem que isso não é uma grande novidade e já foi utilizada em 
outras IDEs por aí a fora, mas com certeza o recurso esta melhor do que nunca e poderá 
lhe ajudar a poupar bastante trabalho. Para inserir um Snippet basta chama-lo no menu 
rápido sobre a área de código. Obviamente que você também poderá criar seus proprios 
snippets. 
SINTAXE: VISUAL BASIC .NET e C# 
Vamos introduzir os principais aspectos d a sintaxe de programação do VB.NET e do 
C#. Este não será um estudo completo ou abrangente, para tal procure bibliografia 
específica. 
Comentários 
No C# comentário de linha são feitos com duas barras. Comentários em bloco são 
aberto com \* e fechados com *\. 
No VB.NET Comentários são inseridos com aspas simples no inicio da linha. O 
VB.NET não permite o comentário de blocos de código, a solução é comentar linha a 
linha. Porém o Visual Studio possui em sua barra de ferramentas padrão o comando 
 
Comment out the selected lines que comenta um bloco de código selecionado e 
 
Uncomment the selected lines que remove os comentários, a utilização é simples e 
intuitiva, e funcina em ambas as linguagens 
 
este é um comentário válido 
Dim i as Integer esta também é um comentário válido 
 
//este é um comentário válido 
int x = 3; 
/* este também é 
um comentário válido */
 
Lembre-se sempre que o C# diferencia entre caracteres maisculos e 
minusculos, o VB.NET não. 
 
Você já deve ter encontrado discussões ardentes na internet sobre C# ser 
melhor que VB.NET e vice-versa. A verdade que conhecendo os 
fundamentos da plataforma sabemos que o resultado é exatamente igual. 
14 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
No Visual Studio 2008 também é possível documentas seu código sem a necessidade de 
instalar qualquer plug-in, basta adcionar três aspas (vb.net) ou tres barras (C#) antes do 
procedimento. O VS automaticamente preenche o esqueleto do documento. Observe o 
exemplo abaixo: 
 
''' <summary> 
''' Função para somar dois números 
''' </summary> 
''' <param name="x">Primeiro número a somar</param> 
''' <param name="y">Segundo número a somar</param> 
''' <returns>Resultado da soma</returns> 
''' <remarks>By Fulano</remarks> 
Public Function Somar(ByVal x As Integer, ByVal y As Integer) _ 
 
As Integer 
 Dim z As Integer 
 z = x + y 
 Return z 
End Function
 
/// <summary> 
/// Função para somar dois números 
/// </summary> 
/// <param name="x">Primeiro número a somar</param> 
/// <param name="y">Segundo número a somar</param> 
/// <returns>Resultado da soma</returns> 
int Somar(int x, int y) 
{ 
 
int z; 
 
z = x + y; 
 
return z; 
} 
O VS ainda pode gerar um diagrama de sua classe, basta clicar com o botão direito 
sobre o arquivo, e selecionar View Class Diagram 
Tipos de Dados 
Sendo o .NET um framework, não existem tipos de dados desta ou daquela linguagem. 
Os tipos são todos do .NET. Obviamente que existem diferenças de sintaxe na 
declaração e manipulação destas variaveis. Abaixo segue uma relação dos principais 
tipos de dados, para uma relação completa consulte a documentação do VS 2008: 
 
Você ainda pode criar comentários no VB.NET utilizando Rem. 
15 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Boolean 
 
Verdadeiro ou falso 
 
Char - caractere unicode de 16 bit 
 
String - String 
 
Byte 
 
inteiro de 8 bit, sem sinal 
 
UInt16 - inteiro de 16 bit, sem sinal 
 
UInt32 - inteiro de 32 bit, sem sinal 
 
UInt64 - inteiro de 64 bit, sem sinal 
 
Int16 
 
inteiro de 16 bit, com sinal 
 
Int32 - inteiro de 32 bit, com sinal 
 
Int64 - inteiro de 64 bit, com sinal 
 
SByte - - inteiro de 8 bit, com sinal 
 
DateTime 
 
data e hora 
 
Decimal 
 
número decimal 
 
Double 
 
número de ponto flutuante com 64 bit 
 
Single - número de ponto flutuante com 32 bit 
Operadores 
VB.NET C# 
And & 
Or | 
XOr ^ 
Not ! 
Is Nothing
 
== null
 
<> != 
& + 
\ / 
\= /= 
Mod % 
= == 
 
Um valor nulo em VB.NET é representado por NOTHING, em C# por null. 
 
O tipo Int32 pode ser representado no VB.NET por Integer e int no C#. 
16 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Variaveis e Constantes 
No VB.NET para declarar uma variável usamos a palavra DIM, seguido pelo nome da 
variável e tipo: 
 
Dim i as Integer 
A sintaxe do C# é semelhante ao do C++: 
 
int z; 
Podemos ainda declara diversas variaveis de um mesmo tipo numa unica declaração: 
 
Dim i,j,k as Integer 
 
int x, y, z; 
Ou ainda variaveis de diferentes tipos: 
 
Dim i,m as Integer, j,k as Single 
 
int i, m; Double j,k; 
Obviamente i e m serão do tipo inteiro, e j e K do tipo single. 
É possível ainda incializar a variável na sua declaração: 
 
int z = 1; 
Para declarar uma constante utilizamos a declaração Const: 
 
Dim i as Integer = 1
 
Const x as integer = 1
 
17 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Enumeradores 
Para declarar um enumerador usamos a declaração Enum 
 
Você opcionalmente pode inicializar cada menbro, se você não o fizer, o primeiro 
menbro será inicializado com zero e assim sucessimvamente. 
 
Coleções 
Poderíamos dedicar um longo capítulo ao estudo de coleção, sendo nosso objetivo fazer 
uma introdução a parte de sintaxe, veremos apenas arrays: 
 
const int x = 1;
 
Public Enum Semana 
 Domingo 
 Segunda 
 Terça 
 Quarta 
 Quinta 
 Sexta 
 Sabado 
End Enum
 
enum Semana { Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sabado 
};
 
Enum Semana 
 Domingo = 1 
 Segunda = 2 
 Terça = 3 
 Quarta = 4 
 Quinta = 5 
 Sexta = 6 
 Sabado = 7 
End Enum
 
enum Semana { Domingo = 1, Segunda =2, Terça =3, Quarta =4, Quinta =5, 
Sexta =6, Sabado =7 };
 
Dim MeuArray(1) As String 
MeuArray(0) = "Um" 
MeuArray(1) = "Dois"
 
18 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Ao contrário do legado VB, um array possui sempre índice iniciado em zero, portanto 
um array declarado com (1), terá duas posições. 
Estruturas de decisão 
O classico if não poderia faltar. A sintaxe é semelhante as suas linguagens legadas:Obviamente que a intrução else é opcional. 
Outra forma de controle de fluxo conhecido é o Select (VB.NET) ou Switch (C#): 
 
string[] MeuArray = new string[1]; 
arr[0] = "Um"; 
arr[1] = "Dois";
 
Dim Nome As String = "ASP.NET" 
If Nome = "VB.NET" Then 
 MessageBox.Show("Certo!") 
Else 
 MessageBox.Show("Errado!") 
End If
 
string Nome = "ASP.NET"; 
if (Nome == "C#") 
{ 
 MessageBox.Show("Certo!"); 
} 
else 
{ 
 MessageBox.Show("Errado!"); 
} 
Dim Nome As String = "VB.NET" 
Select Case Nome 
Case "VB.NET" 
 
MessageBox.Show("Certo!") 
Case "C#" 
 
MessageBox.Show("Errado!") 
Case Else 
 
MessageBox.Show("?") 
End Select
 
string Nome = "C#"; 
19 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Note que no C# devemos usar a palavra break para quebrar o fluxo 
Laços 
Vamos estudar três estruturas de laços: For, while e laços em coleções. 
O laço for tem a sintaxe semelhante em qualquer linguagem: 
 
Dim i As Integer 
For i = 1 To 10 
 
MessageBox.Show(CStr(i)) 
Next i
 
for (int i = 0; i < 10; i++) 
 
MessageBox.Show(Convert.ToString(i)); 
A sintaxe do C# nos permite facilmente fazer um loop regressivo, basta alterarmos o 
último argumento de i++ para i--, e obviamente mudarmos a condição: 
 
for (int i = 0; i < 10; i++) 
 
MessageBox.Show(Convert.ToString(i)); 
No VB.NET podemos conseguir o mesmo efeito utilizando a palavra chave Step: 
 
Dim i As Integer = 0 
For i = 10 To 1 Step -1 
 
MessageBox.Show(CStr(i)) 
Next i
 
Existem laços While com teste de condição no inicio da sentença ou no final, neste 
último o laço executa sempre uma primeira vez, independente do resultado da avaliação. 
Vamos ver exemplos do primeiro caso: 
 
switch (Nome){ 
 
case "VB.NET": 
 
MessageBox.Show("Certo!"); 
 
break; 
 
case "C#": 
 
MessageBox.Show("Errado!"); 
 
break; 
 
default: 
 
MessageBox.Show("?"); 
 
break; 
} 
20 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Dim i As Integer = 0 
Do While i < 5 
 
MessageBox.Show(CStr(i)) 
 
i += 1 
Loop
 
int i = 0; 
while (i<5) { 
 
MessageBox.Show(Convert.ToString(i)); 
 
i += 1; 
} 
Finalmente, o que pode ser novidade para quem ainda não conhece a plataforma .NET 
são os laços em coleções, que permitem percorrer um a um os membros de uma coleção 
qualquer. 
 
Dim numbers() = {4, 5, 6, 1, 2, 3, -2, -1, 0} 
 Dim i As Integer 
 For Each i In numbers 
 
 MessageBox.Show(Convert.ToString(i)) 
 Next
 
int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 }; 
foreach (int i in numbers) 
{ 
 
MessageBox.Show(Convert.ToString(i)); 
} 
Neste exemplo a titulo de simplicidade nossa coleção é um array, porém a estrutura 
funciona da mesma forma para qualquer tipo de coleção. 
Convertendo valores 
Para a conversão entre tipos de dados utilize a classe convert, seguida do método 
apropriado ao tipo que ser converter: 
 
Dim i As Integer, s As String 
s = Convert.ToString(i) 
 
int i; 
string s; 
s = Convert.ToString(i);
 
21 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Procedimentos e funções 
Em VB.NET uma função começa com a palavra reservada function e termina com o 
tipo do dado de retorno. Já no C# inicia com o tipo do dado de retorno: 
 
Function Somar( x As Integer, y As Integer) _ 
 
As Integer 
 Dim z As Integer 
 z = x + y 
 Return z 
End Function
 
int Somar(int x, int y) 
{ 
 
int z; 
 
z = x + y; 
 
return z; 
} 
O retorno é inidicado pela palavra-chave return ou pelo próprio nome da função. 
Um procedimento que não retorna valor em VB.NET inicia com a palavra chave Sub, e 
em C# com void: 
 
Sub Somar( x As Integer, y As Integer) _ 
 
As Integer 
 Dim z As Integer 
 z = x + y 
End Function
 
void Somar(int x, int y) 
{ 
 
int z; 
 
z = x + y; 
} 
Visibilidade ou Scopo 
 
A passagem de parametros por padrão ocorre por valor. Para indicar um 
parametro a ser passado por referencia, utilize ByRef no VB.BET e ref no 
C#. 
22 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
A visibilidade de um procedimento, classe, inferface etc. é definada através das palavras 
reservadas a seguir: 
Public / public: acessível de qualquer lugar do projeto ou de instancias da classe 
Private / private: Acessível apenas dentro do mesmo contexto; 
Friend / internal: Acessivel apenas dentro do projeto; 
Protected / protected: Acessivel apenas dentro da classe ou de uma classe derivada; 
Protected Friend / Protected Internal: Acessivel apenas dentro da classe derivada ou do 
mesmo projeto; 
Tratamento de exceções 
O tratamento de exceções será surpresa apenas para quem esta começando agora a 
conhecer o VB.NET, que com o lançamento do linguagem ganhou uma forma 
estruturada de tratamento de erro semelhante as demais linguagens OO. È o adeus ao 
On error go to. 
O tratamento de erro é formando por uma estrutura Try...Catch..Finally. Entre o Try e o 
Catch deve ser colocado o código que você quer proteger de uma exceção. Entre Catch 
e Finnally o código a ser executado no caso de ocorrer uma exceção, e finalmente após 
Finnally algum código que você queira que obrigatóriamente seja executado, ocorrendo 
ou não uma exceção, geralmente usado para liberar algum recurso alocado. Vale 
lembrar que você pode usar apenas parte da funcionalidade do bloco, por exemplo, se 
você que apenas tratar uma exceção, pode contruir um bloco contendo apenas os 
comando try...catch. Por outro lado se você quer apenas garantir que um recurso seja 
liberado, como uma conexão com o banco de dados pro exemplo, você pode fazer uso 
apenas do bloco try...finally. 
Outra caracteristica importante é que as classes de exceção são executadas da mais 
especifica para a menos especifica, isto permite um tratamento de erros mais robusto e 
eficaz. Normalmente você deve terminar seu tratamento com a classe Exception, que é 
menos específica e que da origem a todas as demais. 
 
Ao declarar algo sem a visibilidade, por padrão será private. 
23 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Try 
 
My.Computer.FileSystem.CopyFile("Aspnet.pdf", "Aspnet.bkp") 
Catch ex As System.IO.IOException 
 
MessageBox.Show("Ocorreu um erro na cópia do arquivo") 
Catch ex2 As Exception 
 
MessageBox.Show("Ocorreu um Erro desconhecido") 
End Try
 
try 
{ 
 
string s = null; 
} 
catch (ArgumentNullException s) 
{ 
 
MessageBox.Show("Ocorreu um erro na string"); 
} 
catch (Exception r) 
{ 
 
MessageBox.Show("Ocorreu um Erro desconhecido"); 
} 
With 
O with, que não tem equivalente no C#, permite omitir o nome de um objeto quando o 
mesmo é utilizado em diversas linhas. 
 
With GridView1 
 
.Caption= "GridView" 
 
.EditIndex = 0 
 
.Enabled = False 
End With 
Orientação a Objetos 
Vamos também apresentar alguns aspectos da sintaxe da criação de classes no VB.NET 
e no C#. Porém antes é preciso conhecer o conceito de NameSpaces. 
NameSpaces é uma estrutura simples, porém muito eficiente de organizar seu código. 
Por exemplo, uma suposta empresa GoodSoftware pode definir que todas suas classes 
terão como NameSpace raiz GoodSoftware. Abaixo deste existirão os NameSpaces 
ERP, CRM e Global. O NameSpace ERP abrigaria as classes de seus novo sistema 
ERP, o CRM idem, e o Global classes que para serem utilizadas em ambos os projetos. 
Dentro de cada um destes NameSpaces é possível criar n outros. Outra importante 
24 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
vantagem do seu uso é redução de problemas com conflitos com nomes repetidos de 
classes ou métodos. 
Abaixo vemos a declaração básica de uma classe de Nome Class1, dentro de um 
NameSpace 
 
Namespace GoodSoftware 
 Public Class ERP 
 '... 
 End Class 
End Namespace
 
namespace GoodSoftware 
{ 
 public class ERP 
 { 
 // 
 } 
} 
Um construtor de uma classe em VB.NET se define com a palavra chave New, já em C# 
deve ter no mome da classe 
 
Public Sub New() 
 ... 
End Sub
 
public Class1 () 
{ 
 
// 
} 
Obviamente que você pode criar um construtor com passagem de parametros. 
Já as propriedades são bastante singular em cada linguagem: 
 
Você não é obrigado a criar uma classe dentro de um NameSpace. 
 
Não é preciso existir relação entre nomes de classes e namespaces com o 
nome fisico do arquivo. Você pode inclusive colocar diversas classes ou 
namespaces dentro de um mesmo arquivo. 
25 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Public Property Nome() As String 
 
Get 
 
Return Pnome 
 
End Get 
 
Set(ByVal value As String) 
 
Pnome = value 
 
End Set 
End Property
 
public String Nome 
{ 
 
get { return Pnome; } 
 
set { Pnome = value; } 
} 
Caso você deseje criar um método que por algum motivo não precise ou não deva ter 
sua classe instanciada, basta você acrescentar a palavra chave shared no VB.NET ou 
static no C#, sempre após a declaração de visibilidade do método: 
 
Public Shared Function Somar(ByVal x As Integer, ByVal y As Integer) _ 
As Integer 
 
Dim z As Integer 
 
z = x + y 
 
Return z 
End Function
 
public static int Somar(int x, int y) 
{ 
 
int z; 
 
z = x + y; 
 
return z; 
} 
A herança de uma classe é definida pela palavra chave inherits em VB.NET e em C# 
através da notação : classe pai
 
Public Class Class2 
 Inherits Class1 
End Class
 
Uma propridade pode ser apenas leitura ou apenas escrita. Além de inicar 
estas caracteristica na declaração da propriedade, você deverá omitir as 
sentenças get e set, respectivamente. 
 
Lembre-se que um método definido com shared / static, não pode usar 
qualquer recurso da classe, como por exemplo uma variavel privada ou 
mesmo, uma propriedade ou um outro método. 
26 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
class Class2: Class1 
{ 
} 
Abaixo alguns outros recursos de OO do .NET, não vou demonstrar exemplos porque 
extrapolam o objetivo básico desta sessão. A primeira palavra é a notação em VB.NET 
e a segunda em C#: 
 
NotInheritable / sealed: Também conhecido com Classe Fechada , indica que 
uma classe não pode ser usada como base, ou seja, nenhuma outra classe poderá 
herdá-la 
 
MustInherit / abstract: Define uma classe abstrato, onde apenas uma classe filho 
poderá ser instanciada. 
 
Overloads: permite que um método seja sobrecarregado, ou seja, que possa 
haver métodos com a mesma função, porém com assinaturas diferentes. O uso 
do termo é desnecessário tanto em VB.NET quanto em C#, pois o ambiente 
entende que métodos com o mesmo nome porem com assinaturas diferentes 
estão sobrecarregados. 
 
Overridable / virtual: Indica que uma classe filho deve programar uma nova 
versão do método. 
 
Overrides / override: Utilizado para sobrescrever uma implementação na classe 
pai. 
 
MustOverride: Em uma classe marcada como MustInherit. Indica que o método 
ou propriedade deve não foi implementado na classe pai e deve ser 
implementado na classe derivada. 
Interfaces 
Interfaces é um recurso que permite criar uma padronização maior entre classe. Uma 
interface é uma assinatura , que compreende nada mais que métodos e propriedades 
ocas . Uma classe que programe determinada interface deve obrigatoriamente seguir 
essa assinatura. Você pode definir que determinada classe implemente determinada 
interface para ter uma certa funcionalidade. 
 
Para se referir a classe base, utilize MyBase no VB.NET ou base no C#, 
seguido do nome do método ou propriedade. 
27 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Confuso? Vou citar um exemplo: você pode conectar tanto um array quanto um 
SqlDataSource a um GridView, pois ambos implementam a interface 
System.Collections.IEnumerable. 
 
Interface Interface1 
 Sub Metodo1() 
 Function Metodo2() As Integer 
End Interface 
Public Class UsaInterface 
 Implements Interface1 
 Public Sub Metodo1() Implements Interface1.Metodo1 
 ' 
 End Sub 
 Public Function Metodo2() As Integer Implements Interface1.Metodo2 
 ' 
 End Function 
End Class 
 
public interface Interface1 
{ 
 void Metodo1(); 
 int Metodo2(); 
} 
 
public class UsaInterface : Interface1 
{ 
 public void Metodo1() 
 { 
 // 
 
 } 
 public int Metodo2() 
 { 
 // 
 } 
} 
Utilizando o IIS 
 
Como um ambiente de alta produtividade, O VS vai criar automaticamente 
pra você todas as estruturas que precisam ser implementadas na classe, no 
momento que você informar que deseja utilzar determinada interface. 
 
O .NET não suporta herança multipla, porém uma classe pode implementar 
diversas interfaces. 
 
Certifique-se que o IIS esta devidamente instaldo e rodando. 
28 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Ao contrario do seu entecessor, o VS 2005 e 2008 vem com um pequeno servidor Web 
embutido. Porém devido as limitações deste, vamos trabalhar com IIS. 
Para criar uma nova aplicação usando o IIS siga os seguintes passos: 
Na IDE do VS selecione File / New Web Site; 
Na caixa de dialogo New Web Site selecione ASP.NET Web Site; 
 
Clique em Browse; 
Na caixa de dialogo Chose Location, selecione Local IIS; 
Selecione Site da Web Padrão; 
Clique em Create New Web Aplication; 
Digite um nome para sua aplicação, no exemplo Teste; 
29 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitosde propriedade intelectual. www.fernandoamaral.com.br
 
Clique em Open; 
De volta a new Web Site, clique em Ok.; 
30 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
3. Web Forms 
Um Web Form é uma pagina de sua aplicação. Na IDE do VS ele se comporta de forma 
semelhante a um Windows Form: Uma área onde você pode arrastar e soltar controles 
visuais, codificar eventos e configurar propriedades que vão regrar seu comportamento. 
Fisicamente, um Web Form é composto por um arquivo com extensão aspx e, 
dependendo do modelo adotado, poderá ou não estar vinculado a ele um arquivo vb ou 
cs, com a codificação para execução no servidor. 
Abaixo você vê o código gerado pelo próprio VS na criação da um Web Form: 
<%@ Page Language="VB" AutoEventWireup="false" 
CodeFile="Default2.aspx.vb" Inherits="Default2" %> 
 
<!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>Untitled Page</title> 
</head> 
<body> 
 <form id="form1" runat="server"> 
 <div> 
 
 </div> 
 </form> 
</body> 
</html> 
Nesta página você alguns dos principais elementos que formam uma pagina HTML 
padrão, como as tags Html, Head, Body, Form e Title. 
Todos controles e todo conteúdo de apresentação de seu formulário, vai estar entre as 
Tags Body. 
Diretivas 
Na primeira linha da página temos uma diretiva de página. Uma diretiva é representada 
pelo símbolo <%@. O que nos diz que se trata de uma diretiva de página é palavra 
page, logo após a abertura da tag. Uma diretiva de página possuiu algumas informações 
que serão úteis ao compilador no momento da geração da pagina. No código acima, 
vemos que na diretiva criada por padrão pelo VS, temos já diversos atributos, você pode 
alterá-las ou mesmo inserir diretivas especificas, desde obviamente que você saiba o 
que esta fazendo. 
31 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Abaixo veremos as principais diretivas existentes no ASP.NET 3.5: 
 
@Control: Diretiva de um User Control (arquivo ascx) 
 
@Master: Diretiva de uma Máster Page 
 
@OutPutCache: Diretiva de controle de cachê 
 
@Assembly: Vincula um assembly a página 
 
@Import: Importa um namespace especificado 
 
@Page: Diretiva de um Web Form (arquivo aspx 
Cada diretiva pode conter n atributos. Os atributos são configurações que na verdade 
ditam as funcionalidades da diretiva. Veremos a seguir os principais atributos da 
diretiva @page: 
 
AutoEventWireUp: Determina que os eventos de uma página sejam disparados 
automaticamente 
 
ClassName: Especifica o nome da classe relacionada a página 
 
CodeFile: Especifica o arquivo code-behind da página 
 
Culture: Especifica as configurações de cultura da página 
 
Debug: Compila a página com os símbolos de depuração 
 
EnableSessionState: Indica se é permitido armazenamento de sessão na página 
 
EnableTheming: indica se é permitido o uso de temas na página 
 
EnableViewState:Indica se o viewstate será mantido na página 
 
Language: Defina a linguagem em que a página é codificada 
 
SmartNavigation: Habilita os recursos do SmartNavigation na página 
 
Theme: Defini um tema especifico para a pagina 
 
ValidateRequest: Indica se a requisição será validada. Quando este atributo esta 
com verdadeiro, se existir algum conteúdo potencialmente perigoso postado na 
página, será gerada uma exceção. 
 
No arquivo web.config ou mesmo até no machine.config, podemos 
configurar muitos dos atributos que também são configuráveis a nível de 
pagina. Normalmente a configuração através de diretiva de página 
sobrescreve a definida em um arquivo de configuração. 
32 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
33 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
4. Controles 
Em seção posterior veremos os novos controles adicionados no ASP.NET 3.5, que 
como vimos na seção de novidades desta versão, são poucos. 
No ASP.NET 2.0 foram adicionados de cerca de 50 novos controles de servidor. Alguns 
presentes na versão 1.x, como o DataGrid, não estão mais disponíveis na caixa de 
ferramentas, porém podem ser facilmente adicionados. 
Você pode criar uma aplicação utilizando basicamente dois grandes grupos de 
controles: controles HTML, que são os controles padrão conhecidos e Server Controls, 
ou controles de servidor. 
Server Controls são controles ricos em funcionalidade, que podem ter seus eventos ou 
propriedades manipulados no código executado no servidor. Todo controle de servidor é 
codificado através de uma tag ASP, que não é HTML padrão que conhecemos. Em 
tempo de execução, o ASP.NET renderiza esta tag em HTML otimizado para o 
navegador em que a aplicação é executada. 
Por exemplo, um dos controles mais simples é o Label. Ao colocar um Label em um 
WebForm o VS gera o seguinte código: 
Ao executarmos a aplicação, a tag ASP:Label é renderizado em uma tag span: 
 
Não estudaremos detalhadamente todos os Server Controls. 
 
Você pode criar aplicativos usando apenas controles HTML, porém tenha um 
bom motivo para fazer isto. 
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
 
Você pode gerenciar a apresentação de seu site manualmente, se preferir. 
<span id="Label1">Label</span> 
34 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
O atributo runat=Server não define que o controle é um controle de servidor, mas sim 
que ele será visível no código executado no servidor. Isto significa que se adicionarmos 
este atributo a um controle HTML, este também poderá ser manipulado no servidor, 
porém de forma mais pobre: 
Acessando eventos e propriedades de controles 
Na caixa de propriedades, clicando no botão Events , você tem uma relação de todos 
os eventos possíveis para um determinado controle. Para que o VS crie 
automaticamente um manipulador para o evento basta dar um duplo clique no nome. 
Alguns manipuladores podem ser criados quando clicamos sobre o próprio controle, 
como o evento Click de um Button: 
 
Protected Sub Button1_Click(ByVal sender As Object,ByVal e _ 
As System.EventArgs) Handles Button1.Click 
 
End Sub 
 
protected void Button1_Click(object sender, EventArgs e) 
{ 
 
} 
Junto com o evento são passadas duas propriedades, sender, do tipo object, que contem 
o objeto que disparou o evento, e e, do tipo EventArgs, que contem algumas 
propriedades especificas do evento. 
Ler ou alterar propriedades de um controle é feito no modelo controle.propriedade, 
como nos exemplos abaixo: 
 
Protected Sub Button1_Click(ByVal sender As Object, ByVal e _ 
As System.EventArgs) Handles Button1.Click 
 
Button1.Text = "Gravar" 
 
Button1.ToolTip = "Clique Aqui para Gravar" 
End Sub 
<input id="Text1" runat="server" type="text" />
 
Não estudaremos controlesHTML. 
35 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
protected void Button2_Click(object sender, EventArgs e) 
{ 
 
Button1.Text = "Gravar"; 
 
Button1.ToolTip = "Clique Aqui para Gravar"; 
} 
Você pode definir que mais de um controle dispare um mesmo manipulador de evento, 
internamente basta você verificar qual foi o controle que causou o evento. De uma 
maneira geral, para ambas as linguagens, basta você selecionar o evento no dropdown 
na caixa de propriedades. O interessante é como o VS trata isto em tempo de design de 
forma tão diferenciada. No C# o nome do manipulador do evento é colocada no arquivo 
ASPX, no atributo OnClick. No VB.NET, é adicionado o nome do controle ao grupo 
handles, ao final da assinatura do evento. O resultado em tempo de execução 
obviamente é o mesmo. 
Propriedades Comuns 
Algumas propriedades são comuns, se não a todos, mas a maioria dos controles. Vamos 
vê-las agora: 
 
ID: O nome do controle, deve ser único 
 
BackColor: Cor de fundo do controle 
 
BorderColor: Cor de Borda do Controle 
 
BorderStyle: Estilo da borda do Controle 
 
BorderWidt: Largura da borda do controle 
 
CssClass: Indica a classe CSS a ser aplicada no controle 
 
Enabled: indica se o controle esta habilitado 
 
EnableTheming: Indica se é o tema do controle estará ativo 
 
EnableViewState: Indica se o controle vai armazenar seu estado no viewstate da 
pagina 
 
Font: Fonte do controle 
 
SkinID: Indica o ID do skin a ser utilizado. Skins serão estudados mais adiante 
 
Text: Representa o texto que será exibido ao usuário da aplicação 
 
ToolTip: é a dica que será exibida ao usuário quando este posicionar o mouse 
sobre o controle. 
36 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Uso de HotKeys 
Duas propriedades novas e interessantes, que estão presentes em alguns controles, são 
AcessKey e AssociatedControlID. Com a primeira definimos uma tecla de atalho para o 
controle, que no navegador e acionado junto com a tecla ALT. Já com 
AssociatedControlID podemos definir qual o controle vai receber o foco no caso da 
combinação de teclas ser acionadas. Este recurso é conhecido como HotKeys. 
Vamos estudar agora os três principais controles de servidor, que formam um conjunto 
básico para a criação de qualquer aplicativo. 
Label 
Um controle simples, porém poderoso, que nos permite exibir algum texto em uma 
página Web. Todas suas propriedades podem ser manipuladas no código gerado no 
servidor. 
É definido pela a tag ASP:Label e quando executado renderizado em uma tag span: 
TextBox 
O textbox é um controle de edição simples. Através da propriedade TextMode podemos 
utilizá-lo ainda para receber senhas ou mesmo transforma-lo em um controle com 
múltiplas linhas. Uma novidade é a propriedade AutoCompleteType, que pode receber 
apenas valores pré-definidos. Ao preencher um segundo controle com o mesmo valor 
para esta propriedade, o navegador deverá sugerir o preenchimento do valor informado 
no primeiro campo. 
È definido pela a tag ASP:TextBox e quando executado renderizado em uma tag input 
do tipo text ou password ou então textarea, de acordo com a propriedade textmode. 
 
Alguns exemplos de codificação de controles, mostram primeiro em tempo 
de design (ASP) e em seguida em tempo de execução (HTML) . 
<asp:Label ID="Label1" runat="server" Text="ASP.NET 3.5 
Rules!!"></asp:Label> 
span id="Label1">ASP.NET 3.5 Rules!!</span> 
37 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Button 
O button é um botão de comando básico. Sua principal função é causar um post back 
para a execução de algum código no servidor. O principal evento é Click, que, 
obviamente, é disparando quando clicamos no botão. É renderizado em uma tag input 
do tipo submit. 
Uma importante propriedade é a PostBackUrl, que indica para qual página será 
executado o post back. 
Para exemplificar, o código abaixo lê a um TextBox de um formulário que originou o 
PostBack: 
 
LinkButton 
O controle linkbutton é uma mistura de botão de comando com HyperLink. Sua 
aparência é de um Link, seu comportamento e suas propriedades o assemelham a um 
Button. Não existe propriedade NavigateUrl, o redirecionamento deve ser codificado no 
post back ou através da propriedade PostBackUrl. 
Nos bastidores, o LinkButton renderiza uma tag a, cujo atributo Href, ao invés de conter 
uma URL, dispara uma função Java Script gerada pelo ASP.NET. 
<asp:TextBox ID="TextBox1" runat="server">Normal</asp:TextBox> 
<asp:TextBox ID="TextBox2" runat="server" 
TextMode="Password">Senha</asp:TextBox> 
<asp:TextBox ID="TextBox3" runat="server" 
TextMode="MultiLine">MultiLine</asp:TextBox> 
<input name="TextBox1" type="text" value="Normal" id="TextBox1" /> 
<input name="TextBox2" type="password" id="TextBox2" /> 
<textarea name="TextBox3" rows="2" cols="20" 
id="TextBox3">MultiLine</textarea> 
<asp:Button ID="Button1" runat="server" Text="Button" />
 
<input type="submit" name="Button1" value="Button" id="Button1" /> 
Dim Nome As String = CType(PreviousPage.FindControl("Nome"), _ 
TextBox).Text 
<asp:LinkButton ID="LinkButton1" 
runat="server">LinkButton</asp:LinkButton> 
38 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
ImageButton 
Um ImageButton é um botão de comando onde podemos adicionar uma imagem para 
exibição. Possui todas as funcionalidades do Button, mais a propriedade ImageURL 
onde definimos a imagem. Em tempo de execução é renderizado como Input do tipo 
Image. 
HyperLInk 
O hyperlink permite criar links de navegação, sua propriedade mais importante é 
NavagateURL, que é valor para a atribuo HREF. É um controle simples que é 
renderizado com uma tag a. Seu poder maior esta na possibilidade de, por exemplo, 
definir a URL dinamicamente no código do servidor. Através de uso de HotKey pode-se 
ainda facilitar a navegação na pagina. A propriedade text define o texto de exibição, já 
ImageUrl pode definir uma imagem a ser exibida ao invés do texto. 
CheckBox 
O checkbox gera um controle HTML input do tipo checkbox 
<a id="LinkButton1" 
href="javascript:__doPostBack('LinkButton1','')">LinkButton</a> 
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="web.gif" 
/> 
<input type="image" name="ImageButton1" id="ImageButton1" 
src="web.gif" /> 
<asp:HyperLink ID="HyperLink1" runat="server" 
NavigateUrl="http:\\www.fernandoamaral.com.br">Clique 
Aqui</asp:HyperLink> 
<a id="HyperLink1" href="http:\\www.fernandoamaral.com.br">Clique 
Aqui</a> 
<asp:CheckBox ID="CheckBox1" runat="server" Text="Lembrar" />
 
<input id="CheckBox1" type="checkbox" name="CheckBox1" /> 
39 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
RadioButton 
O RadioButton gera um controle HTML input do tipo radio 
Image 
O controle Image deve ser utilizado para exibição de Imagens. A imagem a ser exibida 
deve ser definidaatravés da propriedade ImageUrl. 
DropDownList e ListBox 
O DropDownList e ListBox são controles altamente poderoso. Suas propriedades e 
eventos trazem recursos que só poderiam ser obtidos com muita mão de obra em uma 
aplicação WEB. A propriedade AutoPostBack, causa um post back automático ao 
servidor quando um valor é selecionado. Os controles podem ter seus itens adicionados 
em tempo de design ou de execução, através da propriedade Itens. Também é possível 
vinculá-lo a uma fonte de dados qualquer, que pode ser um array, um dataset ou mesmo 
um SqlDataSource, só para citar alguns. 
Para cada item é possível ler e escrever um texto e um valor, armazenados nas 
propriedades text e value, respectivamente. Isto é muito útil, por exemplo, para 
recuperar o código de um item selecionado pelo usuário. 
O exemplo abaixo adiciona um item a um DropDownList: 
 
DropDownList1.Items.Add("Selecione uma opção")
 
<asp:RadioButton ID="RadioButton1" runat="server" Text="Lembrar" />
 
<input id="RadioButton1" type="radio" name="RadioButton1" 
value="RadioButton1" /> 
<asp:Image ID="Image1" runat="server" ImageUrl="web.gif" />
 
<img id="Image1" src="web.gif" /> 
<asp:DropDownList ID="DropDownList1" runat="server">
 
<select name="DropDownList1" id="DropDownList1"> 
40 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
DropDownList1.Items.Add("Selecione uma opção"); 
Para recuperar o valor da propriedade text bem como value basta ler as propriedades 
específicas: 
 
Dim s As String = DropDownList1.SelectedValue 
Dim t As String = DropDownList1.SelectedItem.Text 
 
string s = DropDownList1.SelectedValue; 
string t = DropDownList1.SelectedItem.Text; 
O evento SelectedIndexChange é executado quando um item do controle é selecionado. 
Se a propriedade AutoPostBack estiver marcada como verdadeira, um postback é 
executado imediatamente, caso contrário o evento só será executado no próximo 
postback. 
Existem ainda diversos métodos interessantes, como itens.clear, que limpa os itens, e 
propriedades, como itens.count, que retorna o número de itens no controle. 
CheckBoxList e RadioButtonList 
Os controles CheckBoxList e RadioButtonList em tempo de design são apresentados 
como um conjunto de controles CheckBox e RadioButton, que podem ter suas 
propriedades gerenciadas mais facilmente e conectados a uma fonte de dados qualquer. 
Em tempo de execução, o ASP.NET renderiza cada controle como diversos controles 
input do tipo checkbox ou radiobutton. 
No exemplo abaixo o código verifica se um determinado item de um 
 
If CheckBoxList1.Items(0).Selected = True Then 
'' 
End If 
 
if (CheckBoxList1.Items[0].Selected==true) 
{ 
// 
} 
41 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Calendar 
O Calendar é um calendário que é renderizado utilizando uma tag table, e na sua forma 
mais simples tem pelo menos 7 KB de texto. É excelente para exibição e entrada de 
datas. Possuiu um conjunto poderosíssimo de propriedades, métodos e eventos que 
permitem praticamente exibi-lo de qualquer forma imaginada. 
Entre seus eventos mais significativos, temos o SelectionChange, que é disparado 
quando ocorre uma alteração na seleção do calendário, e VisibleMonthChange, que 
ocorre quando o mês visível no calendário é alterado. A propriedade SelecteDate nos 
permite ler a data selecionada. 
No exemplo abaixo um label exibe a data selecionada pelo usuário: 
 
Protected Sub Calendar1_SelectionChanged(ByVal sender As _ 
Object, ByVal e As System.EventArgs) Handles _ 
Calendar1.SelectionChanged 
 Lbldata.Text = String.Format("A data selecionada é {0:d}",_ 
 
Calendar1.SelectedDate) 
End Sub 
 
protected void Calendar1_SelectionChanged(object sender, EventArgs e) 
{ 
 
Lbldata.Text = String.Format("A data selecionada é {0:d}", 
 
Calendar1.SelectedDate); 
} 
Através das propriedades SelectionMode podemos definir se o usuário poderá 
selecionar um único dia, uma semana, um mês inteiro ou nada. Caso ele possa 
selecionar, por exemplo, uma semana, podemos recuperar os dias selecionados através 
de um laço for each, que percorre a coleção de objetos DateTime da propriedade 
SelectedDates: 
 
Dim s As System.DateTime 
For Each s In Calendar1.SelectedDates 
 
ListBox1.Items.Add(String.Format("Data Selecionada {0:d}", s)) 
Next 
42 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
foreach (System.DateTime s in Calendar1.SelectedDates) 
{ 
 
ListBox1.Items.Add(String.Format("Data Selecionada {0:d}", s)); 
} 
AdRotator 
O AdRotator nos permite incluir um banner em nosso site, onde o próprio ASP.NET 
através de um arquivo de configuração, vai cuidar da rotatividade das exibições de 
imagens. O segredo todo está em um arquivo de configuração, que pode ser um XML 
ou mesmo uma tabela de banco de dados. 
Para testar este controle, crie um arquivo XML dentro do diretório App_Data de sua 
aplicação (se não existir o diretório, crie-o também), com o seguinte texto: 
<?xml version="1.0" encoding="utf-8" ?> 
<Advertisements> 
 <Ad> 
 <ImageUrl>~/imagens/cafezinho.bmp</ImageUrl> 
 <NavigateUrl>http://www.cafezinho.com</NavigateUrl> 
 <AlternateText>Café</AlternateText> 
 <Keyword>Café</Keyword> 
 <Impressions>40</Impressions> 
 </Ad> 
 <Ad> 
 <ImageUrl>~/imagens/deserto.bmp</ImageUrl> 
 <NavigateUrl>http://www.deserto.com</NavigateUrl> 
 <AlternateText>Deserto</AlternateText> 
 <Keyword>Site Deserto</Keyword> 
 <Impressions>20</Impressions> 
 </Ad> 
 </Advertisements> 
Certifique-se que você tem uma pasta imagens com as imagens informadas. Você pode 
configurar os parâmetros de acordo com sua preferência: NavigateUrl é a URL para 
qual o usuário será direcionado quando clicar no banner, AlternateText é o texto a ser 
exibido no local da imagem. Impressions representa o número de impressões do banner. 
No exemplo acima, note que o primeiro banner deverá aparecer em dobro. 
Para vincular o seu AdRotator ao arquivo XML basta informá-lo na propriedade 
AdvertisementFile. 
 
Um arquivo XML é sensível a caracteres maiúsculos e minúsculos. 
43 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
View e MultiView 
Mais uma novidade surgida no ASP.NET 2.0. Provavelmente você já necessitou que 
parte de sua aplicação ficasse invisível em determinados momentos. Claro que isso não 
era uma tarefa impossível, mas com os controles MultiView e View isto ficou mais 
simples. 
A idéia é: Dentro de um Multiview você agrega um ou mais Views. Em cada um dos 
Views você coloca controles conforme a necessidade. A partir daí é só determinar qual 
View estará visível através da propriedade ActiveViewIndex. 
 
MultiView1.ActiveViewIndex = 0
 
MultiView1.ActiveViewIndex = 0; 
Wizard 
Continuando com as novidades, o Wizard é um assistente para páginas Web, onde você 
pode determinar passos (Steps). Em cada Step você tem uma área onde pode colocar 
seus controles conforme a necessidade. 
Entre os eventos tempos NextButtonClick, que é disparado sempre que o usuários clicarno botão Next, FinishButtonClick, disparado no encerramento, e CancelButtonClick, 
disparado ao final. 
O mais interessante de tudo é que Wizard mantém estado de tudo o que é colocado em 
seus passos. Isto significa que você pode fazer o processamento dos dados ao final do 
assistente. 
O controle é totalmente configurável, desde aparências até texto dos botões. 
Controles de validação 
44 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
O ASP.NET desde sua primeira versão tem integrador alguns controles que permitem 
validar entradas do usuário, tanto no cliente como no servidor, de forma simples e 
rápida. 
A partir da versão 2.0 foi incluía a propriedade ValidationGroup, que permite que 
agrupemos grupos diferentes de validação em um mesmo WebForm. Na versão anterior 
isto era um problema, ou fazíamos a validação manualmente ou dividíamos a nossa 
lógica de negocio em dois formulários diferentes. Na versão 3.5 não houveram 
novidades em relação aos controles de validação. 
Os controles de validação são: 
 
RequiredFieldValidator: Permite validar se um controle foi preenchido. 
 
RangeValidator: Permite verificar se o valor informado esta entre determinado 
intervalo. 
 
RegularExpressionValidator: Permite validar o valor informado com uma 
expressão regular 
 
CompareValidator: Permite comparar dois valores. 
 
CustomValidator: Permite que customizemos nossa expressão de validação. 
Um controle de validação vai exibir uma mensagem caso a validação falhe. Com o 
controle ValidationSummary podemos agrupar as mensagens de todos os controles em 
um único local ou numa mesma caixa de dialogo. 
Um controle de validação tem duas propriedades para exibição de mensagens: Text e 
ErrorMessage. Se você utilizar um ValidationSummary você pode trabalhar com as 
duas: A mensagem em ErrorMessage será exibida no ValidationSummay, e text no 
proprio controle de validação (um * por exemplo). 
 
Se você quer garantir que um controle tenha um valor preenchido e seja, por 
exemplo, um inteiro maior que zero, você terá que usar além de um 
RangeValidator um RequiredFiledValidador, apenas este último obriga o 
preenchimento do valor. 
45 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Para criar grupos de validação, basta escolher um nome para o grupo e preencher as 
propriedades ValidationGroup tanto dos controles a serem validados quanto dos 
controles de validação. 
Se você quiser causar um post back sem disparar os validadores, basta setar a 
propriedade CausesValidation do controle para False. 
Para obrigar o preenchimento de um textbox: 
Coloque num formulário um controle TextBox, um RequiredFieldValidator e um 
ValidationSummary e um Button; 
Configure a propriedade ControlToValidade do RequiredFieldValidator para o TextBox 
adicionado no furmaulario; 
Preencha a propriedade text do RequiredFieldValidator para *, e ErrorMessage para 
Preenchimento Obrigatório ; 
Configure a propriedade ShowMessageBox do ValidationSummary para true, e 
ShowSummary para false; 
Rode a aplicação; 
Clique no botão sem preencher qualquer informação no textbox. 
46 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Por fim, para verificar também no servidor se todas as validações foram feitas, verifique 
a propriedade isvalid da página. 
5. Master Pages 
É comum em aplicações convencionais ou mesmo Web a necessidades de criarmos 
partes de conteúdo que serão exibidas em todas ou pelo menos em diversas páginas. No 
ASP clássico isso era resolvido da seguinte forma: Você desenvolvia o conteúdo 
separadamente e sua inclusão era feito onde necessário através de uma tag Include. 
No ASP.NET 1.1 surgiu uma novidade: os chamados Web User Controls, que são 
arquivos com a extensão ascx, que podiam ser programados na IDE do Visual Studio e 
adicionados a qualquer Web Form. Trouxe significativas vantagens em relação ao uso 
47 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
do include, como o fato da pagina host ter a possibilidade de ler ou alterar valores de 
controles ou propriedades. 
Sua grande desvantagem era que não possuía herança visual como já há um longo 
tempo era possível em aplicações convencionais: O user control em tempo de design 
eram representados na IDE do VS como um botão cinza. 
No ASP.NET 2.0 uma das grandes novidades apresentadas e que obviamente continuam 
disponíveis na versão 3.5 são as Master Pages, que trazem finalmente a herança de 
conteúdo de forma visual. 
Uma MasterPage é um arquivo com extensão master. Pode ser criada no IDE do VS no 
modelo code-behing ou code-inline, assim como um Web Form. Sua estrutura básica 
também é muito parecida com um Web Form: 
<%@ Master Language="VB" CodeFile="Master.master.vb" Inherits="Master" 
%> 
 
<!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>Untitled Page</title> 
</head> 
<body> 
 <form id="form1" runat="server"> 
 <div> 
 <asp:contentplaceholder id="ContentPlaceHolder1" 
runat="server"> 
 </asp:contentplaceholder> 
 </div> 
 </form> 
</body> 
</html>
 
A principal diferença é a diretiva de compilação @Master, no lugar de @Page. Esta 
diretiva informa ao ASP.NET durante o processo de compilação que trata-se uma 
Master Page. 
Uma página aspx que utiliza uma Master Page é chamada de página de conteúdo 
(Content Page). Uma página de conteúdo não contem os elementos que formam uma 
página HTML comum, pois estes serão herdados da Master Page. Numa Master Page, 
48 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
as áreas onde uma pagina de conteúdo terão disponível para exibir seu conteúdo são 
definidas através de controles de servidor contentplaceholder. No código acima você 
pode ver um controle contentplaceholder criado por padrão na criação da MasterPage. 
Criando uma Master page 
Criar uma Master Page no Visual Studio é simples: Na caixa de dialogo Add New Item 
Selecione Master Page, defina um nome para a página. O VS cria a MasterPage com o 
nome escolhido. 
Se você optou pelo modelo code-behind, serão criados dois arquivos: um arquivo 
master e um vb ou cs, conforme a linguagem escolhida. Se a opção foi code-inline, será 
criado apenas o arquivo .master. 
Utilizando uma Mater Page 
Definir a(s) página(s) de conteúdo é simples e pode ser feito quatro maneiras diferentes: 
Durante a criação da página, na caixa de dialogo Add New Item, marque a opção Select 
Master Page 
 
49 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Será exibida a caixa de dialogo Master Page, que exibe as Master Pages disponíveis no 
projeto: 
 
Baste selecionar apágina Master e clicar em Ok. 
A segunda é através da própria pagina Master, selecionando a opção Add Content Page. 
Será criada uma página de conteúdo em branco. Você não poderá escolher o nome da 
página no momento da sua criação. 
A terceira é de forma manual. Crie um Web Form normalmente, remova todo o HTML 
gerado, com exceção da diretiva de página. Adicione a diretiva de página o atributo 
MasterPageFile, que indica que esta é uma página de conteúdo que utiliza a Master 
Page especificada no atributo. 
Finalmente, a quarta e última, e em tempo de execução: 
 
50 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Protected Sub Page_PreInit(ByVal sender As Object, ByVal e _ 
As System.EventArgs) Handles Me.PreInit 
 
Page.MasterPageFile = "~/MasterUm.master" 
End Sub 
 
protected void Page_PreInit(object sender, EventArgs e) 
{ 
 
Page.MasterPageFile = "~/MasterUm.master"; 
} 
Obviamente que esta última forma nos priva dos beneficios da herança visual. 
Trabalhando com uma Master Page 
Nesta sessão vamos demonstrar de maneira prática como tirar proveito da utilização de 
uma Master Page. 
Crie uma nova aplicação ASP.NET; 
Crie uma nova Master Page; 
Defina o layout da Master Page de acordo com a figura abaixo: 
 
A defninição de uma pagina Master em tempo de execução deve ser feito no 
evento PreInit da página. 
 
Este não é um curso de Web Design, portanto não perca tempo ou se 
preocupe com a aparência de suas atividades práticas. 
51 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Para os quatro controles da esquerda, que deverão funcionar como HyperLinks, utilize 
controles de Servidor HyperLinks, defina a propriedade text de cada um como 
Desentupimento, Hidráulica, Limpeza e Hidrojateamento. A propriedade NavigateUrl 
de cada um deve ser definida pelo mesmo conteúdo da propriedade text mais a extesão 
aspx, por exemplo: Desentupimento.aspx. 
Crie quatro páginas de conteúdo com os nomes especificados nas propriedades 
NavigateUrl acima, especificando como Master Page a página criada. 
Defina um conteúdo especifico para cada página de conteúdo, conforme exemplo 
abaixo: 
 
Na área Content da página de conteúdo você pode trabalhar livremente: 
adicionar controles, eventos etc. 
52 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Defina uma das páginas de conteúdo criada como página inicial e rode a aplicação. 
Navega entre as páginas e veja na prática o funcionamento da aplicação. 
Acessando a página Master da página de conteúdo 
Você pode facilmente acessar qualquer controle ou propriedade da página Master, na 
página de conteúdo, através da propriedade Master. 
Por exemplo, para ler o conteúdo de um dos HyperLinks da página Master: 
 
If Not Page.IsPostBack Then 
 
Dim s As String = CType(Master.FindControl _ 
 
("Desentupimento"), HyperLink).Text 
End If 
 
if (!Page.IsPostBack) 
{ 
 
string s = (Master.FindControl("Desentupimento") 
 
as HyperLink).Text; 
} 
53 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
Também podemos alterar o texto ou mesmo qualquer propriedade do controle na Master 
Page, pois nossa operação é por referencia: 
 
Dim Hyper As HyperLink 
 
Hyper = CType(Master.FindControl("Desentupimento"), HyperLink) 
 
Hyper.ForeColor = System.Drawing.Color.Red 
 
HyperLink Hyper; 
 
Hyper = (Master.FindControl("Desentupimento") as HyperLink); 
 
Hyper.ForeColor = System.Drawing.Color.Red; 
Neste exemplo, estamos mudando a cor do HyperLink do conteúdo da página Master 
para vermelho. 
Alterando o Título das páginas de conteúdo 
A página de conteúdo deve conter um atributo title, onde deve ser definido o titulo para 
exibição da página. Na ausência deste, será exibido o titulo da Master Page. 
Outra alternativa é definir no código o título para a página: 
 
Master.Page.Title = "Titulo definido em tempo de execução"
 
Master.Page.Title = "Titulo definido em tempo de execução"; 
Trabalhando com conteúdo padrão 
Outra possibilidade interessante é a de trabalhar com conteúdo padrão. Você pode 
definir um conteúdo padrão de exibição na área da página de conteúdo, da mesma forma 
que você define o restante da página. Na página de conteúdo, para exibir o conteúdo 
padrão, basta clicar em Default to Master Content na Smart Tag do controle de 
conteúdo. 
Master Pages aninhadas 
Alem de tudo o que estudamos, é possível mais. Você pode criar Master Pages 
aninhadas, em diferentes níveis. O VS 2005 não da suporte em sua IDE para este 
recurso, portanto você terá que fazer todo o trabalho manualmente. 
54 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
55 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
6. Themes e Skins 
A formatação de suas páginas ASP.NET poderão ser feitas de diversas maneiras, entre 
elas: 
 
Uso de arquivos CSS; 
 
Formatação diretamente nas pagina. 
Utilizando o novo recurso de temas, é possível definir um padrão para toda a aplicação 
sem necessidade de altera qualquer página. As possibilidades são muitas, vamos ver um 
exemplo prático. 
Crie uma nova aplicação ASP.NET; 
Crie um WebForm com os seguintes controles: 
 
Crie a pasta App_themes. Esta é uma pasta de sistema do ASP.NET. Para criá-la acesse 
o menu WebSite, ASP.NET Folder, Themes. 
Na caixa de dialogo Add New Item exibida em seguida, selecione Skin File, de o nome 
de Red. 
Clique sobre o botão direito sobre a pasta Themes e crie um novo Skin, desta vez com o 
nome Gray. 
56 
ASP.NET 3.5 em VB.NET e C# 
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e 
outros direitos de propriedade intelectual. www.fernandoamaral.com.br
 
A formatação de controles num Skin é definida usando a própria tag de definição do 
controle, obviamente que alguns atributos não deverão ser utilizados, como ID ou text. 
No exemplo abaixo o definição para o Skin Red: 
<asp:Label runat="server" Font-Names="Arial" ForeColor="Maroon" /> 
<asp:Button runat="server" Font-Bold="True" ForeColor="Maroon" /> 
<asp:RadioButton runat="server" Font-Names="Arial" ForeColor="Maroon" 
/> 
<asp:CheckBox runat="server" Font-Names="Arial" ForeColor="Maroon" />
 
Já o skin Gray fica assim: 
<asp:Label runat="server" Font-Names="Verdana" ForeColor="Gray" /> 
<asp:Button runat="server" Font-Bold="True" ForeColor="DimGray" /> 
<asp:RadioButton runat="server" Font-Names="Verdana" ForeColor="Gray" 
/> 
<asp:CheckBox runat="server" Font-Names="Verdana" ForeColor="Gray" />
 
Agora vamos definir que sua página ASP.NET vai utilizar um Theme. Clique sobre o 
formulário e localize a propriedade Theme, note que todos os temas criados estão

Continue navegando