C# - Temas ASP NET PT-BR

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 83

NDICE

TEMAS ASP.NET NO VISUAL STUDIO ............................................................................................................... 4


VISO GERAL SOBRE CAPAS E TEMAS DO ASP.NET ................................................................................................. 4
Aparncias........................................................................................................................................................... 4
Folhas de Estilo em Cascata ............................................................................................................................... 5
Grficos e Outros Recursos de Temas................................................................................................................. 5
Temas de Pgina ................................................................................................................................................. 5
Temas Globais..................................................................................................................................................... 6
PASSO-A-PASSO: PERSONALIZANDO UM SITE USANDO TEMAS NO VISUAL STUDIO .................................................... 7
Para criar um site do sistema de arquivos .......................................................................................................... 7
Para colocar controles na pgina ....................................................................................................................... 8
Para criar um novo tema..................................................................................................................................... 8
Para testar temas................................................................................................................................................. 9
Para usar um tema de folhas de estilo e consultar ordem de prioridade .......................................................... 10
Para basear um tema personalizado em controles existentes ........................................................................... 10
Para configurar um tema para um site.............................................................................................................. 11
VISO GERAL SOBRE CAPAS E TEMAS DO ASP.NET ............................................................................................... 12
Aparncias......................................................................................................................................................... 12
Folhas de Estilo em Cascata ............................................................................................................................. 13
Grficos e Outros Recursos de Temas............................................................................................................... 13
Temas de Pgina ............................................................................................................................................... 14
Temas Globais................................................................................................................................................... 14
Tarefas.............................................................................................................................................................................15

COMO DEFINIR TEMAS ASP.NET:........................................................................................................................... 15


COMO: APLICAR TEMAS ASP.NET ....................................................................................................................... 17
Para aplicar um tema a uma pgina individual ................................................................................................ 17
Para aplicar uma capa nomeada a um controle ............................................................................................... 18
COMO: APLICAR TEMAS ASP.NET POR PROGRAMAO ...................................................................................... 18
COMO: DESATIVAR TEMAS ASP.NET................................................................................................................... 19
PERSONALIZANDO SITES DO ASP.NET .......................................................................................................... 20
CRIANDO SITES DA WEB PARA USURIOS INDIVIDUAIS (VISUAL STUDIO) .............................................................. 20
VISO GERAL SOBRE PROPRIEDADES DE PERFIL ASP.NET ..................................................................................... 20
IDENTIFICAO DE USURIO PARA PROPRIEDADES DE PERFIL ASP.NET ................................................................ 21
DEFINIR PROPRIEDADES DE PERFIL ASP.NET......................................................................................................... 23
PROVEDORES DE PERFIL ASP.NET ......................................................................................................................... 25
PASSO-A-PASSO: MANTENDO INFORMAES SOBRE O USURIO DO SITE COM PROPRIEDADES DE PERFIL ............. 26
Para criar um site de sistema de arquivos ........................................................................................................ 27
Para configurar propriedades perfil no site da Web......................................................................................... 28
Para criar uma pgina para definir e obter a propriedade PostalCode........................................................... 29
Testando a Propriedade de Perfil PostalCode .................................................................................................. 30
Para testar a propriedade PostalCode.............................................................................................................. 30
Para Definir a Propriedade FavoriteURLs....................................................................................................... 31
Para definir e obter a propriedade FavoriteURLs ............................................................................................ 31
Testando a Propriedade de Perfil FavoriteURLs.............................................................................................. 32
Para testar a propriedade FavoriteURLs.......................................................................................................... 32
Para configurar o site para lidar com associaes de usurios ....................................................................... 32
Criando um Manipulador de Migrao ............................................................................................................ 33
Para criar um manipulador de migrao.......................................................................................................... 33
Testando a Migrao......................................................................................................................................... 33
Para testar a migrao...................................................................................................................................... 34
IMPLEMENTANDO UM PROVEDOR PERFIL ................................................................................................................ 35
Membros da ProviderBase ................................................................................................................................ 35
Membros da SettingsProvider ........................................................................................................................... 35
Membros da ProfileProvider............................................................................................................................. 36
PROTEGENDO PROPRIEDADES DE PERFIL ................................................................................................................. 39
Protegendo Valores de Configurao ............................................................................................................... 40
Seqncias de Conexo ..................................................................................................................................... 40
Conectando-se a SQL Server Usando Segurana Integrada............................................................................. 40
Permisses de Banco de Dados SQL Server ..................................................................................................... 40
Impedindo Dados de Perfil Annimos de serem Compartilhados Entre Aplicativos ........................................ 41

Temas no ASP.NET (Visual Studio)

Excees ............................................................................................................................................................ 41
Log de Eventos .................................................................................................................................................. 41
Informaes de Rastreamento ........................................................................................................................... 42
CREATING WEB SITE NAVIGATION ......................................................................................................................... 42
GUIA DE INTRODUO CRIANDO NAVEGAO EM SITES DA WEB ............................................... 44
VISO GERAL SOBRE NAVEGAO EM SITES DO ASP.NET ..................................................................................... 44
Processo de carga de mapa de site.................................................................................................................... 45
MAPAS DE SITES DO ASP.NET................................................................................................................................ 47
PASSO-A-PASSO: ADICIONANDO NAVEGAO DO SITE A UM WEB SITE ................................................................... 49
Criando um web site do sistema de arquivos .................................................................................................... 50
Para criar um web site do sistema de arquivos................................................................................................. 50
Criando um mapa do site................................................................................................................................... 50
Para criar um mapa do site............................................................................................................................... 50
Criando pginas para navegar.......................................................................................................................... 51
Para criar pginas para navegar...................................................................................................................... 51
Para adicionar um menu de navegao Tree-Style........................................................................................... 52
Testando o menu de navegao Tree Style........................................................................................................ 52
Para testar o menu de navegao ..................................................................................................................... 52
Para exibir o histrico da navegao ............................................................................................................... 52
Testando o histrico da navegao ................................................................................................................... 53
Para testar a navegao da pgina................................................................................................................... 53
Para adicionar um menu de navegao menu-style .......................................................................................... 53
Testando o menu de navegao menu-style....................................................................................................... 54
Para testar o menu de navegao ..................................................................................................................... 54
Para criar controles de navegao para a pgina mestra ................................................................................ 54
Para adicionar controles de navegao pgina mestra ................................................................................. 55
Para criar pginas de contedo para o site ...................................................................................................... 55
Testando controles de navegao na pgina mestra......................................................................................... 56
Para testar o controle de navegao na pgina mestra .................................................................................... 56
COMO: ADICIONAR NAVEGAO EM SITES SIMPLES .............................................................................................. 57
COMO: PERSONALIZAR A APARNCIA DE CONTROLES SITEMAPPATH DE SERVIDOR WEB .................................... 58
Para usar o recurso de ignorar a acessibilidade .............................................................................................. 60
TORNANDO NAVEGAO EM SITES DO ASP.NET SEGURO ...................................................................................... 60
Protegendo Valores de Configurao ............................................................................................................... 61
Mapeamento URL.............................................................................................................................................. 61
Processo de Carga do Mapa do Site ................................................................................................................. 62
Incluindo URLs Externos em um Mapa de Site ................................................................................................. 63
Mensagens de Exceo...................................................................................................................................... 63
Mensagens de Erro............................................................................................................................................ 63
Log de Eventos .................................................................................................................................................. 63
USANDO THEMES ASP.NET 2.0......................................................................................................................... 65
CONCEITO ............................................................................................................................................................... 65
PROBLEMA .............................................................................................................................................................. 65
SOLUO ................................................................................................................................................................ 65
CRIAR UM NOVO TEMA ............................................................................................................................................ 66
ATRIBUIR ESTILO CRIADO ....................................................................................................................................... 68
1. CONCEITO ........................................................................................................................................................... 70
2. PROBLEMA .......................................................................................................................................................... 70
3. SOLUO ............................................................................................................................................................ 70
4. OUTRO PROBLEMA .............................................................................................................................................. 73
5. SOLUO ............................................................................................................................................................ 74
TEMAS E APARNCIAS DO ASP.NET ............................................................................................................... 76
VISO GERAL SOBRE CAPAS E TEMAS DO ASP.NET ............................................................................................... 76
Temas e Aparncias de Controle....................................................................................................................... 76
Aparncias......................................................................................................................................................... 76
Folhas de Estilo em Cascata ............................................................................................................................. 77
Grficos e Outros Recursos de Temas............................................................................................................... 77
Temas de Escopo ........................................................................................................................................ 77
Temas de Pgina ............................................................................................................................................... 77
Temas Globais................................................................................................................................................... 78

Temas no ASP.NET (Visual Studio)

Precedncia das Configuraes de Tema........................................................................................... 78


Propriedades que Voc Pode Definir Usando Temas ..................................................................... 78
Temas versus Folhas de Estilo em Cascata ...................................................................................... 78
COMO DEFINIR TEMAS ASP.NET:........................................................................................................................... 79
Para criar um tema de pgina ............................................................................................................... 79
Para criar um tema global ....................................................................................................................... 79
Para criar uma capa................................................................................................................................... 80
COMO: APLICAR TEMAS ASP.NET ....................................................................................................................... 80
Para aplicar um tema a um site da Web............................................................................................ 81
Para aplicar um tema a uma pgina individual ................................................................................................ 81
Aplicando capas a controles.................................................................................................................... 81
Para aplicar uma capa nomeada a um controle ............................................................................................... 81
COMO: DESATIVAR TEMAS ASP.NET................................................................................................................... 82
Para desativar temas para uma pgina ............................................................................................. 82
Para desativar temas para um controle ............................................................................................. 82
COMO: APLICAR TEMAS ASP.NET POR PROGRAMAO ...................................................................................... 82
Para aplicar um tema de pgina programaticamente................................................................... 82
Para aplicar um tema de folha de estilo programaticamente .................................................... 83
Para aplicar capas de controle programaticamente ...................................................................... 83

Temas no ASP.NET (Visual Studio)

Temas ASP.NET no Visual Studio


Um tema ASP.NET uma coleo de propriedades que definem a aparncia de
pginas e controles em seu site. Um tema pode incluir arquivos de capas, que
definem configuraes das propriedades para controles de servidor da Web do
ASP.NET, e tambm pode incluir arquivos de folhas de estilo em cascata
(arquivos.css) e elementos grficos. Aplicando um tema, voc pode dar as pginas
de seu site uma aparncia consistente.
Os tpicos nesta seo descrevem o que os temas ASP.NET so, como eles
funcionam, e como cri-los e aplic-los.

Viso geral sobre capas e temas do ASP.NET


Um tema um conjunto de configuraes de propriedade que permitem a voc
definir a aparncia de pginas e controles, e aplicar a aparncia consistentemente
em pginas de um aplicativo da Web, em um aplicativo da Web inteiro, ou em
todos os aplicativos da Web em um servidor.
Temas e Aparncias de Controle

Temas so compostos de um conjunto de elementos: aparncias, folhas de estilo


em cascata (CSS), imagens e outros recursos. No mnimo, um tema conter capas.
Temas so definidos em diretrios especiais no seu site ou em seu servidor Web.
Aparncias
Um arquivo de aparncia tem a extenso de nome de arquivo .skin e contm
configuraes de propriedades para controles individuais, como os controles Button,
Label, TextBox ou Calendar. Configuraes de capa de aparncia so semelhantes a
marcaes de controle propriamente ditas, mas contm somente as propriedades
que voc deseja definir como parte do tema. Por exemplo, a seguir est uma
aparncia de controle para um controle Button:
<asp:button runat="server" BackColor="lightblue" ForeColor="black" />

Voc criar arquivos .skin na pasta do tema. Um arquivo.skin pode conter uma ou
mais aparncias de controle para um ou mais tipos de controle. Voc pode definir
aparncias em um arquivo separado para cada controle ou definir todos as
aparncias para um tema em um nico arquivo.
Existem dois tipos de aparncias de controle, aparncias padro (default skins) e
aparncias nomeadas (named skins):

Quando um tema aplicado a uma pgina, uma aparncia padro aplicada


automaticamente a todos os controles do mesmo tipo. Uma aparncia de
controle uma aparncia padro se ele no possuir um atributo SkinID. Por
exemplo, se voc criar uma aparncia padro para um controle Calendar, a
aparncia de controle ser aplicada a todos os controles Calendar nas pginas
que usam o tema. (Aparncias padro so definidas exatamente por tipo de
controle, para que uma aparncia de controle Button se aplique a todos os
controles Button, mas no a controles LinkButton ou a controles que derivem do
objeto Button.)

Uma aparncia nomeada uma aparncia de controle com um conjunto de


propriedades SkinID. Aparncias nomeadas no so aplicadas automaticamente

Temas no ASP.NET (Visual Studio)

a controles por tipo. Em vez disso, voc aplica uma aparncia nomeada a um
controle explicitamente, definindo propriedade SkinID do controle. A criao de
aparncias nomeadas permite-lhe definir aparncias diferentes para instncias
diferentes do mesmo controle em um aplicativo.
Folhas de Estilo em Cascata
Um tema tambm pode incluir uma folha de estilos em cascata (arquivo .css).
Quando voc coloca um arquivo.css no diretrio do tema, a folha de estilos
aplicada automaticamente como parte do tema. Voc define uma folha de estilos
usando a extenso de nome de arquivo .css na pasta do tema.
Grficos e Outros Recursos de Temas
Temas tambm pode incluir elementos grficos e outros recursos, como arquivos
de script ou arquivos de som. Por exemplo, parte do seu tema de pgina pode
incluir uma aparncia de um controle TreeView. Como parte do tema, voc pode
incluir os elementos grficos usados para representar os botes de expandir e
recolher.
Normalmente os arquivos de recursos para o tema esto na mesma pasta que os
arquivos de aparncias para esse tema, mas elas podem ser em outro lugar no
aplicativo da Web, em uma subpasta do diretrio do tema por exemplo. Para se
referir a um arquivo de recursos em uma subpasta do diretrio do tema, use um
caminho como o que est sendo mostrado nesta aparncia de controle Image:
<asp:Image runat="server" ImageUrl="ThemeSubfolder/filename.ext" />

Voc tambm pode armazenar seus arquivos de recurso fora a diretrio do tema.
Se voc usar a sintaxe til (~) para consultar os arquivos de recursos, o aplicativo
da Web automaticamente encontrar as imagens. Por exemplo, se voc colocar os
recursos para um tema em um subdiretrio do seu aplicativo, voc pode utilizar
caminhos do formulrio ~/SubPasta/nomedoarquivo.ext para referir-se a arquivos
de recursos, como no seguinte exemplo de cdigo
<asp:Image runat="server" ImageUrl="~/AppSubfolder/filename.ext" />
Temas de Escopo

Voc pode definir temas para um nico aplicativo da Web, ou como temas globais
que podem ser usados por todos os aplicativos em um servidor Web. Aps um tema
ser definido, ele pode ser colocado em pginas individuais usando o atributo
Theme ou StyleSheetTheme da diretiva @ Page, ou pode ser aplicado a todas as
pginas em um aplicativo definindo o elemento <pages> no arquivo de
configurao do aplicativo. Se o elemento <pages> estiver definido no arquivo
Machine.config, o tema ser aplicado a todas as pginas em aplicativos da Web no
servidor.
Temas de Pgina
Um tema de pgina uma pasta de tema com aparncias de controle, folhas de
estilos, arquivos grficos e outros recursos criados como um subpasta da pasta
\App_Themes em seu site da Web. Cada tema uma subpasta diferente da pasta
\App_Themes. O exemplo de cdigo a seguir mostra um tema de pgina tpico,
definindo dois temas chamados BlueTheme e PinkTheme.
MyWebSite App_Themes BlueTheme Controls.skin BlueTheme.css PinkTheme
Controls.skin PinkTheme.css

Temas no ASP.NET (Visual Studio)

Temas Globais
Um tema global um tema que voc pode aplicar a todos os sites da Web em um
servidor. Temas globais permitem que voc defina uma aparncia geral para o
domnio quando voc mantiver vrios sites da Web no mesmo servidor.
Temas globais so como temas de pgina dentro dos quais eles incluem
configuraes de propriedade, configuraes de folha de estilos, e elementos
grficos. Entretanto, temas globais so armazenados em uma pasta chamada
\Themes que global para o servidor Web. Qualquer site no servidor, e qualquer
pgina em qualquer site da Web, pode referenciar um tema global. Para obter mais
informaes sobre como criar uma pasta de temas globais, consulte Como definir
temas ASP.NET:.
Precedncia das Configuraes de Tema

Voc pode especificar a prioridade que as configuraes de tema tm sobre as


configuraes de controles locais, especificando como o tema aplicado.
Se voc definir a propriedade Theme de uma pgina, as configuraes de controle
no tema e na pgina sero mescladas para formar as configuraes finais para o
controle. Se uma configurao de controle for definida no controle e no tema, as
configuraes de controle do tema substituiro quaisquer configuraes da pgina
para o controle. Essa estratgia permite ao tema criar uma aparncia consistente
entre pginas, mesmo se os controles nas pginas j tm configuraes de
propriedade individuais. Por exemplo, ela permite a voc aplicar um tema a uma
pgina criada em uma verso anterior do ASP.NET.
Como alternativa, voc pode aplicar um tema como um tema folha de estilos,
definindo propriedade StyleSheetTheme da pgina. Nesse caso, as configuraes de
pgina locais tm prioridade sobre aquelas definidas no tema quando a
configurao definida nos dois lugares. Esse o modelo usado pelas folhas de
estilo em cascata. Voc pode aplicar um tema como um tema de folha de estilo se
voc deseja ser capaz de definir as propriedades de controles individuais na pgina
ainda enquanto aplica um tema para uma aparncia geral.
Propriedades que Voc Pode Definir Usando Temas

Como regra, voc pode usar temas para definir propriedades que dizem respeito
aparncia ou contedo esttico de uma pgina ou controle. Voc pode definir
somente as propriedades que possuem um atributo ThemeableAttribute definido
como true na classe controle
Propriedades que especificam explicitamente o comportamento do controle em vez
da aparncia no aceitam valores de tema. Por exemplo, voc no pode definir a
propriedade CommandName de um controle Button, usando um tema. Da mesma
forma, voc no pode usar um tema para definir a propriedade AllowPaging ou a
propriedade DataSource de um controle GridView.
Temas versus Folhas de Estilo em Cascata

Temas so semelhantes s folhas de estilo em cascata, pois tanto os temas quanto


as folhas de estilo definem um conjunto de atributos comuns que podem ser
aplicados a qualquer pgina. Entretanto, temas diferem das folhas de estilo das
seguintes maneiras:

Temas podem definir muitas propriedades de um controle ou pgina, no


apenas propriedades de estilo. Por exemplo, usando temas, voc pode
especificar os grficos para um controle TreeView, o layout de modelo de um
controle GridView, e assim por diante.

Temas no ASP.NET (Visual Studio)

Temas podem incluir elementos grficos.

Temas no fazem cascata (cascade) da mesma forma que as folhas de estilo


fazem. Por exemplo, por padro, os valores de propriedade substituem os
valores de propriedade local a menos que voc explicitamente aplique o tema
como um tema de folha de estilo.

Somente um tema pode ser aplicado a cada pgina. No possvel aplicar


vrios temas a uma pgina, diferentemente das folhas de estilo onde vrias
folhas de estilos podem ser aplicadas.

Passo-a-passo: personalizando um site usando temas no Visual


Studio
Esta explicao passo a passo ilustra como usar temas para aplicar uma aparncia
consistente a pginas e controles em seu site. Um tema pode incluir arquivos de
capa que definem um aspecto comum para controles individuais, uma ou mais
folhas de estilo e elementos grficos comuns para uso dos controles, como o
Controle TreeView Controle. Esta explicao passo a passo mostra como trabalhar
com temas ASP.NET em sites da Web
As tarefas ilustradas nesta explicao passo a passo incluem:

Aplicar temas predefinidos ASP.NET para pginas individuais e para o site


como um todo.

Criando seu prprio tema que inclui capas, que so usadas para definir o
aspecto dos controles individuais.
Pr-requisitos

Para concluir esta explicao passo a passo, ser necessrio:

Visual Web Developer Microsoft (Visual Studio).

O .NET Framework.
Criando o site da Web

Se voc j criou um site no Visual Web Developer (por exemplo, seguindo as


etapas no Passo-a-passo: Criando uma pgina da Web bsica em Visual Web
Developer), voc pode usar esse site e ir para a prxima seo. Caso contrrio, crie
um novo site e pgina seguindo estas etapas.
Para criar um site do sistema de arquivos
1.

Abra Visual Web Developer.

2.

No menu File, clique New Web Site.


A caixa de dilogo New Web Site aparece.

3.
4.

Em Visual Studio installed templates, clique em ASP.NET Web Site.


Na caixa Location, insira o nome da pasta onde voc deseja manter as
pginas do seu site.
Por exemplo, digite o nome da pasta C:\WebSites.

5.
6.

Na lista Language, clique na linguagem de programao que voc preferir


trabalhar.
Clique em OK.

Temas no ASP.NET (Visual Studio)

O Visual Web Developer cria a pasta e uma nova pgina chamada


Default.aspx.
Para iniciar o trabalho com temas nesta explicao passo a passo, ir configurar um
controle Button, um controle Calendar, e um controle Label, para que voc possa
ver como esses controles so afetados por temas.
Para colocar controles na pgina
1.
2.

Alterne para modo Design.


A partir do grupo Standarddo Toolbox, arraste um controle Calendar, um
controleButton, e um controle Label para a pgina. O layout exato da pgina
no importante.
Observao
No aplique qualquer formatao para qualquer um dos controles. Por exemplo, no use o comando
AutoFormat para definir o aspecto do controle Calendar.

3.
4.

Alterne para modo de origem.


Certifique-se de que o elemento <head> da pgina tem o atributo
runat="server" para que ela seja lida da seguinte maneira:
<head runat="server"></head>

5.

Salve a pgina.

Para testar a pgina, voc desejar ver a pgina antes de um tema ser aplicado, e
depois com diferentes temas.
Criando e aplicando um tema a uma pgina
O ASP.NET torna fcil aplicar um tema predefinido a uma pgina, ou criar um tema
exclusivo. (Para obter detalhes, consulte COMO: Definir temas ASP.NET.) Nesta
parte da explicao passo a passo, voc ir criar um tema com algumas capas
simples, que definem a aparncia dos controles.
Para criar um novo tema
1.

Em Visual Web Developer, clique com o boto direito do mouse no nome de


seu site, clique Add ASP.Net Folder, e em seguida, clique em Theme.
A pasta chamada App_Themes e uma subpasta chamada Theme1 so
criadas.

2.

Renomeie a pasta Theme1sampleTheme.


O nome desta pasta ser o nome do tema que voc criar (aqui,
sampleTheme). O nome exato no importante, mas voc tem que se
lembrar dele quando voc for aplicar o tema personalizado.

3.

Clique com o boto direito do mouse na pasta sampleTheme, selecione Add


New Item, adicione um novo arquivo de texto, e denomineosampleTheme.skin.

4.

No arquivo sampleTheme.skin, adicione definies de capa conforme


mostrado no exemplo de cdigo a seguir.
<asp:Label runat="server" ForeColor="red" Font-Size="14pt" FontNames="Verdana" /> <asp:button runat="server" Borderstyle="Solid"
Borderwidth="2px" Bordercolor="Blue" Backcolor="yellow"/>

Temas no ASP.NET (Visual Studio)

Observao
As caractersticas exatas que voc define so no importantes. Os valores da seleo anterior so
sugestes que sero mais bvias quando voc testar o tema posteriormente.
As definies de capa so semelhantes sintaxe para criao de um controle,
exceto que as definies incluem apenas configuraes que afetam a
aparncia do controle. Por exemplo, as definies capa no incluem uma
configurao para a propriedade ID.
5.

Salve o arquivo de capa, e seguida, feche-o.

Agora voc pode testar a pgina antes de que qualquer temas seja aplicado.
Observao
Se voc adicionar um arquivo de folhas de estilo em cascata (CSS) para a sua pasta sampleTheme, ele
ser aplicado a todas as pginas que usam o tema.
Para testar temas
1.

Pressione CTRL+F5 para executar a pgina.


Os controles so exibidos com sua aparncia padro.

2.
3.

Feche o navegador, e depois retorne ao Visual Web Developer.


No modo de exibio origem, adicione o atributo a seguir para a diretiva
@ Page:
<%@ Page Theme="sampleTheme" ... %>

Observao
Voc deve indicar o nome de um tema real no valor do atributo (neste caso, o arquivo sampleTheme.skin
que voc definiu anteriormente).
4.

Pressione CTRL+F5 para executar a pgina novamente.


Desta vez, os controles so processados com o esquema de cores definido no
seu tema.
Os controles Label e Button sero exibidos com as configuraes feitas no
arquivo sampleTheme.skin. Porque voc no foi criou uma entrada no arquivo
sampleTheme.skin para o controle Calendar, ele ser exibido com a
aparncia padro.

5.
6.

Em Visual Web Developer, defina o tema com o nome de outro tema, se


disponvel.
Pressione CTRL+F5 para executar a pgina novamente.
Os controles alteraro sua aparncia novamente.

Temas de Folhas de Estilo vs. Personalizao de Temas


Aps ter criado seu tema, voc pode adaptar como ele usado no seu aplicativo
associando-o com a pgina tanto como um tema personalizado (como feito na
seo anterior), ou como um tema de folhas de estilo. Um tema de folhas de estilo

Temas no ASP.NET (Visual Studio)

usa os mesmos arquivos de tema como um tema personalizado, mas sua prioridade
nos controles e propriedades da pgina inferior, equivalente a um arquivo CSS.
No ASP.NET, a ordem de prioridade :

Configuraes de temas, incluindo temas definidos em seu arquivo


Web.config.

Configuraes de pgina local.

Configuraes de Temas de Folhas de Estilo.

Quanto a isso, se voc optar por usar um tema de folhas de estilo, as propriedades
do seu tema sero substitudas por qualquer coisa declarada localmente na pgina.
Da mesma forma, se voc usar um tema personalizado, as propriedades do seu
tema iro substituir qualquer coisa dentro a pgina local, e tambm em qualquer
tema de folhas de estilo em uso.
Para usar um tema de folhas de estilo e consultar ordem de prioridade
1.

Alterne para modo de origem.

2.

Altere a declarao da pgina:


<%@ Page theme="sampleTheme" %>

Para uma declarao de tema de folhas de estilo:


<%@ Page StyleSheetTheme="sampleTheme" %>

3.

Pressione CTRL+F5 para executar a pgina.


Observe que a propriedade ForeColor do controle Label1 est vermelho.

4.

Alternar para modo Design.

5.

Selecione Label1 e, em Properties, defina ForeColor como blue.

6.

Pressione CTRL+F5 para executar a pgina.


A propriedade ForeColor de Label1 fica azul.

7.
8.

Alterne para modo de origem.


Altere a declarao da pgina para declarar um tema, em vez de um tema de
folhas de estilo, alterando:
<%@ Page StyleSheetTheme="sampleTheme" %>

De volta para:
<%@ Page Theme="sampleTheme" %>

9.

Pressione CTRL+F5 para executar a pgina.


A propriedade ForeColor de Label1 estar vermelho novamente.

Baseando um tema personalizado em controles existente


Uma maneira fcil para criar definies de capa usar o designer para definir as
propriedades de aparncia, e ento copiar a definio de controle em um arquivo
de capas.
Para basear um tema personalizado em controles existentes
1.

No modo Design, defina a propriedades do controle Calendar para que o


controle tenha um aspecto diferente. As configuraes a seguir so sugestes:

BackColor

Cyan

BorderColor

Red

Temas no ASP.NET (Visual Studio)

10

BorderWidth

CellSpacing

Font-Name

Arial

Font-Size

SelectedDayStyle-BackColor

Red

SelectedDayStyle-ForeColor

Yellow

TodayDayStyle-BackColor

Large

Pink

Observao
As caractersticas exatas que voc definir no so importantes. Os valores da lista anterior so sugestes
que sero mais bvios quando voc testar o tema posteriormente.
2.

Alterne para o modo de origem e copie o elemento<asp:calendar> e seus


atributos.

3.

Alterne para ou abra o arquivo sampleTheme.skin.

4.

Cole a definio do controle Calendar no arquivo sampleTheme.skin.

5.

Remova a propriedade ID da definio no arquivo sampleTheme.skin.

6.

Salve o arquivo sampleTheme.skin.

7.
8.

Alterne para a pgina Default.aspx, e arraste um segundo controle Calendar


para a pgina. No defina qualquer outra de suas propriedades.
Execute a pgina Default.aspx.
Ambos os controles Calendar iro aparentar o mesmo. O primeiro controle
Calendar reflete as configuraes que voc fez nas propriedades
explicitamente. O segundo controle Calendar herda suas propriedades de
aparncia da definio de capa que voc fez no arquivo sampleTheme.skin.

Aplicando temas a um site


Voc pode aplicar um tema a um site inteiro, que significa que voc no precisa
reaplicar o tema a pginas individuais. (Se voc desejar, voc pode substituir as
configuraes dos temas em uma pgina.)
Para configurar um tema para um site
1.

Crie um arquivo Web.config se um no foi adicionado automaticamente ao


seu site, seguindo etapas seguintes:
1.
2.

No Solution Explorer, clique com o boto direito do mouse no nome do


site, e clique Add New Item.
Em Templates, selecione Web Configuration File, e clique Add.
Observao Voc no precisa escrever um nome, porque o arquivo
denominado sempre de Web.config.

2.
3.

Adicione o elemento <pages> se ele ainda no existir. O elemento


<pages> deve aparecer dentro do elemento <system.web>.
Adicionar o seguinte atributo ao elemento <pages>.
<pages theme="sampleTheme" />

Temas no ASP.NET (Visual Studio)

11

Observao
Web.config diferencia maisculas de minsculas e os valores esto caixa-mista (alta e baixa). (Por
exemplo: tema e styleSheetTheme).
4.

Salve e feche o arquivo Web.config.

5.

Alterne para Default.aspx e alterne para o modo de origem.

6.

Remova o atributo theme="themeName" da declarao de sua pgina.

7.

Pressione CTRL+F5 para executar Default.aspx.


Agora a pgina exibida com o tema que voc especificou no arquivo
Web.config.

Se voc optar por especificar um nome de tema na declarao de sua pgina, ele
substituir qualquer tema especificado no seu arquivo Web.config.
Prximas etapas
O suporte ASP.NET para temas oferece uma variedade de opes para adaptar do
aspecto e percepo de um aplicativo inteiro. Esta explicao passo a passo
abordou algumas das noes bsicas, mas voc pode estar interessado em
aprender mais. Por exemplo, pode desejar aprender mais sobre:

Uso de temas em geral. Para mais informaes, consulte Viso geral sobre
temas e capas ASP.NET

Criar seus prprios temas e capas. Para mais informaes, consulte COMO:
Definir temas ASP.NET

Usando temas com cdigo. Para mais informaes, consulte COMO: aplicar
temas ASP.NET Programaticamente

Viso geral sobre capas e temas do ASP.NET


Um tema um conjunto de configuraes de propriedade que permitem a voc
definir a aparncia de pginas e controles, e aplicar a aparncia consistentemente
em pginas de um aplicativo da Web, em um aplicativo da Web inteiro, ou em
todos os aplicativos da Web em um servidor.
Temas e Aparncias de Controle

Temas so compostos de um conjunto de elementos: aparncias, folhas de estilo


em cascata (CSS), imagens e outros recursos. No mnimo, um tema conter capas.
Temas so definidos em diretrios especiais no seu site ou em seu servidor Web.
Aparncias
Um arquivo de aparncia tem a extenso de nome de arquivo .skin e contm
configuraes de propriedades para controles individuais, como os controles Button,
Label, TextBox ou Calendar. Configuraes de capa de aparncia so semelhantes a
marcaes de controle propriamente ditas, mas contm somente as propriedades
que voc deseja definir como parte do tema. Por exemplo, a seguir est uma
aparncia de controle para um controle Button:
<asp:button runat="server" BackColor="lightblue" ForeColor="black" />

Temas no ASP.NET (Visual Studio)

12

Voc criar arquivos .skin na pasta do tema. Um arquivo.skin pode conter uma ou
mais aparncias de controle para um ou mais tipos de controle. Voc pode definir
aparncias em um arquivo separado para cada controle ou definir todos as
aparncias para um tema em um nico arquivo.
Existem dois tipos de aparncias de controle, aparncias padro (default skins) e
aparncias nomeadas (named skins):

Quando um tema aplicado a uma pgina, uma aparncia padro aplicada


automaticamente a todos os controles do mesmo tipo. Uma aparncia de
controle uma aparncia padro se ele no possuir um atributo SkinID. Por
exemplo, se voc criar uma aparncia padro para um controle Calendar, a
aparncia de controle ser aplicada a todos os controles Calendar nas pginas
que usam o tema. (Aparncias padro so definidas exatamente por tipo de
controle, para que uma aparncia de controle Button se aplique a todos os
controles Button, mas no a controles LinkButton ou a controles que derivem do
objeto Button.)

Uma aparncia nomeada uma aparncia de controle com um conjunto de


propriedades SkinID. Aparncias nomeadas no so aplicadas automaticamente
a controles por tipo. Em vez disso, voc aplica uma aparncia nomeada a um
controle explicitamente, definindo propriedade SkinID do controle. A criao de
aparncias nomeadas permite-lhe definir aparncias diferentes para instncias
diferentes do mesmo controle em um aplicativo.

Folhas de Estilo em Cascata


Um tema tambm pode incluir uma folha de estilos em cascata (arquivo .css).
Quando voc coloca um arquivo.css no diretrio do tema, a folha de estilos
aplicada automaticamente como parte do tema. Voc define uma folha de estilos
usando a extenso de nome de arquivo .css na pasta do tema.
Grficos e Outros Recursos de Temas
Temas tambm pode incluir elementos grficos e outros recursos, como arquivos
de script ou arquivos de som. Por exemplo, parte do seu tema de pgina pode
incluir uma aparncia de um controle TreeView. Como parte do tema, voc pode
incluir os elementos grficos usados para representar os botes de expandir e
recolher.
Normalmente os arquivos de recursos para o tema esto na mesma pasta que os
arquivos de aparncias para esse tema, mas elas podem ser em outro lugar no
aplicativo da Web, em uma subpasta do diretrio do tema por exemplo. Para se
referir a um arquivo de recursos em uma subpasta do diretrio do tema, use um
caminho como o que est sendo mostrado nesta aparncia de controle Image:
<asp:Image runat="server" ImageUrl="ThemeSubfolder/filename.ext" />

Voc tambm pode armazenar seus arquivos de recurso fora a diretrio do tema.
Se voc usar a sintaxe til (~) para consultar os arquivos de recursos, o aplicativo
da Web automaticamente encontrar as imagens. Por exemplo, se voc colocar os
recursos para um tema em um subdiretrio do seu aplicativo, voc pode utilizar
caminhos do formulrio ~/SubPasta/nomedoarquivo.ext para referir-se a arquivos
de recursos, como no seguinte exemplo de cdigo
<asp:Image runat="server" ImageUrl="~/AppSubfolder/filename.ext" />
Temas de Escopo

Voc pode definir temas para um nico aplicativo da Web, ou como temas globais
que podem ser usados por todos os aplicativos em um servidor Web. Aps um tema
ser definido, ele pode ser colocado em pginas individuais usando o atributo

Temas no ASP.NET (Visual Studio)

13

Theme ou StyleSheetTheme da diretiva @ Page, ou pode ser aplicado a todas as


pginas em um aplicativo definindo o elemento <pages> no arquivo de
configurao do aplicativo. Se o elemento <pages> estiver definido no arquivo
Machine.config, o tema ser aplicado a todas as pginas em aplicativos da Web no
servidor.
Temas de Pgina
Um tema de pgina uma pasta de tema com aparncias de controle, folhas de
estilos, arquivos grficos e outros recursos criados como um subpasta da pasta
\App_Themes em seu site da Web. Cada tema uma subpasta diferente da pasta
\App_Themes. O exemplo de cdigo a seguir mostra um tema de pgina tpico,
definindo dois temas chamados BlueTheme e PinkTheme.
MyWebSite App_Themes BlueTheme Controls.skin BlueTheme.css PinkTheme
Controls.skin PinkTheme.css

Temas Globais
Um tema global um tema que voc pode aplicar a todos os sites da Web em um
servidor. Temas globais permitem que voc defina uma aparncia geral para o
domnio quando voc mantiver vrios sites da Web no mesmo servidor.
Temas globais so como temas de pgina dentro dos quais eles incluem
configuraes de propriedade, configuraes de folha de estilos, e elementos
grficos. Entretanto, temas globais so armazenados em uma pasta chamada
\Themes que global para o servidor Web. Qualquer site no servidor, e qualquer
pgina em qualquer site da Web, pode referenciar um tema global. Para obter mais
informaes sobre como criar uma pasta de temas globais, consulte Como definir
temas ASP.NET:.
Precedncia das Configuraes de Tema

Voc pode especificar a prioridade que as configuraes de tema tm sobre as


configuraes de controles locais, especificando como o tema aplicado.
Se voc definir a propriedade Theme de uma pgina, as configuraes de controle
no tema e na pgina sero mescladas para formar as configuraes finais para o
controle. Se uma configurao de controle for definida no controle e no tema, as
configuraes de controle do tema substituiro quaisquer configuraes da pgina
para o controle. Essa estratgia permite ao tema criar uma aparncia consistente
entre pginas, mesmo se os controles nas pginas j tm configuraes de
propriedade individuais. Por exemplo, ela permite a voc aplicar um tema a uma
pgina criada em uma verso anterior do ASP.NET.
Como alternativa, voc pode aplicar um tema como um tema folha de estilos,
definindo propriedade StyleSheetTheme da pgina. Nesse caso, as configuraes de
pgina locais tm prioridade sobre aquelas definidas no tema quando a
configurao definida nos dois lugares. Esse o modelo usado pelas folhas de
estilo em cascata. Voc pode aplicar um tema como um tema de folha de estilo se
voc deseja ser capaz de definir as propriedades de controles individuais na pgina
ainda enquanto aplica um tema para uma aparncia geral.
Propriedades que Voc Pode Definir Usando Temas

Como regra, voc pode usar temas para definir propriedades que dizem respeito
aparncia ou contedo esttico de uma pgina ou controle. Voc pode definir
somente as propriedades que possuem um atributo ThemeableAttribute definido
como true na classe controle

Temas no ASP.NET (Visual Studio)

14

Propriedades que especificam explicitamente o comportamento do controle em vez


da aparncia no aceitam valores de tema. Por exemplo, voc no pode definir a
propriedade CommandName de um controle Button, usando um tema. Da mesma
forma, voc no pode usar um tema para definir a propriedade AllowPaging ou a
propriedade DataSource de um controle GridView.
Temas versus Folhas de Estilo em Cascata

Temas so semelhantes s folhas de estilo em cascata, pois tanto os temas quanto


as folhas de estilo definem um conjunto de atributos comuns que podem ser
aplicados a qualquer pgina. Entretanto, temas diferem das folhas de estilo das
seguintes maneiras:

Temas podem definir muitas propriedades de um controle ou pgina, no


apenas propriedades de estilo. Por exemplo, usando temas, voc pode
especificar os grficos para um controle TreeView, o layout de modelo de um
controle GridView, e assim por diante.
Temas podem incluir elementos grficos.

Temas no fazem cascata (cascade) da mesma forma que as folhas de estilo


fazem. Por exemplo, por padro, os valores de propriedade substituem os
valores de propriedade local a menos que voc explicitamente aplique o tema
como um tema de folha de estilo.

Somente um tema pode ser aplicado a cada pgina. No possvel aplicar


vrios temas a uma pgina, diferentemente das folhas de estilo onde vrias
folhas de estilos podem ser aplicadas.

Tarefas
Como definir temas ASP.NET:
COMO: Aplicar temas ASP.NET

Como definir temas ASP.NET:


Voc pode definir seus prprios temas da pgina ou globais. Temas consistem de
vrios arquivos de suporte, inclusive folhas de estilo para aparncia da pgina,
capas de controle para decorar controles de servidor e qualquer outro suporte de
imagens ou arquivos que compem o tema.
Para criar um tema de pgina

1.

Crie uma nova pasta chamada App_Themes no seu site.


Observao
A pasta deve ser denominada App_Themes.

2.

Crie uma nova subpasta da pasta App_Themes para manter seus arquivos
tema. O nome da subpasta o nome do tema. Por exemplo, para criar um
tema chamado BlueTheme, crie uma pasta denominada
\App_Themes\BlueTheme.

3.

Adicione arquivos nova pasta para capas, folhas de estilos e imagens que
compem o tema.

Temas no ASP.NET (Visual Studio)

15

Para criar um tema global

1.

Crie uma pasta de temas usando este caminho:


iisdefaultroot\aspnet_client\system_web\version\Themes

Por exemplo, se a pasta raiz da Web padro est em C:\Inetpub\wwwroot no


servidor Web, a nova pasta Themes pode ser esta:
C:\Inetpub\wwwroot\aspnet_client\system_web\version\Themes

Observao
O nome da pasta para temas globais Themes, no App_Themes, como para temas de pgina.
2.

Crie uma pasta de tema como uma subpasta da pasta Themes. O nome da
subpasta o nome do tema. Por exemplo, para criar um tema global chamado
BlueTheme, crie uma pasta chamada ...\Themes\BlueTheme.

3.

Adicione arquivos nova pasta para capas, folhas de estilos e imagens que
compem o tema.

Para criar uma capa

1.

Crie um novo arquivo de texto na sua subpasta de tema com uma extenso
.skin.
A conveno comum consiste em criar um arquivo .skin por controle, como
Button.skin ou Calendar.skin. Contudo, voc pode criar tantos ou to poucos
arquivos .skin de quantos voc precisar; arquivos de capas podem conter
vrias definies de capa.

2.

No arquivo .skin, adicione uma definio de controle normal (usando sintaxe


declarativa), mas inclua somente as propriedades que voc deseja definir para
o tema e no inclua um atributo ID. A definio de controle deve incluir o
atributo runat="server".
O exemplo a seguir mostra uma capa de controle padro para um controle
Button, define a cor e a fonte para todos os controles Button no tema:
<asp:Button runat="server" BackColor="Red" ForeColor="White" FontName="Arial" Font-Size="9px" />

Observao
Uma maneira conveniente para criar uma capa adicionar o controle a uma pgina e configur-la de
modo que ele tenha a aparncia desejada. Por exemplo, voc pode adicionar um controle Calendar a uma
pgina e definir seu cabealho do dia, data selecionada e outras propriedades. Em seguida, voc pode
copiar a definio de controle da pgina em um arquivo de capa e remover o atributo ID.
3.

Repita as etapas 2 e 3 para cada capa de controle que voc deseja criar.
Observao
Voc pode definir apenas uma capa padro por controle. Use o atributo SkinID na declarao do controle
da capa para criar uma capa nomeada que voc pode aplicar s instncias de um controle especfico.

Temas no ASP.NET (Visual Studio)

16

COMO: Aplicar temas ASP.NET


Voc pode aplicar temas a uma pgina, um site da Web ou globalmente. Definindo
um tema no nvel do site da Web aplica estilos e capas a todas as pginas e
controles no site, a menos que voc substitua um tema para uma pgina individual.
Se definir um tema no nvel da pgina aplica estilos e capas a essa pgina e todos
os seus controles.
Por padro, temas substituem as configuraes do controle local. Como alternativa,
voc pode definir um tema como um tema de folha de estilos para que o tema se
aplique somente a controlar as configuraes que no so explicitamente definidas
no controle.
Para aplicar um tema a um site da Web

1.

No arquivo Web.config do aplicativo, definida o elemento < pginas > com o


nome do tema, ou um tema global ou um tema de pgina, conforme mostrado
no exemplo a seguir:
<configuration> <system.web> <pages theme="ThemeName" /> </system.web>
</configuration>

Observao
Se um tema de aplicativo tem o mesmo nome de um tema de aplicativo global, o tema da pgina ter
prioridade.
2.

Para definir um tema como um estilo de tema de planilha e ser subordinado


as configuraes do controle local), defina o atributo StyleSheetTheme em
vez disso:
<configuration> <system.web> <pages StyleSheetTheme="Themename" />
</system.web> </configuration>

Uma configurao tema no arquivo Web.config se aplica a todas as pginas da Web


ASP.NET no aplicativo. Configuraes de tema no arquivo Web.config seguem
convenes de hierarquia de configurao normal. Por exemplo, para aplicar um
tema a apenas um subconjunto de pginas, voc pode colocar as pginas em uma
pasta com seu prprio arquivo Web.config ou criar um elemento < location > no
arquivo Web.config raiz para especificar uma pasta. Para obter detalhes, consulte
Configurando arquivos especficos e subpastas.
Para aplicar um tema a uma pgina individual

Definir o atributo Theme ou StyleSheetTheme da diretiva @


nome do tema a usar, como mostrado no exemplo a seguir:

Page com o

<%@ Page Theme="ThemeName" %> <%@ Page StyleSheetTheme="ThemeName" %>

O tema e seus estilos correspondentes e capas agora se aplicam somente


pgina declarada.
Aplicando capas a controles

Capas definidas no seu tema se aplicam a todas as ocorrncias do controle no


aplicativo ou pginas ao qual o tema aplicado. Em alguns casos, convm aplicar
um conjunto especfico de propriedades a um controle individual. Voc pode fazer
isto criando uma capa nomeada (uma entrada em um arquivo.skin que tenha uma
propriedade SkinID definida) e depois aplic-la pela identificao aos controles
individuais. Para obter detalhes sobre como criar capas nomeadas, consulte Como
definir temas ASP.NET:.

Temas no ASP.NET (Visual Studio)

17

Para aplicar uma capa nomeada a um controle

Definir a propriedade do controle SkinID como mostrado no exemplo a


seguir:
<asp:Calendar runat="server" ID="DatePicker" SkinID="SmallCalendar" />

Se o tema da pgina no incluir uma capa controle que corresponda a


propriedade SkinID, o controle usa a capa padro para esse tipo de controle.

COMO: Aplicar temas ASP.NET por Programao


Alm de especificar preferncias de tema e de capa em declaraes da pgina e
arquivos de configurao, voc pode aplicar temas programaticamente. Voc pode
definir os temas de pgina e temas de folha de estilo programaticamente;
entretanto, o procedimento para aplicao de cada tipo de tema diferente.
Para aplicar um tema de pgina programaticamente

Em um manipulador para mtodo PreInit da pgina, defina a propriedade


Theme da pgina.
O exemplo de cdigo a seguir mostra como definir o tema de uma pgina com
base condicionalmente em um valor passado em uma seqncia de caracteres de
consulta.
C#
Protected void Page_PreInit(object sender, EventArgs e) { switch
(Request.QueryString["theme"]) { case "Blue": Page.Theme = "BlueTheme";
break; case "Pink": Page.Theme = "PinkTheme"; break; } }

Para aplicar um tema de folha de estilo programaticamente

No cdigo da pgina, substitua a propriedade StyleSheetTheme e no


acessador get, retorne o nome do tema de folha de estilos.
O exemplo de cdigo a seguir mostra como definir um tema denominado
BlueTheme como o tema de folha de estilo para uma pgina:
C#
public override String StyleSheetTheme { get { return "BlueTheme "; } }

Para aplicar capas de controle programaticamente

Em um manipulador para mtodo PreInit da pgina, defina a propriedade


SkinID do controle.
O exemplo de cdigo a seguir mostra como definir uma propriedade SkinID de
um controle Calendar.
C#
void Page_PreInit(object sender, EventArgs e) { Calendar1.SkinID =
"MySkin"; }

Temas no ASP.NET (Visual Studio)

18

COMO: Desativar temas ASP.NET


Voc pode configurar uma pgina ou controle para ignorar temas. Temas
substituem as configuraes locais para a aparncia da pgina e controle por
padro. Desativar esse comportamento til quando um controle ou pgina j tem
uma aparncia predefinida que voc no deseja que o tema a substitua.
Observao
Voc pode dar prioridade para controlar as configuraes na pgina atual, aplicando um tema como um
tema de folha de estilos. Nesse caso, o tema usado para definir propriedades que no tm configuraes
locais, mas configuraes locais explcitas tm prioridade. Para obter detalhes, consulte COMO: Aplicar
temas ASP.NET.
Para desativar temas para uma pgina

Defina o atributo EnableTheming da diretiva @ PAGE como false, como no


exemplo:
<%@ Page EnableTheming="false" %>

Para desativar temas para um controle

Defina a propriedade EnableTheming do controle como false, como no


exemplo:
<asp:Calendar id="Calendar1" runat="server" EnableTheming="false" />

Temas no ASP.NET (Visual Studio)

19

Personalizando Sites do ASP.NET


O ASP.NET oferece suporte a muitos recursos que permitem fornecer aos usurios
uma experincia avanada na Web. Voc pode alterar o comportamento padro do
site e adicionar recursos que tornam mais fcil para os usurios trabalhar com seu
site.

Criando sites da Web para usurios individuais (Visual Studio)


Voc pode fornecer usurios com uma experincia personalizada em seu site,
definindo e usando propriedades de perfil, que voc pode usar para controlar
informaes de usurio (endereo, cidade), preferncias (esquema de cores, lista
de aes a seguir), ou qualquer informao personalizada exigida pelo seu
aplicativo (carrinho de compras). Depois que voc tenha definido propriedades de
perfil, o ASP.NET associa automaticamente a cada usurio ocorrncias individuais
das propriedades de perfil, e voc pode usar cdigo para definir ou obter os
valores. O ASP.NET faz a persistncia dos valores de propriedades em um
armazenamento de dados (que voc pode configurar), e na prxima vez que um
usurio visita seu site, o ASP.NET recupera automaticamente o valor da
propriedade do perfil para esse usurio.

Viso geral sobre propriedades de perfil ASP.NET


Em muitos aplicativos, voc deseja armazenar e usar informaes que sejam nicas
para um usurio. Quando um usurio visita seu site, voc pode usar as informaes
que armazenou para apresentar ao usurio uma verso personalizada do seu
aplicativo da Web. Personalizar um aplicativo requer um nmero de elementos:
voc deve armazenar as informaes usando um identificador de usurio exclusivo,
ser capaz de reconhecer usurios quando eles visitarem novamente e, ento,
buscar informaes do usurio conforme necessrio. Para simplificar seus
aplicativos, voc pode usar o recurso de perfil do ASP.NET, que pode realizar todas
as essas tarefas para voc.
O recurso de perfil do ASP.NET associa informaes a um usurio individual e
armazena as informaes em um formato persistente. Perfis permitem que voc
gerencie informaes do usurio sem exigir que crie e mantenha seu prprio banco
de dados. Alm disso, o recurso de perfil do ASP.NET disponibiliza a informaes do
usurio usando uma API fortemente tipada que voc pode acessar de qualquer
lugar em seu aplicativo.
Voc pode armazenar objetos de qualquer tipo usando perfis. O recurso de perfil
fornece um recurso de armazenamento genrico que permite que voc defina e
mantenha praticamente qualquer tipo de dados enquanto torna os dados
disponveis em uma maneira de tipo seguro.
Como funciona perfis do ASP.NET

Para usar perfis, voc deve primeiro ativar perfis modificando o arquivo de
configurao para seu aplicativo da Web do ASP.NET. Como parte da configurao,
voc especifica um provedor de perfil, que a classe base que executa as tarefas
de nvel baixo de armazenamento e recuperao de dados de perfil. Voc pode usar
o provedor de perfil includo no .NET Framework, que armazena dados de perfil no
SQL Server, ou voc pode criar e usar seu prprio provedor de perfil conforme
descrito no tpico Implementando um provedor perfil. Voc pode especificar se

Temas no ASP.NET (Visual Studio)

20

uma instncia do SqlProfileProvider que se conecta a um banco de dados de sua


escolha ou voc pode usar a instncia padro do SqlProfileProvider que
armazena dados de perfil no servidor Web local.
Voc configura o recurso de perfil definindo uma lista de propriedades cujos valores
voc deseja manter. Por exemplo, convm armazenar um cdigo postal do usurio
para que o aplicativo possa oferecer informaes especficas da regio, como
relatrios de meteorologia. No arquivo de configurao, voc deve definir uma
propriedade de perfil chamada PostalCode. A seo profile do arquivo de
configurao pode parecer com o seguinte:
<profile> <properties> <add name="PostalCode" /> </properties> </profile>

Quando seu aplicativo executado, ASP.NET cria uma classe ProfileCommon, que
uma classe gerada dinamicamente que herda a classe ProfileBase. A classe
dinmica ProfileCommon inclui propriedades criadas das definies de
propriedade de perfil que voc especifica na sua configurao de aplicativo. Uma
instncia dessa classe dinmica ProfileCommon depois definida como o valor da
propriedade Profile do atual HttpContext e est disponvel para pginas em seu
aplicativo.
Em seu aplicativo, voc coleta o valor ou valores que deseja armazenar e os atribui
s propriedades de perfil que voc definiu. Por exemplo, a home page de seu
aplicativo pode conter uma caixa de texto que solicita ao usurio para digitar um
cdigo postal. Quando o usurio insere um cdigo postal, voc define uma
propriedade Profile para armazenar o valor para o usurio atual, como no exemplo
a seguir:
C#
Profile.PostalCode = txtPostalCode.Text;

Quando voc definir um valor para Profile.PostalCode, o valor armazenado


automaticamente para o usurio atual. Voc no precisa escrever cdigo algum
para determinar quem o usurio atual ou explicitamente armazenar o valor em
um banco de dados o recurso de perfil executa essas tarefas para voc.
Quando voc deseja usar o valor, voc pode obt-lo da mesma maneira que voc o
definiu. Por exemplo, o exemplo de cdigo a seguir mostra como chamar uma
funo imaginria nomeada GetWeatherInfo, passando-lhe o cdigo postal do
usurio atual como armazenado em um perfil:
C#
weatherInfo = GetWeatherInfo( Profile.PostalCode );

No preciso explicitamente determinar quem o usurio ou executar qualquer


pesquisas ao banco de dados. Simplesmente obtendo o valor da propriedade de um
perfil faz o ASP.NET executar as aes necessrias para identificar o usurio atual e
pesquisar o valor no armazenamento de perfil persistente.

Identificao de usurio para propriedades de perfil ASP.NET


O recurso de perfil de usurio do ASP.NET est projetado para fornecer informaes
que so exclusivas para o usurio atual. Perfis podem trabalhar com quaisquer
usurios autenticados ou com usurios annimos (no-autenticados).
Usurios autenticados

Temas no ASP.NET (Visual Studio)

21

Por padro, um perfil de usurio est associado com a identidade de usurio


armazenada na propriedade User do contexto HTTP atual, acessvel atravs da
propriedade System.Web.HttpContext.Current. A identidade do usurio
determinada por:

O sistema de autenticao ASP.NET Forms, que define a identidade do


usurio aps a autenticao bem-sucedida.

Autenticao Windows ou Passport, que define a identidade do usurio aps


a autenticao bem-sucedida.

Autenticao personalizada, onde voc gerencia obtendo credenciais de


usurio e definindo a identidade do usurio manualmente.

A autenticao do ASP.NET Forms envolve a criao de um formulrio de logon e


solicitao do usurio por credenciais. Voc pode usar os controles de logon do
ASP.NET para criar o formulrio de logon e realizar a autenticao sem escrever
cdigo. Para obter informaes sobre o uso de recursos ASP.NET para autenticar
usurios, consulte Viso Geral sobre Controles de Login ASP.NET e Gerenciando
usurios usando Associao. Para obter informaes sobre autenticao de
formulrio, consulte COMO: implementar autenticao de formulrios simples.
Usurios annimos

Perfis tambm podem trabalhar com usurios annimos. Se o suporte para perfis
annimos no estiver habilitado por padro, ento voc dever ativ-lo
explicitamente. Alm disso, quando voc define propriedades de perfil no arquivo
Web.config, explicitamente voc deve disponibiliz-las individualmente para
usurios annimos. Propriedades de perfil no oferecem suporte a acesso annimo
por padro porque perfis podem ser desenvolvidos para funcionar com usurios
autenticados, e vrias propriedades provavelmente sero referentes a informaes
pessoais que no esto disponveis para usurios annimos.
Se a identificao annima estiver ativada, o ASP.NET cria uma identificao
exclusiva para usurios na primeira vez que visitar seu site. A identificao
exclusiva de usurio armazenada em um cookie no computador do usurio para
que o usurio possa ser identificado com cada solicitao de pgina. O perodo de
expirao padro do cookie definido como aproximadamente 70 dias e
periodicamente renovado quando um usurio visita o site. Se o computador do
usurio no aceitar cookies, a identificao do usurio pode ser mantida como parte
do URL da solicitao da pgina, embora a identificao seja perdidas quando o
usurio desligar o navegador.
Para informaes sobre como ativar identificao annima, consulte o
anonymousIdentification elemento (esquema configuraes ASP.NET).
Migrando informaes de perfil annimas

Em alguns casos, seu aplicativo inicialmente pode estar mantendo as informaes


de personalizao para um usurio annimo, mas eventualmente o usurio efetua
logon em seu aplicativo. Nesse caso, a identidade do usurio muda da identidade
atribuda do usurio annimo para a identidade fornecida pelo processo de
autenticao.
Quando usurios efetuam logon (isto , quando eles param de ser usurios
annimos), o evento MigrateAnonymous disparado. Voc pode manipular esse
evento para migrar informaes da identidade annima do usurio para a nova
identidade autenticada, se necessrio. O exemplo de cdigo a seguir mostra como
migrar informaes quando um usurio for autenticado.
C#

Temas no ASP.NET (Visual Studio)

22

public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs


args) { ProfileCommon anonymousProfile =
Profile.GetProfile(args.AnonymousID); Profile.ZipCode =
anonymousProfile.ZipCode; Profile.CityAndState =
anonymousProfile.CityAndState; Profile.StockSymbols =
anonymousProfile.StockSymbols; //////// // Delete the anonymous profile. If
the anonymous ID is not // needed in the rest of the site, remove the
anonymous cookie. ProfileManager.DeleteProfile(args.AnonymousID);
AnonymousIdentificationModule.ClearAnonymousIdentifier(); }

Definir propriedades de perfil ASP.NET


O recurso de perfil do ASP.NET permite que voc armazene valores simples
(escalares), colees e outros tipos complexos e tipos definidos pelo usurio.
Informaes de definio de propriedade

Quando voc define uma propriedade no perfil, voc especifica um nome que voc
usar para fazer referncia propriedade. Por exemplo, se voc deseja armazenar
um cdigo postal, voc pode nomear a propriedade PostalCode e voc poder obter
e definir o valor da propriedade como Profile.PostalCode.
Opcionalmente, voc pode definir as seguintes caractersticas adicionais para cada
propriedade:

type Especifica o tipo para a propriedade. O padro String. Voc pode


especificar qualquer classe .NET conforme o tipo (Int32, DateTime,
StringCollection e assim por diante). Se o tipo no estiver definido no .NET
Framework, voc deve garantir que seu aplicativo da Web tenha acesso ao tipo.
Voc pode incluir o assembly compilado do tipo no diretrio Bin do site ou no
cache global de assemblies (GAC), ou voc pode colocar o cdigo-fonte para o
tipo no diretrio App_Code do site.

serializeAs Especifica o formatador de serializao (seqncia de


caracteres, binrio, XML ou serializao especfica do provedor). Para obter
detalhes, consulte Serialization. A serializao padro seqncia de caracteres.

allowAnonymous Especifica um valor booleano que indica se a


propriedade gerenciada por usurios annimos. Por padro, false. Se voc
desejar que a propriedade esteja disponvel para usurios no autenticados, voc
pode definir a propriedade como true.

defaultValue
inicializada.

readOnly Especifica um valor booleano que indica se a propriedade pode


ser modificada.

provider Especifica um provedor especfico para a propriedade. Por


padro, todas as propriedades so gerenciadas usando o provedor padro
especificado para propriedades de perfil, mas propriedades individuais tambm
podem usar provedores diferentes.

customProviderData Especifica uma seqncia de caracteres opcional


contendo informaes personalizadas que so passadas para o provedor de
perfil. Provedores individuais podem implementar lgica personalizada para usar
esses dados.

Especifica um valor com o qual a propriedade ser

Temas no ASP.NET (Visual Studio)

23

Alm disso, as propriedades de perfil podem ser organizadas como grupos de


propriedades usando o elemento de configurao de grupo, que abordado
posteriormente neste tpico.
Trabalhando com valores escalares

Armazenar valores escalares, tais como seqncias de caracteres, valores


numricos ou valores DateTime em um perfil requer somente configurao
mnima. Voc deve fornecer um nome e o tipo. O sistema de perfil ir converter o
valor do tipo especificado para uma seqncia de caracteres, e depois ir converter
de volta ao tipo especificado conforme necessrio para o armazenamento. Quando
voc acessar a propriedade atravs da propriedade Profile, ela estar tipada
corretamente.
Por exemplo, se voc deseja armazenar o nome, o peso e a data de nascimento do
usurio, voc pode definir uma propriedade denominada Name do tipo String, outra
denominada Weight que do tipo Int32 e uma terceira nomeada BirthDate do tipo
DateTime. No arquivo de configurao, as definies de propriedade sero
parecidas com o que segue:
<profile defaultProvider="AspNetSqlProfileProvider"> <properties> <add
name="Name" /> <add name="Weight" type="System.Int32" /> <add
name="BirthDate" type="System.DateTime" /> </properties> </profile>

Para a propriedade Name, voc no precisa explicitamente especificar um tipo,


porque a propriedade do tipo String, o padro. Para qualquer outro tipo, voc
deve fornecer uma referncia de tipo totalmente qualificada.
Quando voc obter ou definir os valores da propriedade, voc precisar trabalhar
com o tipo apropriado no seu cdigo. O exemplo de cdigo a seguir mostra como
trabalhar com a propriedade BirthDate:
C#
DateTime bday = Profile.BirthDate;
Trabalhando com tipos de propriedade complexos

Voc tambm pode armazenar tipos complexos, tal como colees, em perfis de
usurio. Para tipos complexos, voc deve fornecer informaes sobre como o tipo
deve ser serializado, para que o sistema de perfil possa obter e definir o valor da
propriedade como o tipo apropriado.
O exemplo a seguir mostra uma definio de propriedade para um valor tipado
como uma coleo:
<profile defaultProvider="AspNetSqlProfileProvider"> <properties> <add
name="FavoriteURLs" type="System.Collection.Specialized.StringCollection"
serializeAs="Xml" /> </properties> </profile>

Para definir uma propriedade desse tipo, voc pode usar cdigo como o seguinte:
C#
System.Collections.Specialized.StringCollection favorites; favorites =
Profile.FavoriteURLs;
Trabalhando com tipos de propriedade definidos pelo usurio

Voc tambm pode armazenar e usar valores de propriedade de perfil que so


instncias de classes que voc mesmo cria. A classe que voc criar deve oferecer
suporte serializao para os membros que voc deseja armazenar no perfil do
usurio.

Temas no ASP.NET (Visual Studio)

24

O exemplo de cdigo a seguir ilustra uma classe ShoppingCart simples que mantm
uma coleo de itens Cart que armazenam um identificador de item, nome e custo:
C#
namespace Samples.AspNet.Profile { [Serializable] public class ShoppingCart {
public DateTime Created; public DateTime LastUpdated; public
CartItemCollection CartItems = new CartItemCollection(); } [Serializable]
public class CartItemCollection : System.Collections.Hashtable { }
[Serializable] public class CartItem { public CartItem(int itemId, string
itemName, double itemCost) { ID = itemId; Name = itemName; Cost = itemCost; }
int ID; string Name; double Cost; } }

Para configurar o perfil de usurio para usar instncias de armazenamento dessa


classe, adicione a seo a seguir ao arquivo Web.config do aplicativo:
<profile defaultProvider="AspNetSqlProfileProvider"> <properties> <add
name="MyCart" type="Samples.AspNet.Profile.ShoppingCart" serializeAs="Binary"
/> </properties> </profile>

Para armazenar os dados de tipo personalizado no perfil do usurio, crie uma


instncia do tipo personalizado como voc faria em qualquer aplicativo, e depois a
atribua para a propriedade de perfil que voc definiu para esse tipo. O exemplo de
cdigo a seguir mostra como trabalhar com uma propriedade de perfil criada como
um tipo personalizado:
C#
ShoppingCart bookCart = new ShoppingCart(); bookCart.CartItems.Add("Contoso",
new CartItem(37843, "Widget", 49.99); bookCart.CartItems.Add("Microsoft", new
CartItem(39232, "Software", 49.99); Profile.MyCart = bookCart;
Trabalhando com grupos de propriedade

As propriedades podem ser organizadas no perfil do usurio como grupos de


propriedades. Grupos de propriedade de perfil so especificados usando o elemento
de configurao de grupo. Por exemplo, as diferentes propriedades de informaes
de endereo do usurio podem ser agrupadas juntas em um grupo Address. Voc
pode depois acessar as propriedades agrupadas usando o identificador de grupo e o
nome da propriedade (por exemplo, Profile.Address.Street ou
Profile.Address.City). O exemplo a seguir mostra uma configurao de
propriedade de perfil que organiza algumas propriedades em um grupo.
<profile enabled="true"> <properties> <add name="PostalCode" /> <group
name="Address"> <add name="Street" /> <add name="City" /> <add
name="CountryOrRegion" /> </group> </properties> </profile>

Provedores de perfil ASP.NET


O recurso perfil do ASP.NET usa a mesma estrutura baseada em provedor usada
por associao ASP.NET, gerenciamento de funo ASP.NET, e outros recursos do
ASP.NET. O recurso perfil do ASP.NET funciona como um sistema de camadas no
qual a funcionalidade do recurso perfil fornecendo valores de propriedade tipados
e gerenciamento de identidades de usurios separada do armazenamento de
dados subjacente. O recurso perfil depende dos provedores de perfil (provedores de
dados) para executarem as tarefas de back-end necessrias para armazenar e
recuperar valores de propriedade perfil.
Provedor de Perfil Padro

Temas no ASP.NET (Visual Studio)

25

ASP.NET inclui um provedor de perfil que armazena dados usando Microsoft SQL
Server. A configurao de mquina ASP.NET padro contm uma instncia padro
de SqlProfileProvider denominada AspNetSqlProfileProvider que se conecta ao SQL
Server na mquina local. Por padro, o recurso perfil do ASP.NET usa esta instncia
do provedor. Como alternativa, voc pode especificar um provedor padro diferente
no arquivo Web.config do aplicativo.
Para usar um SqlProfileProvider, voc deve primeiro criar o banco de dados do
SQL Server usado pelo SqlProfileProvider. Voc pode criar o banco de dados ao
executar o comando Aspnet_regsql.exe, que encontrado no seguinte caminho:
systemroot\Microsoft .NET\SDK\version
Quando voc executar a ferramenta, voc especifica a opo -Ap. O comando a
seguir mostra a sintaxe que voc usar para criar o banco de dados necessrio para
armazenar perfis do ASP.NET usando o SqlProfileProvider:
aspnet_regsql.exe -Ap

O exemplo acima no especifica um nome para o banco de dados que criado, de


modo que o nome padro ser usado. O nome do banco de dados padro
Aspnetdb.
Se o provedor perfil estiver configurado com uma seqncia de conexo que usa
segurana integrada, a conta de processo do aplicativo ASP.NET deve ter direitos
para se conectar ao banco de dados do SQL Server.
Observao
Se voc estiver usando um banco de dados SQL Server 2005 Express Edition que instalado usando a
configurao padro e o banco de dados est no mesmo computador que o servidor da Web, o banco de
dados de perfis ser criado automaticamente pelo ASP.NET.
Provedores de Perfil Personalizados

Em alguns casos, voc pode querer criar e usar um provedor de perfil


personalizado. Isso ocorre geralmente se voc j tiver um banco de dados que
armazena informaes de usurio, como um banco de dados de funcionrios, se
voc precisar usar um banco de dados diferente do Microsoft SQL Server, ou se
voc precisar usar um armazenamento de dados diferente, como arquivos XML.
Para obter mais informaes, consulte Implementando um provedor perfil.
As propriedades armazenadas em um perfil de usurio podem todas ser atendidas
por provedores de perfil diferentes. Portanto, voc pode gerenciar dados de vrias
fontes de dados para armazenar informaes para um nico perfil de usurio.

Passo-a-passo: Mantendo Informaes sobre o Usurio do Site


com Propriedades de Perfil
As propriedades de Perfil (Profile) do ASP.NET permitem ao aplicativo controlar e
armazenar permanentemente informaes especficas de usurios. Por exemplo, os
usurios podero especificar um cdigo postal ou um esquema de cores favoritos e
seu aplicativo poder armazenar essas informaes e recuper-las em qualquer
lugar do aplicativo. O ASP.NET casa automaticamente o usurio atual quer o
usurio seja annimo ou tenha efetuado logon com as informaes pessoais que
esto armazenadas para sua conta de usurio.

Temas no ASP.NET (Visual Studio)

26

Este passo-a-passo mostra como adicionar propriedades de Perfil ao seu aplicativo


e como usar essas propriedades para criar uma experincia personalizada para os
visitantes do site.
Durante este passo-a-passo, voc aprender a fazer o seguinte:
Configurar um aplicativo para usar propriedades de Perfil .

Definir propriedades de Perfilsimples e complexas que voc deseja manter


para os usurios.
Definir e recuperar valores de Perfil em seu aplicativo.

Usar as propriedades de Perfil tanto para usurios annimos como para


usurios que realizaram logon.
Pr-requisitos

Para concluir este passo-a-passo, sero necessrios:

O Microsoft Visual Web Developer.

O Microsoft .NET Framework.

O Microsoft SQL Server Standard Edition.


As informaes de propriedade de Perfil criadas neste passo-a-passo sero
armazenadas em um banco de dados SQL Server Standard Edition.
Cookies ativados em seu navegador.

Observao
As propriedades de Perfil do ASP.NET podem trabalhar sem cookies, se o aplicativo estiver configurado
para trabalhar sem cookies. No entanto, para este passo-a-passo voc usar as configuraes padro para
propriedades de Perfil que usa cookies.
Criando e Configurando o Site
Se voc j criou um site no Microsoft Visual Studio completando Passo-a-passo:
Criando uma Pgina Bsica da Web no Visual Web Developer, voc pode usar esse
site e ir para a prxima seo. Caso contrrio, crie um novo site seguindo as
seguintes etapas.
Para criar um site de sistema de arquivos
1.
2.

Abra o Visual Studio.


No menu File, aponte para New e, em seguida, clique em Web Site (ou no
menu File, clique em New Web Site).
Aparecer a caixa de dilogo New Web Site.

3.

Em Visual Studio installed templates, clique em ASP.NET Web Site.

4.

Na lista Location mais a esquerda, clique em File System

5.

No lista Location mais a direita, digite o nome da pasta onde voc deseja
manter as pginas do site
Por exemplo, digite C:\WebSites para nome da pasta.

6.
7.

Na lista Language, clique na linguagem de programao com a qual voc


prefere trabalhar.
Clique em OK.

Temas no ASP.NET (Visual Studio)

27

O Visual Web Developer ir criar a pasta e uma nova pgina chamada


Default.aspx.
Configurando Propriedades de Perfil
Antes de trabalhar com as propriedades de Perfil do ASP.NET, voc ir configurar
seu aplicativo para ativar e definir as propriedades de Perfil que voc deseja
controlar para cada usurio. Primeiramente, voc ir criar uma nica propriedade,
PostalCode, que o site ir controlar para cada usurio. Voc tambm ir configurar
a propriedade PostalCode para que o site possa control-la tanto para usurios
annimos e quanto para usurios que realizaram logon.
Voc ir trabalhar primeiro como um usurio annimo. Nos bastidores, o ASP.NET
atribuir a voc uma identificao exclusiva e annima que est armazenada em
um cookie no o computador. O ASP.NET pode usar esta identificao annima para
definir e obter valores que so exclusivamente seus.
Para configurar propriedades perfil no site da Web
1.

No Solution Explorer, verifique se o site j tem um arquivo web.config.


Se o site no tiver um arquivo web.config, siga as seguintes etapas:
1.

Clique com o boto direito do mouse no nome do site.

2.

Clique em Add New Item.

3.
4.

Em Visual Studio installed templates, clique em Web


Configuration File.
Clique em Add.
Um novo arquivo chamado web.config adicionado ao site e aberto no
editor.

2.

Adicione o seguinte elemento <profile> ao arquivo web.config como um filho


do elemento <system.web>:
<system.web> <anonymousIdentification enabled="true" /> <profile>
<properties> <add name="PostalCode" type="System.String"
allowAnonymous="true" /> </properties> </profile> <!-- other Web.config
settings here --> </system.web>

Observao
Os elementos do arquivo web.config diferenciam maisculas de minsculas. Portanto, certifique-se que
voc copiou ou digitou os elementos exatamente igual ao que foi mostrado.
Voc adicionou os seguintes elementos:
o

O elemento <anonymousIdentification>, que especifica se as


propriedades de Perfil devem trabalhar somente com usurios que realizaram
logon (autenticados) ou com ambos os annimos e os que realizaram logon.
Neste caso, voc definiu enabled como true. Portanto, as informaes das
propriedades de Perfil sero rastreadas tanto para usurios com que
realizaram logon quanto para usurios annimos.

o
o

O elemento <properties>, que contm todas as propriedades de


Profile que voc est definindo.
O elemento <add>, que define um novo elemento <profile>.

Temas no ASP.NET (Visual Studio)

28

Neste caso, voc definiu uma nica propriedade de Perfil chamada


PostalCode.
Quando voc define uma propriedade de Perfil, voc especifica o tipo de
dados usando um nome de classe de tipo do .NET Framework. Voc tambm
especifica se a propriedade Perfil ser controlada para usurios annimos.
Aps habilitar a identificao annima, voc pode, alm disso, especificar se
as propriedades de Perfil sero controladas individualmente para usurios
annimos.
Voc deve criar um novo elemento add para cada propriedade de Perfil
adicional que voc deseja definir.
Observao
Por padro, informaes de perfil de usurio so armazenadas em um banco de dados SQL Server
Standard Edition na subpasta Application_Data do site. Este passo-a-passo usa a configurao padro. Em
aplicativos de produo, que daro suporte a um nmero significativo de usurios, melhor para
armazenar os dados das propriedades de Profile em um banco de dados do SQL Server Microsoft. Para
obter mais informaes, consulte "Prximas Etapas", posteriormente neste passo-a-passo.
Definindo e Obtendo a Propriedade PostalCode
Aps configurar o site para controlar uma propriedade de Perfil, voc pode definir
e obter a propriedade de Perfil assim como faria com as propriedades de um
componente comum. Nesta seo, voc criar uma pgina que mostra como definir
e obter o valor de PostalCode, definida na seo anterior.
Para criar uma pgina para definir e obter a propriedade PostalCode
1.

Adicione uma nova pgina Web Form ao seu site chamada Profiles.aspx.

2.

Abra Profiles.aspx e v para modo Design.

3.

A partir do grupo Standard na caixa de ferramentas, arraste os controles


listados na tabela a seguir para a pgina e defina suas propriedades conforme
mostrado.
Controle

Configuraes das propriedades

TextBox

= IDtextPostalCode

Button

= IDSetPostalCode
= TextSet Postal Code

Label

= IDlabelPostalCode
= Text (vazio)

4.

V para modo de exibio de cdigo fonte e, em seguida, adicione o atributo


a seguir ao boto the Add URL, caso o atributo no exista.
OnClick="SetPostalCode_Click"

5.

Crie um manipulador para o evento Click do boto Set Postal Code e


adicione o seguinte cdigo realado.

Temas no ASP.NET (Visual Studio)

29

C#
void SetPostalCode_Click(object sender, System.EventArgs e) {
Profile.PostalCode = Server.HtmlEncode(textPostalCode.Text);
labelPostalCode.Text = Profile.PostalCode; }

Quando o perfil de usurio estiver habilitado, o ASP.NET cria dinamicamente


uma propriedade denominada Profile que adiciona o perfil de usurio ao
contexto atual. A seguir, as propriedades Profile individuais estaro
disponveis atravs de Profile.PostalCode.
6.

Crie um manipulador Page_Load e, em seguida, adicione o seguinte cdigo


realado.
C#
void Page_Load(object sender, System.EventArgs e) { labelPostalCode.Text
= Profile.PostalCode; }

Este cdigo ir exibir o valor de Profile.PostalCode toda vez que a pgina


for solicitada.
Testando a Propriedade de Perfil PostalCode
Agora voc pode testar a propriedade PostalCode, definida na seo anterior.
Observao
Se voc estiver trabalhando com um site existente que tenha associao habilitada, certifique-se que voc
est desconectado.
Para testar a propriedade PostalCode
1.

Pressione CTRL+F5 para executar a pgina Profiles.aspx.


Observao
Se o navegador exibir um erro 502 ou um erro indicando que a pgina no pode ser exibida, talvez seja
necessrio configurar seu navegador para ignorar servidores proxy para solicitaes locais. Para
informaes detalhadas, consulte Como Ignorar um Servidor Proxy para Solicitaes da Web Locais.

2.

Na caixa, digite um cdigo postal e, em seguida, clique em Set Postal Code.


O cdigo postal que voc inseriu aparecer no controle Label.

3.

Feche o navegador para fechar sua sesso atual.

4.

Abra novamente o navegador e solicite a pgina Profiles.aspx.


O cdigo postal inserido anteriormente aparecer no controle Label.

A ltima etapa do procedimento anterior ilustrou que o ASP.NET armazenou o valor


de PostalCode. Quando voc visitar a pgina novamente, o ASP.NET poder ler o
valor de PostalCode com base na sua identificao annima exclusiva.
Definindo Propriedades Complexas
Em "Definindo e Obtendo a Propriedade PostalCode", anteriormente neste passo-apasso, voc criou uma propriedade simples chamada PostalCode que foi
armazenada como uma seqncia de caracteres. Nesta seo, voc ir definir uma
propriedade denominada FavoriteURLs que representa uma coleo. O ASP.NET

Temas no ASP.NET (Visual Studio)

30

pode armazenar propriedades de Perfil de qualquer tipo, mas voc deve fornecer
informaes adicionais quando as est definindo.
Para Definir a Propriedade FavoriteURLs
1.
2.

Abra o arquivo web.config.


Adicione o seguinte elemento realado no elemento profile que voc criou
em "Configurando Propriedades de Perfil", anteriormente neste passo-apasso:
<anonymousIdentification enabled="true" /> <profile> <properties> <add
name="PostalCode" type="System.String" allowAnonymous="true" /> <add
name="FavoriteURLs"
type="System.Collections.Specialized.StringCollection"
allowAnonymous="true" /> </properties> </profile>

Voc adicionou uma nova propriedade de Perfil chamada FavoriteURLs. Para


propriedades de Perfil que no possuem tipos simples (como string ou
integer), voc deve especificar o tipo totalmente qualificado. Aqui, voc estar
especificando que a propriedade de Perfil ser uma coleo que ir
armazenar seqncias de caracteres (ou strings).
3.

Salve e feche o arquivo web.config.

Definindo e Obtendo a Propriedade FavoriteURLs


Trabalhar com a propriedade FavoriteURLs, que uma coleo, semelhante a
trabalhar com uma coleo em qualquer contexto. Nesta parte do passo-a-passo,
voc ir atualizar a pgina Profiles.aspx, criada em "Definindo e Obtendo a
Propriedade PostalCode", anteriormente neste passo-a-passo, adicionando um
controle TextBox onde os usurios podem digitar uma URL. Quando o usurio
clicar em Add, a URL ser adicionado propriedade FavoriteURLs. Voc tambm
exibir a lista atual de URLs favoritas uma caixa do tipo drop-down list.
Para definir e obter a propriedade FavoriteURLs
1.

Na pgina Profiles.aspx, adicione os seguintes controles e defina suas


propriedades conforme mostrado na tabela a seguir.
Controle

Configuraes das propriedades

TextBox

= IDtextFavoriteURL

Button

= IDAddURL
= TextAdd URL

ListBox
2.

= IDlistFavoriteURLs

V para modo de exibio de cdigo fonte e, em seguida, adicione o seguinte


atributo ao boto Add URL, caso o atributo no exista.
OnClick="AddURL_Click"

3.

Crie um manipulador para o evento Click do boto Add URL e, em seguida,


adicione o seguinte cdigo realado.
C#

Temas no ASP.NET (Visual Studio)

31

void AddURL_Click(object sender, System.EventArgs e) { String urlString


= Server.HtmlEncode(textFavoriteURL.Text); if(Profile.FavoriteURLs ==
null) { Profile.FavoriteURLs = new
System.Collections.Specialized.StringCollection(); }
Profile.FavoriteURLs.Add(urlString); DisplayFavoriteURLs(); }

4.

No manipulador Page_Load, adicione a seguinte linha de cdigo realada.


C#
void Page_Load(object sender, System.EventArgs e) { labelPostalCode.Text
= Profile.PostalCode; DisplayFavoriteURLs(); }

5.

Adicione a seguinte subrotina para atualizar a exibio de URLs no controle


ListBox.
C#
void DisplayFavoriteURLs() { listFavoriteURLs.DataSource =
Profile.FavoriteURLs; listFavoriteURLs.DataBind(); }

Testando a Propriedade de Perfil FavoriteURLs


Agora voc pode testar a propriedade FavoriteURLs.
Para testar a propriedade FavoriteURLs
1.

Para executar a pgina Profiles.aspx, pressione CTRL+F5.


Primeiramente, no existiro valores no controle ListBox.

2.

Na caixa, digite uma URL e, em seguida, clique em Add


A URL adicionada ao controle ListBox.

3.

Repita a etapa anterior para adicionar outra URL.

4.

Feche o navegador.

5.

Abra o navegador e, em seguida, abra a pgina Profiles.aspx.


Observe que o controle ListBox est preenchido com as URLs que voc
inseriu antes de fechar o navegador.

Migrando Propriedades de Perfil Durante Logon


Se um usurio est visitando seu site pela primeira vez como um usurio annimo,
mas, em seguida, realiza logon, convm preservar as configuraes das
propriedades que o usurio estabeleceu enquanto annimo. Um exemplo tpico
um site compras, onde o usurio pode procurar e adicionar itens a um carrinho de
compras como um usurio annimo, mas, em seguida, ele realiza logon para
finalizar a compra. Para preservar os valores referentes a um usurio quando ele
fizer logon, voc deve migrar o usurio do perfil atual de usurio annimo para o
perfil que ele possui como um usurio que realizou logon (autenticado).
Nesta seo, voc ir migrar a configurao do usurio para a propriedade
PostalCode. Voc deve possuir um site que j esteja configurado para usar
identidades de usurios e que tenha uma pgina de logon. Caso o site com o qual
voc est trabalhando ainda no tiver sido configurado para lidar com a associao
de usurios, use o seguinte procedimento para habilit-la. Caso seu site j aceite
associaes, v para a prxima seo.
Para configurar o site para lidar com associaes de usurios
1.

No Visual Studio, no menu Website, clique em ASP.NET Configuration.

Temas no ASP.NET (Visual Studio)

32

Aparecer a Web Site Administration Tool.


2.

Clique na guia Security.

3.

Clique em Security e, em Users, clique em Select authentication type.

4.

Selecione From the internet e, em seguida, clique em Done.


A opo From the internet especifica que o aplicativo usar um formulrio
de autenticao, onde os usurio iro efetuar o logon no aplicativo usando
uma pgina de logon.

5.

Na guia Security, em Users, clique em Create user e, em seguida, crie


uma conta de usurio.
Voc pode usar qualquer nome e senha, mas certifique-se de que ir se
lembrar do nome e da senha. Para o endereo de e-mail, use seu prprio.
(Voc no enviar mensagens de e-mail neste passo-a-passo.)

6.

Aps concluda a definio da conta de usurio, feche a Web Site


Administration Tool.

7.

A partir do grupo Login da caixa de ferramentas, arraste um controle Login


e um controle LoginName para a pgina.
O controle LoginName no necessrio para realizar logon, mas o ajudar a
se certificar de que o logon foi realizado.

Criando um Manipulador de Migrao


Para migrar as configuraes de um usurio annimo para as configuraes de um
usurio conectado (que realizou logon), voc deve executar a migrao quando
identidade do usurio estiver sendo alterada. O ASP.NET fornece o evento
MigrateAnonymous para essa finalidade. No manipulador para o evento
MigrateAnonymous, voc pode transferir as configuraes que voc deseja
preservar.
Para criar um manipulador de migrao
1.

Na Solution Explorer, clique com o boto direito do mouse no nome do site e,


em seguida, clique em Add New Item.

2.

Em Visual Studio installed templates, clique em Global Application


Class e, em seguida, clique Add.
Voc no precisa inserir um nome, pois o arquivo sempre nomeado como
Global.asax.

3.

Digite o seguinte cdigo para criar um novo manipulador para o evento


MigrateAnonymous.
C#
void Profile_MigrateAnonymous(Object sender, ProfileMigrateEventArgs e)
{ if(Profile.GetProfile(e.AnonymousID).PostalCode != String.Empty) {
Profile.PostalCode = Profile.GetProfile(e.AnonymousID).PostalCode; } }

O cdigo obtm o perfil de usurio para o usurio annimo e extrai o valor de


PostalCode. Em seguida, ele obtm o perfil para a nova identidade de usurio
e define o valor equivalente para essa identidade.
Testando a Migrao
Para testar a migrao, voc primeiro ir realizar algumas configuraes como um
usurio annimo. Em seguida, ir efetuar logon e verificar se os valores so
preservados.

Temas no ASP.NET (Visual Studio)

33

Para testar a migrao


1.

Abra a pgina Profiles.aspx e, em seguida, pressione CTRL+F5 para


execut-la.
O controle LoginName no exibir nada, pois voc ainda no realizou o
logon.

2.

Se um cdigo postal no exibido na pgina, digite um novo cdigo postal e,


em seguida, clique Set Postal Code.
O cdigo postal para sua identidade annima atual exibido na pgina.

3.

Efetue o logon usando o nome de usurio e senha que voc criou em


"Migrando Propriedades de Perfil Durante Logon", anteriormente neste passoa-passo.
O controle LoginName ir exibir seu nome de usurio. O cdigo postal que
voc inseriu como um usurio annimo ainda est sendo exibido, pois as
configuraes de cdigo postal foram migradas para o perfil de usurio
conectado.

Prximas Etapas
Este passo-a-passo ilustrou os procedimentos bsicos para configurar e usar
propriedades de Perfil em aplicativos da Web. Voc pode usar propriedades de
Perfil para muitos fins em seus aplicativos. A lista a seguir sugere outras reas
onde voc pode trabalhar com propriedades de Perfil:

Agrupar propriedades de Perfil, pois mais fcil trabalhar com propriedades


de Profile como uma unidade.
Por exemplo, voc pode organizar propriedades de Perfil como Street, City e
PostalCode em um grupo chamado Address.
Para obter informaes detalhadas, consulte Definindo Propriedades de Perfil do
ASP.NET.

Criar tipos personalizados, como um carrinho de compras, que voc


gerenciar com propriedades de Perfil.
Para obter informaes detalhadas, consulte Definindo Propriedades de Perfil do
ASP.NET.

Selecionar um provedor de perfil diferente.


Neste passo-a-passo, os valores das propriedades de Perfil foram armazenados
em um banco de dados SQL Server Standard Edition. Em aplicativos de produo
devem suportar um nmero significativo de usurios, melhor armazenar os
dados das propriedades em um banco de dados do SQL Server que usa a classe
SqlProfileProvider.
Para obter mais informaes, consulte Guia Web Site Administration Tool
Provider e Criando o Banco de Dados de Servios do Aplicativos para o SQL
Server.

Como alternativa, voc pode criar um provedor de perfil personalizado que


armazena informaes no formato e no meio de armazenamento que voc
codificar.
Para obter informaes detalhadas, consulte Implementando um Provedor de
Perfil.

Temas no ASP.NET (Visual Studio)

34

Implementando um provedor perfil


O recurso de perfil do ASP.NET permite que voc facilmente use provedores
diferentes. Voc pode usar a classe SqlProfileProvider que est includa com o .NET
Framework ou voc pode implementar seu prprio provedor.
Voc cria um provedor de perfil personalizado quando:

Voc precisa armazenar informaes de perfil em uma fonte de dados, como


em um banco de dados FoxPro ou em um banco de dados Oracle, para qual no
h suporte pelos provedores de perfil includos no .NET Framework.

Voc precisa gerenciar informaes de perfil usando um esquema de banco


de dados que seja diferente do esquema do banco de dados usado pelos
provedores que acompanham o .NET Framework. Um exemplo comum voc
desejar integrar informaes de perfil com dados de usurio em um banco de
dados do SQL Server existente.

Classes necessrias

Para implementar um provedor de perfil, voc cria uma classe que herda a classe
abstrata System.Web.Profile.ProfileProvider. A classe abstrata ProfileProvider
sucessivamente herda a classe abstrata System.Configuration.SettingsProvider, que
herda a classe abstrata System.Configuration.Provider.ProviderBase. Devido a essa
cadeia de herana, alm dos membros da classe ProfileProvider exigidos, voc
deve implementar os membros das classes SettingsProvider e ProviderBase
exigidos.
As tabelas a seguir descrevem as propriedades e os mtodos que voc deve
implementar das classes abstratas ProviderBase, SettingsProvider e
ProfileProvider. Para revisar uma implementao de cada membro, consulte o
Como: criar e executar o exemplo de provedor de perfil:.
Membros da ProviderBase
Membro

Descrio

Mtodo
Initialize

Obtm como entrada o nome da instncia do provedor e um NameValueCollection das


configuraes. Utilizado para definir opes e valores de propriedades para a instncia do
provedor, incluindo valores especficos de implementao e opes especificadas na
configurao da mquina ou no arquivo Web.config.

Membros da SettingsProvider
Membro

Descrio

Propriedade
ApplicationName

O nome do aplicativo que armazenado com cada perfil. O provedor de perfil usa
o nome do aplicativo para armazenar informaes de perfil separadamente para
cada aplicativo. Isso permite que vrios aplicativos ASP.NET usem a mesma fonte
de dados sem um conflito do mesmo nome de usurio ser criado em aplicativos
diferentes. Como alternativa, vrios aplicativos ASP.NET podem compartilhar uma
fonte de dados de perfil especificando o mesmo nome do aplicativo.

Mtodo
GetPropertyValues

Aceita como entrada um objeto SettingsContext e um objeto


SettingsPropertyCollection.
O SettingsContext fornece informaes sobre o usurio. Voc pode usar as

Temas no ASP.NET (Visual Studio)

35

informaes como uma chave primria para recuperar informaes de propriedade


de perfil do usurio. Use o objeto SettingsContext para obter o nome de usurio e
se o usurio autenticado ou annimo.
O SettingsPropertyCollection contm uma coleo de objetos SettingsProperty.
Cada objeto SettingsProperty fornece o nome e tipo da propriedade, bem como
informaes adicionais, como o valor padro para a propriedade e se a propriedade
somente leitura. O mtodo GetPropertyValues preenche uma
SettingsPropertyValueCollection com objetos SettingsPropertyValue baseados nos
objetos SettingsProperty fornecidos como entrada. Os valores da fonte de dados
para o usurio especificado so atribudos s propriedades PropertyValue para cada
objeto SettingsPropertyValue e toda a coleo retornada.
Chamar o mtodo tambm atualiza o valor LastActivityDate para o perfil de
usurio especificado com a data e hora atuais.
Mtodo
SetPropertyValues

Aceita como entrada um objeto SettingsContext e um objeto


SettingsPropertyValueCollection.
O SettingsContext fornece informaes sobre o usurio. Voc pode usar as
informaes como uma chave primria para recuperar informaes de propriedade
de perfil do usurio. Use o objeto SettingsContext para obter o nome de usurio e
se o usurio autenticado ou annimo.
O SettingsPropertyValueCollection contm uma coleo de objetos
SettingsPropertyValue. Cada objeto SettingsPropertyValue fornece o nome,
tipo e valor da propriedade, bem como informaes adicionais, como o valor
padro para a propriedade e se a propriedade somente leitura. O mtodo
SetPropertyValues atualiza valores de propriedade de perfil em uma fonte de
dados para o usurio especificado.
Chamar o mtodo tambm atualiza os valores LastActivityDate e
LastUpdatedDate para o perfil de usurio especificado com a data e hora atuais.

Membros da ProfileProvider
Membro

Descrio

Mtodo DeleteProfiles

Utiliza como entrada uma matriz de seqncia de caracteres de


nomes de usurio e exclui da fonte de dados todas as informaes de
perfil e valores de propriedade para os nomes especificados nos quais
o nome do aplicativo corresponda ao valor da propriedade
ApplicationName.
Se sua fonte de dados oferece suporte a transaes, recomendvel
que voc inclua todas as operaes de excluso em uma transao e
que voc reverta a transao e jogue uma exceo se qualquer
operao de excluso falhar.

Mtodo DeleteProfiles

Aceita como entrada uma coleo de objetos ProfileInfo e exclui da


fonte de dados todas as informaes de perfil e valores de
propriedades para cada perfil no qual o nome do aplicativo
corresponde ao valor da propriedade ApplicationName.
Se sua fonte de dados oferece suporte a transaes, recomendvel
que voc inclua todas as operaes de excluso em uma transao e
reverta a transao e jogue uma exceo se qualquer operao de

Temas no ASP.NET (Visual Studio)

36

excluso falhar.
Mtodo DeleteInactiveProfiles

Aceita como entrada um valor ProfileAuthenticationOption e um


objeto DateTime e exclui da fonte de dados todas as informaes de
perfil e valores de propriedade nos quais a ltima data de atividade
menor que ou igual data e hora especificadas e nos quais o nome do
aplicativo corresponda ao valor da propriedade ApplicationName. O
parmetro ProfileAuthenticationOption especifica se somente
perfis annimos, somente perfis autenticados ou todos os perfis sero
excludos.
Se sua fonte de dados oferece suporte a transaes, recomendvel
que voc inclua todas as operaes de excluso em uma transao e
reverta a transao e jogue uma exceo se qualquer operao de
excluso falhar.

Mtodo GetAllProfiles

Aceita como entrada um valor ProfileAuthenticationOption, um


inteiro que especifica o ndice da pgina, um inteiro que especifica o
tamanho da pgina e uma referncia a um inteiro que ser definido
como a contagem total de perfis. Retorna uma ProfileInfoCollection
que contm objetos ProfileInfo para todos os perfis na fonte de
dados na qual o nome do aplicativo corresponda ao valor da
propriedade ApplicationName. O parmetro
ProfileAuthenticationOption especifica se somente perfis
annimos, somente perfis autenticados ou todos os perfis sero
retornados.
Os resultados retornados pelo mtodo GetAllProfiles so restritos
pelos valores do ndice da pgina e do tamanho da pgina. O valor do
tamanho da pgina especifica o nmero mximo de objetos
ProfileInfo para retornar na ProfileInfoCollection. O valor de
ndice da pgina especifica qual pgina dos resultados retornar, onde
1 identifica a primeira pgina. O parmetro de total de registros um
parmetro externo (voc pode usar ByRef no Visual Basic) que
definido para o nmero total de perfis. Por exemplo, se o
armazenamento de dados contm 13 perfis para o aplicativo e o valor
de ndice da pgina 2 com um tamanho da pgina de 5, a
ProfileInfoCollection retornada contm do sexto ao dcimo perfil. O
valor do total de registros definido como 13 quando o mtodo
retorna.

Mtodo GetAllInactiveProfiles

Aceita como entrada um valor ProfileAuthenticationOption, um


objeto DateTime, um inteiro que especifica o ndice da pgina, um
inteiro que especifica o tamanho da pgina e uma referncia a um
inteiro que ser definido como a contagem total de perfis. Retorna
uma ProfileInfoCollection que contm objetos ProfileInfo para
todos os perfis em uma fonte de dados onde a data da ltima
atividade for menor que ou igual DateTime especificada e onde o
nome do aplicativo corresponde ao valor da propriedade
ApplicationName. O parmetro ProfileAuthenticationOption
especifica se somente perfis annimos, somente perfis autenticados
ou todos os perfis sero retornados.
Os resultados retornados pelo mtodo GetAllInactiveProfiles so
restritos pelos valores de ndice da pgina e de tamanho da pgina. O
valor do tamanho da pgina especifica o nmero mximo de objetos

Temas no ASP.NET (Visual Studio)

37

ProfileInfo para retornar na ProfileInfoCollection. O valor de


ndice da pgina especifica qual pgina dos resultados retornar, onde
1 identifica a primeira pgina. O parmetro de total de registros um
parmetro externo (voc pode usar ByRef no Visual Basic) que
definido para o nmero total de perfis. Por exemplo, se o
armazenamento de dados contm 13 perfis para o aplicativo e o valor
de ndice da pgina 2 com um tamanho da pgina de 5, a
ProfileInfoCollection retornada contm do sexto ao dcimo perfil. O
valor total de registros definido como 13 quando o mtodo retorna.
Mtodo FindProfilesByUserName Aceita como entrada um valor ProfileAuthenticationOption, uma
seqncia contendo um nome de usurio, um inteiro que especifica o
ndice da pgina, um inteiro que especifica o tamanho da pgina e
uma referncia a um inteiro que ser definido como a contagem total
de perfis. Retorna uma ProfileInfoCollection que contm objetos
ProfileInfo para todos os perfis em uma fonte de dados nos quais o
nome de usurio corresponda ao usurio especificado e nos quais o
nome do aplicativo corresponda ao valor da propriedade
ApplicationName valor da propriedade. O parmetro
ProfileAuthenticationOption especifica se somente perfis
annimos, somente perfis autenticados ou todos os perfis sero
retornados.
Se sua fonte de dados suporta recursos de pesquisa adicionais, como
caracteres curingas, voc pode fornecer capacidades de pesquisa
mais amplas para nomes de usurio.
Os resultados retornados pelo mtodo FindProfilesByUserName
so restritos pelos valores de ndice da pgina e tamanho da pgina.
O valor de tamanho da pgina especifica o nmero mximo de
objetos ProfileInfo para retornar na ProfileInfoCollection. O valor
de ndice da pgina especifica qual pgina dos resultados retornar,
onde 1 identifica a primeira pgina. O parmetro de total de registros
um parmetro externo (voc pode usar ByRef no Visual Basic) que
definido para o nmero total de perfis. Por exemplo, se o
armazenamento de dados contm 13 perfis para o aplicativo e o valor
de ndice da pgina 2 com um tamanho da pgina de 5, a
ProfileInfoCollection retornada contm do sexto ao dcimo perfil. O
valor total de registros definido como 13 quando o mtodo retorna.
Mtodo
FindInactiveProfilesByUserName

Aceita como entrada um valor ProfileAuthenticationOption, uma


seqncia contendo um nome de usurio, um objeto DateTime, um
inteiro que especifica o ndice da pgina, um inteiro que especifica o
tamanho da pgina e uma referncia a um inteiro que ser definido
como a contagem total de perfis. Retorna um ProfileInfoCollection
que contm objetos ProfileInfo para todos os perfis em uma fonte de
dados na qual o nome de usurio corresponda ao nome usurio
especificado, a data da ltima atividade seja menor que ou igual
DateTime especificada e o nome do aplicativo corresponda ao valor
da propriedade ApplicationName. O parmetro
ProfileAuthenticationOption especifica se somente perfis
annimos, somente perfis autenticados ou todos os perfis sero
retornados.
Se sua fonte de dados suporta recursos de pesquisa adicionais, como
caracteres curingas, voc pode fornecer capacidades de pesquisa

Temas no ASP.NET (Visual Studio)

38

mais amplas para nomes de usurio.


Os resultados retornados pelo mtodo
FindInactiveProfilesByUserName so restritos pelos valores de
ndice da pgina e tamanho da pgina. O valor de tamanho da pgina
especifica o nmero mximo de objetos ProfileInfo para retornar na
ProfileInfoCollection. O valor de ndice da pgina especifica qual
pgina dos resultados retornar, onde 1 identifica a primeira pgina. O
parmetro de total de registros um parmetro externo (voc pode
usar ByRef no Visual Basic) que definido para o nmero total de
perfis. Por exemplo, se o armazenamento de dados contm 13 perfis
para o aplicativo e o valor de ndice da pgina 2 com um tamanho
da pgina de 5, a ProfileInfoCollection retorna do sexto ao dcimo
perfil. O valor do total de registros definido como 13 quando o
mtodo retorna.
Mtodo
GetNumberOfInActiveProfiles

Aceita como entrada um valor ProfileAuthenticationOption e um


objeto DateTime e retorna uma contagem de todos os perfis em uma
fonte de dados nos quais a data da ltima atividade for menor que ou
igual DateTime especificada e nos quais o nome do aplicativo
corresponda ao valor da propriedade ApplicationName. O
parmetro ProfileAuthenticationOption especifica se somente
perfis annimos, somente perfis autenticados ou todos os perfis sero
contados.

ApplicationName

Como provedores de perfil armazenam informaes de perfil separadamente para


cada aplicativo, voc deve certificar-se de que o esquema de dados inclui o nome
do aplicativo e que consultas e atualizaes tambm incluem o nome do aplicativo.
Por exemplo, o seguinte comando usado para recuperar um valor da propriedade
de um banco de dados com base no nome de usurio e se o perfil annimo, e
garante que o valor ApplicationName est includo na consulta.
SELECT Property FROM PropertyTable WHERE Username = 'user1' AND IsAnonymous =
False AND ApplicationName = 'MyApplication'

Protegendo propriedades de perfil


Voc pode usar o recurso perfil do ASP.NET para armazenar e recuperar
configuraes de usurio em uma fonte de dados, como um banco de dados. Voc
especifica as propriedades e grupos que compem os perfis dos usurios no arquivo
de configurao do aplicativo. Em tempo de execuo, ASP.NET usa as informaes
de configurao para gerar dinamicamente uma classe com acessores fortemente
tipados para cada propriedade de perfil. Essa classe posteriormente exposta
usando a propriedade esttica Profile. Valores de propriedade de perfil so
armazenadas por um provedor de perfil em uma fonte de dados, em texto no
criptografado XML ou em formato binrio serializado.
Voc pode melhorar a segurana do seu aplicativo, seguindo prticas
recomendadas de codificao e de configurao. Tambm importante que voc
mantenha continuamente seu servidor da Web para o aplicativo atualizado com as
ltimas atualizaes de segurana para Microsoft Windows e para Servios de
Informaes da Internet da Microsoft (IIS), bem como com qualquer atualizao
para Microsoft SQL Server ou outras fontes de dados de perfis.

Temas no ASP.NET (Visual Studio)

39

Para maiores informaes sobre prticas recomendadas para digitar cdigo seguro
e manter segurana em aplicativos, consulte o livro Writing Secure Code por
Michael Howard e David LeBlanc e siga as sugestes fornecidas nos Padres e
Prticas Microsoft (http://www.microsoft.com/resources/practices/default.mspx).
Protegendo Configuraes de Perfil

O recurso perfil do ASP.NET est ativado por padro. Embora as configuraes


padro estejam definidas com os valores mais seguros, recomendvel que voc
desative o recurso perfil de usurio se isso no necessrio para seu aplicativo.
Para obter informaes sobre configuraes de perfil e seus valores padro,
consulte Perfil elemento (esquema configuraes ASP.NET). Identificao annima,
que pode ser definida para propriedades de perfil, est desativada por padro. Para
obter mais informaes sobre configuraes de identificao annima e seus
valores padro, consulte anonymousIdentification elemento (esquema
configuraes ASP.NET).
Protegendo Valores de Configurao
Ao armazenar informaes confidenciais em um arquivo de configurao,
recomendvel que voc criptografe os valores confidenciais usando configurao
protegida. Informaes que so especialmente confidenciais incluem as chaves de
criptografia armazenadas no elemento de configurao machineKey e seqncias
de conexo para uma fonte de dados armazenadas no elemento de configurao
connectionStrings. Para obter mais informaes, consulte Criptografar informaes
de configurao usando configurao protegida.
Protegendo Conexes para uma Fonte de Dados de Perfis

Seqncias de Conexo
Conforme observado, importante proteger informaes confidenciais
armazenadas em uma seqncia de conexo que usada para se comunicar com
um computador executando o SQL Server ou outra fonte de dados. Para manter a
conexo com seu banco de dados segura, recomendvel que voc criptografe
informaes de seqncia de conexo na configurao usando configurao
protegida. Para obter mais informaes, consulte Criptografar informaes de
configurao usando configurao protegida.
Conectando-se a SQL Server Usando Segurana Integrada
Recomendamos que voc use segurana integrada para se conectar a
computadores com SQL Server, para impedir a seqncia de conexo de ser
comprometida e qualquer informao de identificao e senha de usurio de ser
exposta. Quando voc especifica uma conexo que usa segurana integrada para
conectar-se a um computador que executa o SQL Server, o provedor de perfil
reverte para a identidade do processo. recomendvel que voc garanta que a
identidade do processo que est executando o ASP.NET (por exemplo, o pool de
aplicativos) seja a conta de processo padro ou uma conta de usurio restrito. Para
obter mais informaes, consulte Representao ASP.NET.
Permisses de Banco de Dados SQL Server
O banco de dados do SQL Server que usado por padro para armazenar
informaes de perfil inclui atribuies de banco de dados e modos de exibio que
permitem que voc restrinja o acesso de usurio para somente os privilgios
necessrios para seu aplicativo. recomendvel que voc atribua os mnimos
privilgios necessrios identificao de usurio conectada ao banco de dados de
perfis do SQL Server. Para obter mais informaes, consulte Funes e modos de
exibio no banco de dados Servios de aplicativos para SQL Server.

Temas no ASP.NET (Visual Studio)

40

Protegendo Dados Confidenciais na Fonte de Dados de Perfis

O provedor de perfil de usurio padro no criptografa os valores armazenados na


fonte de dados de perfis. recomendvel que voc criptografe quaisquer
informaes confidenciais antes de armazen-las na fonte de dados de perfis, para
evitar expor as informaes confidenciais se a fonte de dados for comprometida.
Voc pode criptografar dados confidenciais antes armazenar o valor na propriedade
perfil, ou voc pode estender a classe ProfileBase ou a classe ProfileProvider para
fornecer recursos de criptografia.
Impedindo Dados de Perfil Annimos de serem Compartilhados Entre Aplicativos
Se identificao annima estiver ativada para um aplicativo e para propriedades de
perfil usadas por esse aplicativo, h um risco de que os valores de propriedade de
perfil annimos possam ser expostos a outro aplicativo. Isso pode ocorrer quando o
atributo cookiePath de identificao annima definido para um caminho que
inclui vrios aplicativos e quando existem vrios aplicativos em um domnio
comum.
Quando voc usa identificao annima com perfis de usurio e planeja separar
usurios annimos entre aplicativos, recomendvel que voc especifique chaves
de criptografia separadas no elemento machineKey para cada aplicativo, defina o
escopo do cookie de identificao annima para um aplicativo especfico, e defina a
propriedade ApplicationName com um valor diferente para cada aplicativo.
Protegendo Pginas da Web que Usam Perfis

Pginas de aplicativo que funcionam com dados confidenciais armazenados em


propriedades de perfil devem ser protegidas usando mecanismos de segurana Web
padro. Isso inclui o uso de Secure Sockets Layer (SSL) e exigir que os usurios
tenham efetuado logon para poderem executar operaes sigilosas como
atualizao de informaes do usurio ou excluso de usurios. Alm disso, evite
armazenar dados confidenciais em cookies.
Protegendo Contra Ataques de Negao de Servio

Mtodos da classe ProfileManager que executem atualizaes ou operaes de


pesquisa de execuo demorada podem reduzir a resposta da fonte de dados de
perfis se os mtodos so chamados simultaneamente por um nmero grande de
clientes. Para reduzir a exposio do aplicativo a um ataque de negao de servio,
permita que somente usurios administrativos acessem pginas do ASP.NET que
executam atualizaes banco de dados ou pesquisas associadas a perfis.
Mensagens de Erro e Eventos

Excees
Para impedir que informaes confidenciais sejam expostas, configure seu
aplicativo para no exibir mensagens de erro detalhadas ou para exibir mensagens
de erro detalhadas somente quando o aplicativo estiver executando localmente no
servidor da Web. Para obter mais informaes, consulte o elemento de
configurao customErrors.
Log de Eventos
O recurso perfil do ASP.NET registra informaes para certas condies de erro
usando monitoramento de integridade ASP.NET, que por padro armazena
informaes no log de eventos. Se o computador servidor estiver executando
Windows Server 2003, voc pode melhorar a segurana do seu aplicativo
protegendo o log de eventos e configurando parmetros do log de eventos com
relao a tamanho, reteno, e assim por diante para impedir um ataque indireta
de negao de servio contra o log de eventos.

Temas no ASP.NET (Visual Studio)

41

Informaes de Rastreamento
Seu servidor da Web pode ser configurado para rastreamento quando certas aes
ocorrem com relao ao recurso perfil e para armazenamento das informaes em
um arquivo de log de rastreamento. Como informaes confidenciais como nomes
de usurio podem ser armazenadas no arquivo de log de rastreamento,
recomendvel que voc permita que somente Administradores ativem
rastreamento, configurem a localidade do arquivo de log de rastreamento, e
acessem o arquivo de log de rastreamento.
Provedores de Perfil Personalizados

Ao criar um provedor de perfil personalizado para acesso de banco de dados,


certifique-se de seguir as prticas recomendadas de segurana para impedir
ataques, como ataques de injeo SQL. Ao fazer uso de um provedor de perfil
personalizado, certifique-se que o provedor foi revisado para prticas
recomendadas de segurana.

Creating Web Site Navigation


You can add site navigation to your Web sites by defining a site map (typically an
XML file). You can then add navigation controls to your ASP.NET pages that can
automatically create a menu or tree view of links to pages, or that can display a
"breadcrumb" showing the current page hierarchy.
Referncia

SiteMapDataSource
Provides a data source control that Web server controls and other controls
can use to bind to hierarchical site map data.
SiteMap
Provides an in-memory representation of a site's navigation structure, which
is provided by one or more site map providers. This class cannot be
inherited.
SiteMapNode
Represents a node in the hierarchical site map structure such as that
described by the SiteMap class and classes that implement the abstract
SiteMapProvider class.
SiteMapNodeCollection
Provides a strongly typed collection for SiteMapNode objects, and
implements the IHierarchicalEnumerable interface to support navigating
through them.
SiteMapNodeItem
Used by the SiteMapPath control to functionally represent a SiteMapNode.
SiteMapPath
Displays a set of text or image hyperlinks that enable users to more easily
navigate a Web site, while taking up a minimal amount of page space.
TreeView
When bound to a site map provider control, displays hierarchical site map
data in a tree structure.

Temas no ASP.NET (Visual Studio)

42

Menu
When bound to a site map provider control, displays hierarchical site map
data in a menu structure.

Temas no ASP.NET (Visual Studio)

43

Guia de Introduo Criando navegao


em sites da Web
Esta seo descreve recursos do ASP.NET para incorporar navegao centralizada
ao seu aplicativo da Web.

Viso geral sobre navegao em sites do ASP.NET


Voc pode usar recursos de navegao em site do ASP.NET para fornecer uma
maneira consistente para que os usurios possam navegar em seu site. medida
que seu site crescer e que voc modificar pginas no site, gerenciar todos os links
pode se tornar difcil. A navegao em site do ASP.NET possibilita o
armazenamento de links de todas as suas pginas em um local central, e processa
esses links em listas ou menus de navegao em cada pgina, incluindo um
controle especfico de servidor Web.
Para criar uma soluo de navegao consistente e facilmente gerencivel para seu
site, voc pode usar a navegao em site do ASP.NET. A navegao em site do
ASP.NET oferece os seguintes recursos:

Mapas de site Voc pode usar um mapa de site para descrever a estrutura
lgica do seu site. Em seguida, voc pode gerenciar a navegao de pgina,
modificando o mapa do site medida que pginas vo sendo adicionadas ou
removidas, em vez de modificar hyperlinks em todas as suas pginas da Web.

Controles ASP.NET Voc pode usar controles ASP.NET para exibir menus
de navegao em suas pginas da Web. Os menus de navegao so baseados
no mapa do site.

Controle programtico Voc pode trabalhar com navegao em site do


ASP.NET no cdigo para criar controles de navegao personalizados ou para
modificar a localidade de informaes que so exibidas em um menu de
navegao.

Regras de acesso Voc pode configurar regras de acesso que exibem ou


ocultam um link em seu menu de navegao.

Provedores de mapa de site personalizados Voc pode criar provedores


de mapa de site personalizados que permitam que voc trabalhe com seu prprio
back-end de mapa de site (por exemplo, um banco de dados onde voc
armazena informaes de link) e conecte seu provedor ao sistema de navegao
em site do ASP.NET.

Como funciona a navegao em sites

Com a navegao em site do ASP.NET, voc descreve o layout do seu site como
uma hierarquia. Por exemplo, uma loja de informtica fictcia on-line pode ter um
site composto de oito pginas, que so apresentadas da maneira a seguir.
Home Products Hardware Software Services Training Consulting Support

Para usar navegao em site, comece criando um mapa do site ou uma


representao do seu site. Voc pode descrever a hierarquia de seu site em um
arquivo XML, mas outras opes tambm esto disponveis. Para obter mais
informaes e um exemplo, consulte Mapas de sites do ASP.NET.

Temas no ASP.NET (Visual Studio)

44

Aps voc criar um mapa do site, voc pode exibir a estrutura de navegao em
uma pgina ASP.NET, usando um controle de navegao em site. Para obter um
exemplo, consulte COMO: Adicionar navegao em sites simples.
Processo de carga de mapa de site
O provedor padro de mapa de site ASP.NET carrega dados de mapa de site como
um documento XML e armazena-os em cache como dados estticos quando o
aplicativo iniciado. Um arquivo de mapa de site excessivamente grande pode
utilizar uma grande quantidade de memria e energia da CPU no tempo de
carregamento. Os recursos de navegao em site do ASP.NET dependem das
notificaes de arquivo para manter os dados de navegao atualizados. Quando
um arquivo de mapa de site for alterado, o ASP.NET recarrega os dados do mapa
de site. Certifique-se de configurar qualquer software de deteco de vrus para que
ele no modifique os arquivos de mapa de site. Para obter mais informaes,
consulte Tornando navegao em sites do ASP.NET seguro.
Controles de navegao em site

Criar um mapa de site que reflita a estrutura do seu site uma parte do sistema de
navegao em site do ASP.NET. A outra parte deve exibir a estrutura de navegao
de suas pginas ASP.NET da Web para que os usurios possam navegar facilmente
pelo seu site. Voc poder criar facilmente a navegao em suas pginas usando os
seguintes controles de navegao em site do ASP.NET:

SiteMapPath Este controle exibe um caminho de navegao que


tambm conhecido como breadcrumb ou eyebrow que mostra ao usurio a
localidade da pgina atual e exibe links como um caminho para voltar pgina
inicial. O controle oferece muitas opes para personalizar a aparncia dos links.

TreeView Este controle exibe uma estrutura de rvore, ou menu, que os


usurios podem atravessar para chegar a pginas diferentes em seu site. Um n
que contm ns filho pode ser expandido ou recolhido ao se clicar nele.

Menu Este controle exibe um menu expansvel que os usurios podem


atravessar para chegar a pginas diferentes em seu site. Um n que contm ns
filho expandido quando o cursor paira sobre o menu.

Se voc adicionar um controle SiteMapPath para a pgina Training do


armazenamento do computador on-line no exemplo anterior, o controle
SiteMapPath exibir algo como a seguir, com Home e Services processados como
hiperlinks:
Home > Services > Training
Voc pode usar o controle SiteMapPath para criar navegao em site sem cdigo e
sem ligao de dados explcita. O controle pode ler e processar as informaes do
mapa de site automaticamente. Entretanto, se necessrio, voc tambm pode
personalizar o controle SiteMapPath com cdigo. Para obter um exemplo, consulte
Como Modificar, por Programao, Ns de um Mapa de Site na Memria.
O controle SiteMapPath permite aos usurios retornar da pgina atual para
pginas superiores na hierarquia do site. Entretanto, o controle SiteMapPath no
permite a voc avanar da pgina atual para outra pgina inferior na hierarquia. O
controle SiteMapPath til em grupo de notcias ou aplicativos de quadro de
mensagens quando usurios desejam ver o caminho para o artigo que eles esto
pesquisando.
Com os controles TreeView ou Menu, os usurios podem abrir ns e navegar
diretamente para uma pgina especfica. Esses controles no lem diretamente o
mapa do site, como o controle SiteMapPath faz. Em vez disso, voc adiciona um

Temas no ASP.NET (Visual Studio)

45

controle SiteMapDataSource a uma pgina que possa ler o mapa do site. Voc
ento liga o controle TreeView ou Menu no controle SiteMapDataSource, o que
resulta no mapa do site sendo processado na pgina. O controle TreeView exibir
algo como o seguinte:
- Home
- Services
+ Training
Observao
Uma maneira fcil de exibir os controles SiteMapPath, TreeView ou Menu em todas as pginas do seu
site criar uma pgina mestra e adicionar os controles a essa pgina. Para obter mais informaes,
consulte Viso Geral de Pginas Mestras do ASP.NET.
API de navegao em site

Voc pode usar controles de navegao para adicionar navegao em site s suas
pginas com pouco ou nenhum cdigo, mas voc tambm pode trabalhar com
navegao em site atravs de programao. Quando seu aplicativo da Web
executado, o ASP.NET expe um objeto SiteMap que reflete a estrutura do mapa de
site. Todos os membros do objeto SiteMap so estticos. O objeto SiteMap, em
retorno, expe uma coleo de objetos SiteMapNode que contm propriedades para
cada n no mapa. (Quando voc usa o controle SiteMapPath, o controle funciona
com os objetos SiteMap e SiteMapNode para processar os links apropriados
automaticamente.)
Voc pode usar os objetos SiteMap, SiteMapNode e SiteMapProvider em seu
prprio cdigo para percorrer a estrutura de mapa de site ou criar um controle
personalizado para exibir dados do mapa de site. Voc no pode gravar no mapa do
site, mas voc pode alterar ns do mapa de site na instncia do objeto. Para obter
mais informaes, consulte Como Modificar, por Programao, Ns de um Mapa de
Site na Memria ou Como Enumerar, por Programao, Ns de um Mapa de Site.
Relacionamentos entre componentes de navegao em site

A ilustrao a seguir mostra as relaes entre os componentes de navegao em


site do ASP.NET.

Temas no ASP.NET (Visual Studio)

46

Mapas de sites do ASP.NET


Para usar navegao de site do ASP.NET, voc deve descrever a estrutura do site
para que a API de navegao de site e os controles de navegao do site possam
expor a estrutura do site corretamente. Por padro, o sistema de navegao do site
usa um arquivo XML que contm a hierarquia do site. Entretanto, voc tambm
pode configurar o sistema de navegao do site para usar fontes de dados
alternativas. Para obter mais informaes, consulte Provedores de Navegao de
Site ASP.NET Site.
O Arquivo Web.sitemap

A maneira mais simples de criar um mapa do site consiste em criar um arquivo XML
denominado Web.sitemap que organiza as pginas no site hierarquicamente. Este
mapa do site capturado automaticamente pelo provedor de mapa de site padro
do ASP.NET.
O arquivo Web.sitemap deve ser localizado no diretrio raiz do aplicativo, embora
ele possa referenciar outros provedores de mapa do site, ou outros arquivos de
mapa do site em outros diretrios, contanto que esses arquivos estejam no mesmo
aplicativo. Para obter mais informaes, consulte Como Configurar Vrios Mapas de
Site e Provedores de Mapas de Site.

Temas no ASP.NET (Visual Studio)

47

Observao de segurana
A implementao de um provedor de mapa do site personalizado que armazene dados de mapa do site em
um arquivo com uma extenso de nome de arquivo diferente de .sitemap um risco de segurana em
potencial. Por padro, o ASP.NET configurado para proteger arquivos com extenses de nome de
arquivo conhecidas como .sitemap de serem descarregados por um cliente. Para ajudar a proteger
seus dados, coloque quaisquer arquivos de dados de mapa do site personalizados que tenham uma
extenso de nome de arquivo diferente de .sitemap na pasta App_Data. Para obter mais informaes,
consulte Tornando navegao em sites do ASP.NET seguro.
O exemplo de cdigo a seguir mostra como o mapa do site pode procurar por um
site simples que remeta a trs nveis de profundidade. O atributo url pode comear
com o atalho "~/" que indica a raiz do aplicativo Para obter mais informaes,
consulte Caminhos de Site Web do ASP.NET.
<siteMap> <siteMapNode title="Home" description="Home" url="~/default.aspx">
<siteMapNode title="Products" description="Our products"
url="~/Products.aspx"> <siteMapNode title="Hardware" description="Hardware
choices" url="~/Hardware.aspx" /> <siteMapNode title="Software"
description="Software choices" url="~/Software.aspx" /> </siteMapNode>
<siteMapNode title="Services" description="Services we offer"
url="~/Services.aspx"> <siteMapNode title="Training" description="Training
classes" url="~/Training.aspx" /> <siteMapNode title="Consulting"
description="Consulting services" url="~/Consulting.aspx" /> <siteMapNode
title="Support" description="Supports plans" url="~/Support.aspx" />
</siteMapNode> </siteMapNode> </siteMap>

No arquivo Web.sitemap, adicione um elemento siteMapNode para cada pgina


em seu site da Web. Em seguida voc pode criar a hierarquia aninhando os
elementos siteMapNode. No exemplo anterior, as pginas para Hardware e
Software so elementos filho do elemento siteMapNode Products. O atributo title
define o texto que geralmente usado como texto de link, e o atributo description
age tanto como como documentao quanto como uma dica de ferramenta no
controle SiteMapPath.
Observao
Em um mapa do site, voc pode referenciar URLs que esto fora do seu aplicativo da Web. O acesso a
um URL fora do aplicativo no pode ser testado pelo ASP.NET. Portanto. se voc ativar aparamento de
segurana (security trimming), o n de mapa do site no ser visvel a menos que voc defina o atributo
roles como "*", o que permite que todos os clientes visualizem o n de mapa do site sem primeiro testar o
acesso para o URL Para obter mais informaes, consulte Trimming segurana ASP.NET Site-Map.
Mapas do Site Vlidos

Um arquivo de mapa do site vlido contm somente um elemento siteMapNode


que est localizado imediatamente abaixo do elemento siteMap. Mas o elemento
siteMapNode do primeiro nvel pode conter qualquer nmero de elementos
siteMapNode filho. Alm disso, um arquivo de mapa do site vlido no deve ter
URLs duplicados, embora os atributos url possam estar vazios. Provedores que no
seja o provedor de mapa do site padro para ASP.NET podem no ter esta
restrio.
Configurando Vrios Mapas do Site

Temas no ASP.NET (Visual Studio)

48

Voc pode usar mais de um provedor ou arquivo de mapa do site para descrever a
estrutura de navegao de um site da Web inteiro. Por exemplo, o arquivo
Web.sitemap raiz pode ser vinculado a um arquivo de mapa do site filho
referenciando o arquivo de mapa do site filho em um elemento siteMapNode
usando o cdigo a seguir.
<siteMapNode siteMapFile="MySiteMap.sitemap"/>

Para obter mais informaes, consulte Como Configurar Vrios Mapas de Site e
Provedores de Mapas de Site.
Localizing Mapas do Site

Voc pode localizar as seguintes propriedades em um mapa do site.

Title

Description

Propriedades personalizadas que esto contidas na coleo Attributes

Para localizar a propriedade Url, ou para definir diferentes estruturas de navegao


com base na localidade do usurio, voc precisar definir arquivos de mapa do sites
diferentes para cada localidade e programaticamente alternar para o Provider
apropriado em tempo de execuo. Para obter mais informaes, consulte Como
Modificar, por Programao, Ns de um Mapa de Site na Memria. Para obter mais
informaes sobre localizando mapas do site, consulte Como Localizar Dados de um
Mapa de Site.

Passo-a-passo: Adicionando navegao do site a um web site


Em qualquer site que contenha vrias pginas, pode ser difcil construir um sistema
de navegao que permite aos usurios navegar livremente entre pginas,
especialmente medida que voc altera o site. A navegao em sites do ASP.NET
permite que voc crie um mapa do site centralizado das pginas.
Este passo-a-passo mostra informaes sobre como configurar um mapa do site e
como usar controles que dependam do mapa do site para adicionar navegao s
pginas no web site.
Durante este passo-a-passo, voc aprender a fazer o seguinte:

Criar um web site que tenha pginas exemplo e um arquivo site-map que
descreve o layout de pginas.

Usar o controle TreeView como um menu de navegao permitindo aos


usurios saltar para qualquer pgina no seu site.

Usar o controle SiteMapPath para adicionar um caminho de navegao,


tambm conhecido como um breadcrumb, permitindo que um usurio exiba e
retorne ao topo da hierarquia do site da pgina atual.

Usar o controle Menu para adicionar um menu de navegao permitindo aos


usurios exibir um nvel do n por vez. Pausar o ponteiro do mouse sobre um n
que possui ns filhos gera um submenu dos ns filhos.

Usar navegao do site e controles em um pgina mestra tal que voc defina
a navegao do site somente uma vez.
Pr-requisitos

Para concluir este explicao passo a passo, ser necessrio o seguinte:

Temas no ASP.NET (Visual Studio)

49

Ferramenta de desenvolvimento da Web, Microsoft Visual Web Developer.

O .NET Framework.

Este passo-a-passo assume que voc sabe como usar o Visual Web Developer.
Criando um site que possui pginas de exemplo e um mapa do site
Se voc j criou um site no Visual Web Developer, tendo completado o Passo-apasso: Criando uma pgina da Web bsica no Visual Web Developer, voc pode
usar esse web site e ir para a prxima seo. Caso contrrio, crie um novo web site
e pgina, seguindo estas etapas.
Criando um web site do sistema de arquivos
Para criar um web site do sistema de arquivos
1.
2.

Abra o Visual Web Developer.


No menu File, clique em New Web Site (ou no menu File, clique em New,
e depois em Web Site).
A caixa de dilogo New Web Site aparece.

3.

Em Visual Studio installed templates, clique em ASP.NET Web Site.

4.

Na caixa Locationmais esquerda, clique em File System, e depois, na


caixa Location mais direita, insira o nome da pasta onde voc deseja
manter as pginas do web site
Por exemplo, digite o nome de pasta C:\WebSites\SiteNavigation.

5.

Na caixa Language, clique na linguagem de programao que voc preferir


trabalhar.
A linguagem de programao que voc escolher ser o padro para o web
site, mas voc pode definir uma linguagem de programao para cada pgina
individualmente.

6.

Clique em OK.
O Visual Web Developer cria a pasta e uma nova pgina chamado
Default.aspx.

Criando um mapa do site


Para usar a navegao do site, voc precisa descrever como as pginas no seu site
so dispostas. O mtodo padro para isto consiste em criar um arquivo .xml que
contm a hierarquia do site, incluindo os ttulos das pgina e URLs.
A estrutura do arquivo .xml reflete a estrutura do seu site. Cada pgina
representada como um elemento siteMapNode no mapa do site. O n da parte
mais superior representa a home page, e os ns filhos representam pginas que
so mais profundas no site.
Para criar um mapa do site
1.
2.

Na Solution Explorer, clique com o boto direito do mouse no nome do site, e


clique Add New Item.
Na caixa de dilogo Add New Item <Path> :
1.

Em Visual Studio installed templates, clique em Site Map.

2.

Na caixa Name, certifique-se que o nome seja Web.sitemap.


Observao

Temas no ASP.NET (Visual Studio)

50

O arquivo deve ser denominado Web.sitemap e deve aparecer na raiz do site.


3.
3.

Clique em Add.

Copie o seguinte contedo XML para o arquivo Web.sitemap, substituindo o


contedo padro.
<siteMap> <siteMapNode title="Home" description="Home" url="~/home.aspx"
> <siteMapNode title="Products" description="Our products"
url="~/Products.aspx"> <siteMapNode title="Hardware"
description="Hardware we offer" url="~/Hardware.aspx" /> <siteMapNode
title="Software" description="Software for sale" url="~/Software.aspx"
/> </siteMapNode> <siteMapNode title="Services" description="Services we
offer" url="~/Services.aspx"> <siteMapNode title="Training"
description="Training" url="~/Training.aspx" /> <siteMapNode
title="Consulting" description="Consulting" url="~/Consulting.aspx" />
<siteMapNode title="Support" description="Support" url="~/Support.aspx"
/> </siteMapNode> </siteMapNode> </siteMap>

O arquivo Web.sitemap contm um conjunto de elementos siteMapNode que


so aninhados em trs nveis. A estrutura de cada elemento a mesma. A
nica diferena entre eles a localidade dentro da hierarquia XML.
O URL das pginas que so definidas no arquivo de exemplo .xml no
qualificado. Isso significa que todas as pginas so tratadas como tendo URLs
que so relativos raiz do aplicativo. Entretanto, voc pode especificar
qualquer URL para uma pgina especfica a estrutura lgica que voc define
no mapa do site no tem que corresponder ao layout fsico das pginas nas
pastas.
4.

Salve o arquivo e feche-o.

Criando pginas para navegar


Nesta seo, voc ir criar apenas algumas das pginas que so descritas no mapa
do site que voc definiu na a seo anterior. (O mapa do site mais completo tal
que voc possa exibir uma hierarquia completa ao testar as pginas no passo-apasso.)
Para criar pginas para navegar
1.
2.

3.
4.

Na Solution Explorer, clique com o boto direito do mouse no nome do web


site, e clique Add New Item.
Na caixa de dilogo Add New Item <Path> :
1.

Em Visual Studio installed templates, clique em Web Form.

2.

Na caixa Name, digite Home.aspx e clique em Add.

Alterne para modo Design.


Na pgina Home.aspx, digite Home e em seguida, formate-o como Heading
1.
Repita este procedimento e crie quatro pginas adicionais chamadas
Products.aspx, Hardware.aspx, Software.aspx e Training.aspx. Use o nome da
pgina (por exemplo, Products) como o ttulo para reconhecer cada pgina
quando ela exibida no navegador.

Temas no ASP.NET (Visual Studio)

51

No importante quais pginas voc, especificamente, cria. As pginas que


esto listadas neste procedimento so sugestes que permitem que voc veja
a hierarquia do site aninhada em trs nveis.
Criando um menu de navegao usando o Controle TreeView
Agora que voc tem um mapa do site e algumas pginas, voc pode adicionar
navegao ao seu site. Voc usar o controle TreeView para atuar como um menu
de navegao recolhvel.

Para adicionar um menu de navegao Tree-Style


1.
2.

Abra a pgina Home.aspx.


A partir do grupo Data, em Toolbox, arraste um controle
SiteMapDataSource para a pgina.
Em sua configurao padro, o controle SiteMapDataSource recupera as
informaes do arquivo Web.sitemap que voc criou, anteriormente, em
"Criando um Mapa do Site", neste passo-a-passo, para que voc no tenha
que especificar quaisquer informaes adicionais para o controle.

3.

A partir do grupo Navigation, em Toolbox, arraste um controle TreeView


para a pgina.

4.

No menu TreeView Tasks, na caixa Choose Data Source, clique em


SiteMapDataSource1.

5.

Salve a pgina.

Testando o menu de navegao Tree Style


Agora voc pode executar um teste provisrio do sistema de navegao.
Para testar o menu de navegao
1.

Pressione CTRL+F5 para executar a pgina Home.aspx.


A rvore mostra dois nveis de ns.

2.
o

Clique em Products para exibir a pgina Products.


Se voc no criou uma pgina Products.aspx, clique no link de uma
pgina que voc criou.

No estado atual do web site, o menu de navegao aparece somente na pgina


Home. Voc pode adicionar os mesmos controles SiteMapDataSource e
TreeView para cada pgina no aplicativo para exibir um menu de navegao em
cada pgina. Entretanto, posteriormente, neste passo-a-passo, voc ver como
colocar o menu de navegao em um pgina mestra tal que o menu de navegao
aparea automaticamente em cada pgina.
Exibindo o Histrico de Navegao usando o Controle SiteMapPath
Alm de criar um menu de navegao usando o controle TreeView, voc pode
adicionar navegao em cada pgina que exibe onde a pgina est na hierarquia
atual. Esse tipo de controle de navegao tambm conhecido como um
breadcrumb. O ASP.NET fornece o controle SiteMapPath que pode implementar
automaticamente a navegao da pgina.
Para exibir o histrico da navegao
1.

Abra a pgina Products.aspx e alterne para modo Design.

Temas no ASP.NET (Visual Studio)

52

2.

A partir do grupo Navigation, em Toolbox, arraste um controle


SiteMapPath para a pgina, posicione o cursor na frente do controle
SiteMapPath e pressione ENTER para criar uma nova linha.
O controle SiteMapPath exibe a posio da pgina atual na hierarquia da
pgina. Por padro, o controle SiteMapPath representa a hierarquia em que
criado o arquivo Web.sitemap. Por exemplo, quando voc exibe a pgina
Products.aspx, o controle SiteMapPath exibe o seguinte caminho:
Home > Products

3.

Repita este procedimento para as outras pginas que voc tenha criado
neste passo-a-passo, exceto a pgina Home.
Mesmo que voc no coloque um controle SiteMapPath em cada pgina,
para testes necessrio um controle em uma pgina em cada nvel da
hierarquia do site (por exemplo, nas pginas Products.aspx e Hardware.aspx).

Testando o histrico da navegao


Voc pode testar a navegao da pgina, exibindo pginas que esto no segundo e
terceiro nveis da hierarquia.
Para testar a navegao da pgina
1.

Abra a pgina Home.aspx e pressione CTRL+F5 para executar a pgina.

2.

Use o controle TreeView para mover para a pgina Products.


No local da pgina onde voc colocou o controle SiteMapPath, voc ver um
caminho que semelhante ao seguinte:
Home > Products

3.

Clique em Home para retornar para a pgina Home.

4.

Use o controle TreeView para mover para a pgina Hardware.


Neste momento voc ver um caminho que semelhante ao seguinte:
Home > Hardware > Products

Todos os nomes de pgina que so exibidos pelo controle SiteMapPath so links,


exceto o ltimo, que representa a pgina atual. Voc pode tornar o n atual um
link, definindo a propriedade RenderCurrentNodeAsLink do controle
SiteMapPath como true.
O controle SiteMapPath permite que os usurios voltem ao topo da hierarquia do
site, mas ele no permite que eles saltem para uma pgina que no esteja na
hierarquia do caminho atual.
Criando um menu de navegao usando o menu Control
Alm de criar um menu de navegao usando o controle TreeView, voc pode usar
o controle Menu para exibir um menu de navegao expansvel que permite aos
usurios exibir um nvel de n por vez. Pausar o ponteiro do mouse sobre um n
que possui ns filhos gera um submenu de os ns filhos.
Para adicionar um menu de navegao menu-style
1.

Abra a pgina Products.aspx e alterne para modo Design.

2.

A partir do grupo Navigation na caixa de ferramentas, arraste um controle


Menu para a pgina.

3.

No menu Menu Tasks, na caixa Choose Data Source, clique em


NewDataSource.

Temas no ASP.NET (Visual Studio)

53

4.
5.

No wizard Configure Data Source <Datasourcename>, clique em Site


Map, e depois em OK.
Salve a pgina.

Testando o menu de navegao menu-style


Agora voc pode executar um teste provisrio do seu sistema de navegao.
Para testar o menu de navegao
1.

FecheMenu Tasks.

2.

Abra o Home.aspx.

3.

Pressione CTRL+F5 para executar a pgina Home.aspx.


A rvore mostra dois nveis de ns.

4.

Clique em Products para exibir a pgina Products.

Se voc no criou uma pgina Products.aspx, clique no link de uma


pgina que voc criou.

5.

No menu de navegao, posicione o ponteiro do mouse no link Home para


expandir o menu.

No estado atual do site, o menu de navegao aparece somente na pgina Home.


Voc pode adicionar os mesmos controles SiteMapDataSource e Menu para cada
pgina no aplicativo para exibir um menu de navegao em cada pgina. No
entanto, na prxima seo deste passo-a-passo, voc ver como colocar o menu de
navegao em um pgina mestra para que ele aparea automaticamente em cada
pgina.
Combinando Navegao do Site com Pginas Mestras
Nas pginas que voc criou, at este ponto neste passo-a-passo, voc adicionou
controles de navegao do site individualmente para cada pgina. Fazer isso no
especialmente complexo, porque voc no precisa configurar os controles de forma
diferente para cada pgina. Entretanto, isto pode adicionar custos de manuteno
ao seu site. Por exemplo, para alterar a localidade do controle SiteMapPath para
as pginas do seu site, voc deveria alterar cada pgina individualmente.
Usando controles de navegao do site em combinao com pginas mestras, voc
pode criar um layout que contm os controles de navegao em uma localidade.
Voc pode exibir pginas como contedo dentro da pgina mestra.
Para criar controles de navegao para a pgina mestra
1.
2.

3.

Na Solution Explorer, clique com o boto direito do mouse no nome do web


site, e clique Add New Item.
Na caixa de dilogo Add New Item <Path> :
1.

Em Visual Studio installed templates, clique em Master Page.

2.

Na caixa Name, digite Navigation.master, e clique em Add.

Alterne para modo Design.


O pgina mestra aparece com um controle padro ContentPlaceHolder.

No procedimento a seguir, voc criar um pgina mestra com um layout simples


para controles de navegao. Em um aplicativo real, voc usaria, provavelmente,
formataes mais sofisticadas, mas as tcnicas para usar controles de navegao
em um pgina mestra sero semelhantes.

Temas no ASP.NET (Visual Studio)

54

Para adicionar controles de navegao pgina mestra


1.

Clique no barra de ttulo para o controle ContentPlaceHolder, pressione a


seta esquerda, e em seguida, pressione a barra de espaos.
Isso insere uma linha vazia na frente do controle ContentPlaceHolder.

2.

A partir do grupo Data , em Toolbox, arraste um controle


SiteMapDataSource para a pgina mestra e posicione-o cima do controle
ContentPlaceHolder.
Observao
No posicione o controle SiteMapDataSource no controle ContentPlaceHolder.

3.

Por padro, o controle SiteMapDataSource usar o arquivo Web.sitemap


que voc criou, anteriormente, no passo-a-passo "Criando um Mapa do Site".

4.

Clique no controle SiteMapDataSource, pressione a seta para a direita, e


em seguida, pressione a barra de espaos.
Isso insere uma linha vazia sob o controle SiteMapDataSource.

5.

No menu Layout, clique em Insert Table e insira uma tabela que possui
uma linha, duas colunas e largura de 100%.

6.

A partir do grupo Navigation, em Toolbox, arraste um controle TreeView


para a clula esquerda da tabela.

7.

No menu TreeView Tasks, na caixa Choose Data Source, clique em


SiteMapDataSource1.

8.

A partir do grupo Navigation, em Toolbox, arraste um controle


SiteMapPath para a clula direita da tabela.

9.

Na clula direita, clique na rea em branco e pressione SHIFT+ENTER para


criar uma nova linha.

10. Arraste o controle ContentPlaceholder para a clula direita da tabela e


posicione-o sob o controle SiteMapPath .
Quando voc estiver usando um pgina mestra, voc cria as pginas no seu site
como pginas de contedo. As pginas de contedo usam controles Content para
definir o texto e os controles que so exibidos no controle ContentPlaceholder da
pgina mestra. Portanto, voc ter de recriar as pginas Home, Products, e
Hardware como pginas de contedo.
Para criar pginas de contedo para o site
1.

Na Solution Explorer, clique com o boto direito do mouse na pgina


Home.aspx, clique em Delete e depois em OK.

2.

Repita a etapa 1 para pginas Products.aspx, Software.aspx, Training.aspx,


Hardware.aspx e quaisquer outras pginas voc tiver criado.
Voc recriar as pginas como pginas de contedo que usam um pgina
mestra.

3.
4.

Na Solution Explorer, clique com o boto direito do mouse no nome do site, e


clique em Add New Item.
Na caixa de dilogo Add New Item:
1.

Em Visual Studio installed templates, clique em Web Form.

Temas no ASP.NET (Visual Studio)

55

2.

Na caixa Name, digite Home.aspx.

3.

Selecione a Select master page check box.

4.

Clique em Add.

A caixa de dilogo Select a Master Page aparece.


5.

Em Contents of folder, clique em Navigation.master e em OK.


Voc criou um pgina de contedo que est vinculada pgina mestra que
voc criou na seo anterior.

6.

Alterne para o modo Design.


No modo Design, voc ver o layout que voc criou para a pgina mestra,
com uma rea editvel em um controle Content1 correspondente ao controle
ContentPlaceHolder1 na pgina mestra.

7.

Clicar dentro da janela Content.


Isso onde voc pode adicionar contedo para essa pgina especfica.

8.

Digite Home, e depois formate o texto como Heading 1.


Voc criou o texto esttico (especificamente, o ttulo) para a pgina Home.

9.

Repita as etapas 3 a 8 para criar um pgina de contedo Products.aspx e um


pgina de contedo Hardware.aspx. Na etapa 8, digite Products e
Hardware, respectivamente, ao invs de Home.

Testando controles de navegao na pgina mestra


Fazer testes com pginas mestra e pginas de contedo o mesmo que fazer
testes com pginas individuais.
Para testar o controle de navegao na pgina mestra
1.

Abrir a pgina Products.aspx, e pressione CTRL+F5 para executar a pgina.


O pgina de contedo Products ser mesclada com a pgina mestra. No
navegador, voc ver uma pgina que contm o ttulo Products e os controles
de navegao que voc adicionou pgina mestra.

2.

No controle TreeView, clique emHardware.


A pgina de Hardware exibida com o mesmo layout da pgina Products,
exceto que o controle SiteMapPath exibe um caminho diferente.

Prximas etapas
Este passo-a-passo ilustra a funcionalidade bsica de navegao do site do
ASP.NET e controles de navegao. Voc pode testar com recursos adicionais de
navegao. Por exemplo, convm para fazer o seguinte:

Formate o controle SiteMapPath para personalizar sua aparncia. O


controle suporta vrias opes que gerenciar como os links so exibidos. Para
mais informaes, consulte SiteMapPath.

Personalize a exibio das pginas no controle TreeView. Por exemplo, voc


pode realar a pgina atual no n de modo de exibio de rvore.

Trabalhe programaticamente com as informaes da navegao do site. Um


controle SiteMapPath est disponvel na pgina atual, que voc pode usar para
exibir, programaticamente, informaes de navegao.

Use um armazenamento de dados diferente para as informaes do mapa do


site. Em vez de usar o arquivo XML padro do mapa do site, voc pode usar um

Temas no ASP.NET (Visual Studio)

56

mapa do site existente ou informaes do mapa do site armazenadas em um


banco de dados. A Navegao do site do ASP.NET usa um modelo de provedor.
Voc pode criar componentes que gerenciam informaes do mapa do site, e
depois configurar seu aplicativo para usar esse componente em vez do provedor
do mapa do site padro. Para mais informaes, consulte Provedores de
navegao do Site do ASP.NET.

COMO: Adicionar navegao em sites simples


Voc pode usar os Controles SiteMapPath, TreeView, ou Menu para fornecer uma
maneira consistente para que os usurios possam navegar em seu site da Web
O Controle SiteMapPath exibe um caminho de navegao, que tambm
conhecido como um breadcrumb, ou eyebrow, que mostra a localidade da pgina
atual e exibe links como um caminho para voltar para a pgina inicial.
Observao
Se uma pgina.aspx contiver um controle SiteMapPath, a pgina.aspx deve estar listada no arquivo
Web.sitemap para o controle processar.
Em uma pgina da Web, o Controle SiteMapPath exibir algo como a seguir se o
usurio est explorando a pgina de treinamento:
Home > Services > treinamento
O Controle TreeView exibe uma estrutura de rvore que os usurios podem
atravessar para links para pginas diferentes no seu site. Um n que contm ns
filhos podem ser expandidos ou recolhidos selecionando-os. Quando ele
processado primeiro, o Controle TreeView expandido totalmente. Em uma
pgina da Web, o Controle TreeView exibe algo como o seguinte:
- Home
- Servios
+ Treinamento
O Controle Menu exibe um menu expansvel que os usurios podem atravessar
para links para pginas diferentes no seu site. Um n que contm ns filhos
expandido quando o cursor focaliza o item de menu. Para obter um exemplo de
cdigo que exibe um mapa do site em um controle Menu, consulte Como Exibir
Dados de um Mapa de Site em Controles de Servidor Web No Hierrquicos.
Para usar esses controles de navegao em site, voc deve descrever a estrutura
do site da Web em um arquivo Web.sitemap.
Para criar um arquivo Web.sitemap

1.

Crie um arquivo no diretrio raiz do site chamado WEB.sitemap.

2.

Abra o arquivo Web.sitemap e adicione o seguinte cdigo.


<?xml version="1.0" encoding="utf-8" ?> <siteMap> <siteMapNode
title="Home" > <siteMapNode title="Services" > <siteMapNode
title="Training" url="~/Training.aspx"/> </siteMapNode> </siteMapNode>
</siteMap>

Observao

Temas no ASP.NET (Visual Studio)

57

Seu aplicativo da Web falhar se voc listar um URL que no existe, ou se voc listar um URL duplicado.
O atributo url pode comear com o atalho " ~/" que indica a raiz de aplicativo. Para obter mais
informaes, consulte Caminhos de Site Web do ASP.NET.
Posteriormente neste tpico, voc criar a pgina Training.aspx.
3.

Salve seu arquivo e feche-o.

Para adicionar a navegao a site a uma pgina da Web

1.

Crie um arquivo no diretrio raiz do site chamado Training.aspx.

2.

Abra Training.aspx e adicione o seguinte cdigo.


C#
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd"> <script runat="server"> </script> <html > <head
runat="server"> <title>Simple Navigation Controls</title> </head> <body>
<form id="form1" runat="server"> <div> <h2>Using SiteMapPath</h2>
<asp:SiteMapPath ID="SiteMapPath1" Runat="server"> </asp:SiteMapPath>
<asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="server" />
<h2>Using TreeView</h2> <asp:TreeView ID="TreeView1" Runat="Server"
DataSourceID="SiteMapDataSource1"> </asp:TreeView> <h2>Using Menu</h2>
<asp:Menu ID="Menu2" Runat="server" DataSourceID="SiteMapDataSource1">
</asp:Menu> <h2>Using a Horizontal Menu</h2> <asp:Menu ID="Menu1"
Runat="server" DataSourceID="SiteMapDataSource1"
Orientation="Horizontal" StaticDisplayLevels="2" > </asp:Menu> </div>
</form> </body> </html>

3.

Salve e feche o arquivo, e seguida, voc pode ver o arquivo em um


navegador para ver como os controles exibem a estrutura de navegao do
seu site da Web.

Segurana

Voc pode ocultar os links na sua estrutura de navegao dos membros das
funes de segurana especficos. Para obter mais informaes, consulte Trimming
segurana ASP.NET Site-Map.

COMO: Personalizar a aparncia de controles SiteMapPath de


servidor Web
A aparncia visual dos controles de navegao de sites pode ser personalizada
definindo os atributos do controle, ou configurando os modelos que esto
disponveis para o controle. Modelos e estilos so aplicados a links de acordo com
duas regras de prioridade que so descritas na seo Remarks do SiteMapPath.
Como alternativa, voc pode aplicar uma capa de controle ou tema a um controle,
ou voc pode desenvolver controles de navegao de sites personalizados, que
atendam suas necessidades de processamento. Para obter mais informaes sobre
como aplicar temas a controles da Web, consulte COMO: Personalizar o Controle
ASP.NET CreateUserWizard.
O controle SiteMapPath exibe um caminho de navegao, que tambm
conhecido como um breadcrumb ou eyebrow, que exibe links como um caminho da

Temas no ASP.NET (Visual Studio)

58

pgina atual para voltar pgina inicial do site da Web. Em uma pgina ASP.NET, o
controle SiteMapPath exibe algo como o seguinte:
Home > Services > Training
Os controles TreeView e Menu tambm processam dados de mapa de site, e eles,
semelhante ao controle SiteMapPath, podem ser personalizados como a maioria
dos outros controles da Web. Este tpico descreve como usar os seguintes recursos
de personalizao do controle de servidor Web SiteMapPath:

Especificar caracteres ou imagens exibidas entre os links.

Reverter a direo do caminho de navegao.

Especificar o nmero de links pai que so exibidos.

Os procedimentos neste tpico supem que voc j tenha criado um mapa de site e
uma pgina que contm um controle SiteMapPath. Voc pode usar o arquivo
exemplo Web.sitemap em Mapas de sites do ASP.NET.
Para personalizar propriedades de estilo link

1.

Em uma pgina Web do ASP.NET que contm um controle SiteMapPath,


adicione as seguintes propriedades para o controle:
RootNodeStyle-Font-Names="Verdana" RootNodeStyle-ForeColor="Orange"
RootNodeStyle-BorderWidth=2

Por exemplo, o cdigo para o controle SiteMapPath pode parecer o seguinte:


<asp:SiteMapPath ID="SiteMapPath1" Runat="server" SkipLinkText="Skip
Menu" RootNodeStyle-Font-Names="Verdana" RootNodeStyleForeColor="Orange" RootNodeStyle-BorderWidth=2 > </asp:SiteMapPath>

A maioria das propriedades descritas nas classes Style e FontInfo esto


disponveis, incluindo a propriedade CssClass.
2.

Se voc desejar que o estilo de cada link seja diferente, repita a etapa
anterior com as propriedades ParentNodeStyle, CurrentNodeStyle, e
PathSeperatorStyle do controle SiteMapPath.
Observao
Para melhorar o desempenho, voc pode usar o NodeTemplate para personalizar o estilo de todos os
links de uma vez. Para obter mais informaes, consulte Como criar modelos de controle do servidor da
Web ASP.NET:.

Para personalizar um caractere exibido entre links

Em um pgina Web do ASP.NET que contm um controle SiteMapPath,


adicione a propriedade PathSeparator para o controle.
Por exemplo, o cdigo para o controle SiteMapPath pode parecer o seguinte:
<asp:SiteMapPath ID="SiteMapPath1" Runat="server" PathSeparator=" :: ">
</asp:SiteMapPath>

O controle SiteMapPath exibir algo como o seguinte:


Home :: Services :: Training
Voc pode usar qualquer seqncia para separar os links, entretanto, para usar
uma imagem siga o procedimento seguinte.
Para especificar uma imagem exibida entre links

Temas no ASP.NET (Visual Studio)

59

Em um pgina Web do ASP.NET que contm um controle SiteMapPath,


adicione as linhas de cdigo a seguir ao controle:
<PathSeparatorTemplate> <asp:Image ID="Image1" Runat="Server" Width="20"
ImageUrl="Images/PathSeparatorImage.jpg" /> </PathSeparatorTemplate>
</PathSeparatorTemplate>

Por exemplo, o cdigo para o controle SiteMapPath pode parecer o seguinte:


<asp:SiteMapPath ID="SiteMapPath1" Runat="server" > <PathSeparatorTemplate>
<asp:Image ID="Image1" Runat="Server" Width="20"
ImageUrl="Images/PathSeparatorImage.jpg" /> </PathSeparatorTemplate>
</PathSeparatorTemplate> </asp:SiteMapPath>
Para reverter a direo do caminho exibido pelo controle SiteMapPath

Em um pgina Web do ASP.NET que contm um controle SiteMapPath,


adicione os PathDirection e PathSeparator ao controle.
Por exemplo, o cdigo para o controle SiteMapPath pode parecer o seguinte:
<asp:SiteMapPath ID="SiteMapPath1" Runat="server"
PathDirection="CurrentToRoot" PathSeparator=" <-- " > </asp:SiteMapPath>

Para limitar o nmero de links pai exibidos

Em um pgina Web do ASP.NET que contm um controle SiteMapPath,


adicione a propriedade ParentLevelsDisplayed ao controle.
Por exemplo, o cdigo para um controle SiteMapPath que exibir um mximo
de dois links pai pode parecer o seguinte:
<asp:SiteMapPath ID="SiteMapPath1" Runat="server" ParentLevelsDisplayed="2"
> </asp:SiteMapPath>

Acessibilidade

Controles de navegao de sites so usados em cada pgina de um site da Web.


Leitores de tela e outros dispositivos assistenciais lem em voz alta o texto em um
controle de navegao durante cada visita a uma pgina e em cada nova
postagem.
Os controles de navegao de sites SiteMapPath, TreeView, e Menu, cada um
inclui uma propriedade denominada SkipLinkText, que permite informaes
repetidas serem ignoradas em pginas subseqentes ou em modos de exibio da
mesma pgina.
Para usar o recurso de ignorar a acessibilidade

Em um pgina Web do ASP.NET que contm um controle de navegao,


adicione a propriedade a seguir para o controle:
SkipLinkText="Skipped Menu"

Por exemplo, o cdigo para um controle SiteMapPathpode parecer o seguinte:


<asp:SiteMapPath ID="SiteMapPath1" Runat="server" SkipLinkText="Skip
Breadcrumb"> </asp:SiteMapPath>

Tornando navegao em sites do ASP.NET seguro


A Navegao em sites no ASP.NET fornece funcionalidade para manter um
armazenamento central de links para todas as pginas de um site da Web. Os links
depois podem ser processado como listas ou menus de navegao em cada pgina,
incluindo um controle de servidor Web especfico.

Temas no ASP.NET (Visual Studio)

60

A Navegao em site ASP.NET mais comumente usada com controles de


navegao, como o SiteMapPath, SiteMapDataSource., TreeView, e Menu ; ou ela
usado atravs de programao com as classes SiteMapProvider e SiteMap. As
informaes neste tpico descrevem como melhorar a segurana dos recursos de
navegao.
Enquanto as prticas recomendadas de codificao e configurao podem melhorar
a segurana do seu aplicativo, tambm importante que voc continuamente
mantenha o servidor de aplicativos atualizado com as ltimas atualizaes de
segurana do Microsoft Windows e Servios de Informaes da Internet (IIS),
assim como quaisquer atualizaes para o Microsoft SQL Server ou outras fontes de
dados associadas. Para obter mais informaes, consulte Windows Update Site.
Para obter informaes detalhadas sobre as melhores prticas de como escrever
seu cdigo e proteger os seus aplicativos consulte o livro, "Writing Secure Code" de
Michael Howard e David LeBlanc, e consulte o guia fornecido na pgina da Web
Microsoft Patterns and Practices. Alm disso, consulte Bsico recomendadas de
segurana para aplicativos da Web.
Configurao de Navegao Segura

Os recursos de navegao em sites do ASP.NET esto ativadas por padro. Eles


podem ser desativados, definindo o atributoenabled do elementositeMap para
false no arquivo de configurao (Web.config). A seo a seguir discute como
proteger dados relacionados a navegao no arquivo Web.config. Para obter
informaes sobre definies das configuraes de navegao e seus valores
padro, consulte siteMap elemento (esquema configuraes ASP.NET).
Protegendo Valores de Configurao
Voc no precisa proteger definies de configuraes de navegao que esto
contidas em um arquivo Web.config se voc usar o provedor mapa-de- site
ASP.NET padro. Entretanto, se voc implementar um provedor mapa-de-site
personalizado que usa um banco de dados e voc armazenar a seqncia de
caracteres de conexo de banco de dados em um arquivo de configurao, siga as
recomendaes contidas emProteo de acesso a dados para criptografar a
seqncia de caracteres de conexo.
Em um ambiente hospedado, o arquivo de configurao deve negar permisses
substitudas para o elemento siteMap para ajudar a impedir que algum reconfigure
o site para usar um mapa-de-site ou provedor ou mapa-de-site diferente. Para
obter mais informaes, consulte Bloqueando configuraes. Alm disso, consulte
Segurana de Aplicativos ASP.NET em Ambientes Hospedados.
Mapeamento URL
URLs podem ser mapeados em um arquivo de configurao para um URL amigvel
usando o elemento urlMappings no arquivo Web.config. O ASP.NET permite
somente sintaxe relativo a aplicativos, por exemplo, ~/filename.aspx. Em outras
palavras, o ASP.NET no permite que URLs mapeados apontem para uma pgina
que esteja fora do aplicativo. Isso ajuda a proteger contra qualquer tentativa, por
parte de um cliente ISP ,de exibir uma pgina que esteja fora do seu aplicativo em
um ambiente hospedado.
Protegendo dados do Mapa de Site

Por padro, o ASP.NET configurado para proteger arquivos com extenses de


conhecidas como.sitemap de serem descarregados por um cliente. Para ajudar
a proteger seus dados, coloque quaisquer arquivos personalizados de dados de

Temas no ASP.NET (Visual Studio)

61

mapa de site que tm uma extenso diferente de.sitemap na pasta App_Data e


aplique as listas de controle de acesso (ACLs) apropriadas. Por exemplo, no
Windows 2000 ou Windows XP, conceda a conta de processo ASP.NET a
permisso de somente leitura. No Windows 2003, conceda ao servio de rede o
acesso de somente leitura. Para obter mais informaes, consulte ASP.NET
necessrio listas de controle de acesso (ACLs).
A navegao em sites no ASP.NET somente carregar um arquivo mapa-de-site se
o arquivo existe na estrutura de diretrios do aplicativo. Isso ajuda a proteger
aplicativos em um ambiente hospedado de ter seus dados de mapas-de-site
carregados por outro aplicativo.
A navegao em site no ASP.NET no permite acesso aos arquivos de fora da
estrutura de diretrios do aplicativo. Se um mapa do site contm um n que faz
referncia a outro arquivo do mapa do site, e a localidade do arquivo estiver fora do
aplicativo, ocorrer uma exceo. A exceo contm o caminho que est
especificado no SiteMapNode, listando-o como fora do escopo do aplicativo, mas a
exceo no indica se o caminho vlido. Isso ajuda a proteger contra algum que
esteja usando a navegao em sites no ASP.NET a descoberta de caminhos de
arquivos vlidos em um servidor.
Para obter informaes sobre como voc pode ajudar a proteger seus dados de
mapa de site se voc implementar um provedor de mapa de site personalizado que
usa um banco de dados, consulte Proteo de acesso a dados.
Processo de Carga do Mapa do Site
O provedor padro do mapa de site ASP.NET carrega os dados do mapa de sitecomo um documento XML e armazena-os como dados estticos quando o aplicativo
iniciado. Um arquivo de mapa de site excessivamente grande pode utilizar uma
grande quantidade de energia da memria e da CPU durante o tempo de
carregamento. Em um ambiente hospedado, limite o tamanho do mapa de site que
os clientes tm permisso para criar para seus sites. Isso ajuda a proteger contra
ataques de negao de servio.
Os recursos de navegao em sites do ASP.NET dependem das notificaes de
arquivos para manterem dados de navegao atualizados. Quando um arquivo de
mapa de site alterado, o ASP.NET recarrega os dados do mapa do site. Isso pode
causar um problema se a estrutura de navegao do site for composto de mapas de
site filho que tm acesso de gravao concedida a usurios que podem no
entender que cada alterao feita por eles causar um recarregamento da pgina.
Certifique-se de definir acesso restrito em todos os arquivos de mapa do site.
Defina seus grupos de usurio definindo quem tem permisso para atualizar que
arquivos e em que locais, e defina as permisses em arquivos de mapa do site para
os grupos de usurios individuais.
Ocultando links de Navegao de Usurios Especficos

A navegao em sites no ASP.NET permite que ns individuais de mapas de site


sejam protegidos por uma funo. Se voc deseja ocultar de certos usurios parte
da estrutura de navegao do seu site , voc poder a ativar o aparamento de
segurana ASP.NET aparar. Uma vez ativada, o ASP.NET verifica a autorizao de
URL e opcionalmente verifica permisses de acesso a arquivo para o arquivo que
est listado em um n do mapa de site.O ASP.NET exibe o link para esse arquivo
somente se o usurio tiver acesso. Se voc deseja permitir que todos os usurios
vejam um link para um arquivo restrito, defina o atributoroles nos ns de mapa de
site correspondentes como um asterisco (*), ou caractere curinga, o que habilitar
que todos os clientes vejam o link. Para obter mais informaes, consulte Trimming
segurana ASP.NET Site-Map.

Temas no ASP.NET (Visual Studio)

62

Incluindo URLs Externos em um Mapa de Site


Em um mapa de site, voc pode consultar URLs que esto fora do seu aplicativo
ASP.NET. No entanto, o acesso a um URL de fora do aplicativo no pode ser testado
pelo ASP.NET. Por exemplo, se voc criar um n de mapa de site que corresponde a
http://www.microsoft.com e voc ativar o trimming de segurana o hyperlink no
ficar visvel aos clientes porque o ASP.NET no pode testar permisses de acesso
para um URL externo. Se voc ativar o trimming de segurana e tiver ns de
mapas de site que correspondam aos URLs externos, defina o atributo roles destes
ns para um asterisco (*), o que habilitar que todos os clientes vejam o link,
mesmo que o ASP.NET no pode autorizar o acesso para o link externo.
A API de Navegao de Sites

As classes de navegao de sites esto publicamente disponveis para qualquer


cdigo que esteja sendo executado no computador. Classes de navegao de sites
executam sob confiana mnima. Entretanto, esta baixa confiana necessria para
carregar dados do mapa de site pois o ASP.NET precisa para usar as operaes de
E/S ao abrir um arquivo mapa de site usando o provedor de mapa de site-padro,
XmlSiteMapProvider. Opcionalmente, voc pode desenvolver um provedor do mapa
de site personalizado que no tenha esta restrio.
Para obter mais informaes, consulte Nveis de confiana ASP.NET e arquivos de
diretiva e Implementando provedores site-Map em ASP.NET.
Protegendo Implementaes Personalizadas do Provedor do Mapa de Site

Ao implementar um provedor de mapa de site personalizado, assegure-se que o


provedor foi revisado pelas prticas recomendadas de segurana. Isso
especialmente importante em um cenrio de hospedagem, onde um provedor de
mapa de site personalizado, se no implementado corretamente, pode vazar
informaes ou conter definies de configurao que no so seguras. Siga as
prticas recomendadas para ajudar a evitar ataques, como ataques de injeo SQL.
Por exemplo, voc deve sempre verificar parmetros de entrada.
Para obter informaes sobre como proteger um banco de dados, consulte Proteo
de acesso a dados. Alm disso, consulte Segurana de Aplicativos ASP.NET em
Ambientes Hospedados.
Mensagens de erro e Eventos

As sees a seguir abordam como voc pode atenuar possveis riscos de segurana
que so expostos por mensagens de erro e eventos inesperados.
Mensagens de Exceo
Excees disparadas por recursos de navegao em sites do ASP.NET no expe
informaes privilegiadas. Revise e teste classes personalizadas do seu aplicativo
da Web por entradas e solicitaes invlidas para ajudar a garantir que informaes
privilegiadas no sero expostas quando ocorrerem excees.
Mensagens de Erro
Para ajudar a evitar a exposio de informaes confidenciais a fontes indesejveis,
ative erros personalizados para o seu aplicativo, ou exiba mensagens de erro
detalhadas somente quando o cliente for o prprio servidor da Web. Para obter
mais informaes, consulte customErrors elemento (esquema configuraes
ASP.NET).
Log de Eventos
Se o computador estiver executando o Windows Server 2003, voc poder ajudar
a melhorar a segurana do seu aplicativo, protegendo o log de eventos. Alm disso,

Temas no ASP.NET (Visual Studio)

63

defina parmetros sobre o tamanho, a reteno, e assim por diante, do log de


eventos para ajudar a impedir um ataque indireto de negao de servio contra o
log. Por padro, somente membros do grupo de segurana Administradores podem
ver logs de eventos. Para obter mais informaes sobre como configurar logs de
eventos, procure " Visualizador de Eventos " na Ajuda e Suporte do Windows.
Scanners de Vrus

Ferramentas como scanners de vrus no devem ser configurados para modificar


arquivos de mapas de site. Isso causa um recarregamento desnecessrias dos
dados de navegao porque os recursos de navegao em sites do ASP.NET
dependem das notificaes de arquivos para manter os dados de navegao
atualizados.

Temas no ASP.NET (Visual Studio)

64

Usando themes ASP.NET 2.0


Conceito
Uma nova caracterstica e do ASP.NET 2.0 deixar os usurios terem mais controle
no visual onde possa sentir e ver uma pgina web. Um tema pode ser definido
cores, nome de fontes, tamanho e estilo de cada controle. O novo skin suportado
no ASP.NET 2.0 uma extenso da mesma idia do CSS.
Usurios individuais podem selecionar um tema para vrias opes avaliadas para o
mesmo, e especificar o tema deles escolhendo determinado skin. O skin um
cliente servidor relativo como se fosse um CSS stylesheet, ou seja, similar a um
arquivo CSS mas diferente, um skin pode sobrescrever vrias propriedades
visuais daquele especfico controle de um pgina ou de vrias pginas.
Voc pode armazenar vrias verses de imagens para o tema, cada tema uma
imagem diferente ou atribuir vrias imagens para todos os temas baseado no
corrente skin usado.
Os temas ficam dentro da pasta /App_Themes, e contm os seguintes itens:
- Stylesheet.css (arquivo que define a aparncia dos objetos HTMLs);
- Skin File (Eles so arquivos que definem a aparncia de controles clientes
servidores ASP.NET. Voc pode pensar deles como se fossem arquivos
stylesheet clientes servidores;
- Outros recursos como imagens.

Problema
Preciso colocar um estilo para cada controle de meu projeto WEB ASP.NET 2.0.
Antigamente utilizada Style.css para definir os meus controles, e dentro dos
controles utilizava o famoso CssClass atribuindo a class que gostaria descrita
dentro do arquivo .CSS. Dessa forma era muito trabalhoso porque para cada
controle precisava colocar o CssClass e assim definir o visual ou estilo do
controle, poderia ser tanto um textBox quanto um dataGrid.
Com a nova verso do Visual Studio.NET 2005 utilizando o framework 2.0, foi
criado uma soluo mais fcil e gil para modificar o estilo de cada controle ou
todos os controles de acordo com a configurao.

Soluo
Para criar um estilo especfico para todos os controles textbox por exemplo,
bem tranqilo e fcil pois basta definir dentro do tema e depois atribuir o valor
dentro do arquivo de configurao web.config. Alm de poder utilizar para todos
os controles, tambm pode ser feito para uma pgina especfica.

Temas no ASP.NET (Visual Studio)

65

O tema ainda possui mais opes para configurao, o exemplo falado acima do
textbox, pode ser configurao para um textbox apenas um estilo diferente,
enquanto todos os outros textbox podem ser diferentes de especfico. No decorrer
mostrarei como desenvolver das trs formas na prtica.

Criar um novo tema


Para criar o meu primeiro tema, cliquei com o boto direito do mouse em cima do
projeto, fui at a opo ADD ASP.NET Folder, em seguida escolhi a opo
Theme. (Referncia 1.1)

Referncia: 1.1

Temas no ASP.NET (Visual Studio)

66

Automaticamente criada uma pasta chamada Theme dentro do projeto.


(Referncia 1.2)

Referncia: 1.2
Cliquei com o boto direito do mouse em cima da pasta Theme, em seguida
escolhi a opo ADD New Item. Apareceu automaticamente uma janela com sete
opes de arquivos Templates para a escolha. Segue os tipos de arquivos:
(Referncia 1.3).
StyleSheet.css

Arquivo para estilo da extenso .css utilizado da


mesma forma antigamente pela ferramenta 2003 do
Visual Studio .NET.

XMLFile.xml

Arquivo XML

TextFile.txt

Arquivo TXT

Report.rdlc

Arquivo para gerao de relatrio usando o Crystal


Report.
Arquivo para gerao de temas XSL.

XSLTFile.xsl
SkinFile.skin

Skin utilizado para atribuio de controles cliente


servidor das pginas ASPX.

ClassDiagram.cd

Arquivo de diagrama de classes.

Referncia: 1.3
Neste primeiro passo escolhi o tipo de arquivo SkinFile.skin, automaticamente
criado um arquivo para edio. Dentro do mesmo pode ser colocado os controles
cliente servidor utilizados no ASPX.

Temas no ASP.NET (Visual Studio)

67

Referncia: 1.3
Na referncia 1.3, adicionei um controle cliente servidor chamado TextBox com
uma configurao de borda e tamanho de borda. Bem simples e prtico. Note que
esse controle no tem ID definido como necessrio definir dentro das pginas
ASPX. Foram adicionados apenas os estilos e o runat=server.

Atribuir estilo criado


Criei uma pgina chamada default.aspx e agora preciso atribuir este estilo
adicionado para dentro da pgina cujo o objetivo aplicar no controle textbox da
pgina. Cdigo da pgina. (Referncia 1.4)

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>Projeto Themes</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox runat="server" ID="txt"></asp:TextBox>
</div>
</form>
</body>
</html>
Referncia: 1.4
Note que existe apenas um controle chamado txt do tipo textbox. Agora para
adicionar o estilo a pgina para que o controle mude, basta adicionar um atributo e
um valor no incio da pgina. Referncia 1.5.

Temas no ASP.NET (Visual Studio)

68

<%@ Page Language="C#" Theme="Theme" AutoEventWireup="true"


CodeFile="Default.aspx.cs" Inherits="_Default" %>
Referncia: 1.5
Acrescentei apenas o atributo Theme com o valor Theme, cujo o nome
adicionado no ato da criao. Cliquei F5 e mandei executar o projeto. (Referncia
1.6)

Referncia: 1.6
Note que o controle TextBox foi modificado automaticamente com traos em volta
do mesmo. Com isso termino de falar dessa primeira etapa utilizando Temas com
Visual Studio. NET 2005.

Temas no ASP.NET (Visual Studio)

69

Anteriormente falei e mostrei o conceito, problema e soluo usando o "themes" do


Visual Studio.NET 2005. Para quem quiser verificar sobre a "Parte 1", favor acessa
o link abaixo:

1. Conceito
Uma nova caracterstica e do ASP.NET 2.0 deixar os usurios terem mais controle
no visual onde possa sentir e ver uma pgina web. Um tema pode ser definido
cores, nome de fontes, tamanho e estilo de cada controle. O novo "skin" suportado
no ASP.NET 2.0 uma extenso da mesma idia do CSS.
Usurios individuais podem selecionar um tema para vrias opes avaliadas para o
mesmo, e especificar o tema deles escolhendo determinado "skin". O "skin" um
cliente servidor relativo como se fosse um CSS stylesheet, ou seja, similar a um
arquivo CSS mas diferente, um "skin" pode sobrescrever vrias propriedades
visuais daquele especfico controle de um pgina ou de vrias pginas.
Voc pode armazenar vrias verses de imagens para o tema, cada tema uma
imagem diferente ou atribuir vrias imagens para todos os temas baseado no corrente
"skin" usado.
Os temas ficam dentro da pasta /App_Themes, e contm os seguintes itens:
- Stylesheet.css (arquivo que define a aparncia dos objetos HTMLs);
- Skin File (Eles so arquivos que definem a aparncia de controles clientes
servidores ASP.NET. Voc pode pensar deles como se fossem arquivos stylesheet clientes
servidores;
- Outros recursos como imagens.

2. Problema
Preciso diferenciar os meus componentes de tela usando "stylesheet", ou seja, um
TextBox quero que tenha a letra em azul e outro tracejado. Preciso adicionar vrios
componentes diferentes na tela usando ou no estilo "stylesheet.css". Alm de
mudar os estilos, preciso adicionar os "themes" para todas as pginas dentro do
meu projeto.

3. Soluo
O primeiro de tudo criar um "Estilo.css", o passo seguinte colocar dentro do
"skin" a "CssClass" para atribuir os estilos de cores e fontes. Cliquei com o boto
direito do mouse em cima da pasta "Themes" e escolhi a opo "Add New Item...".
(Referncia Theme2.1.1)

Temas no ASP.NET (Visual Studio)

70

Referncia: Theme2.1.1
A tela seguinte escolhi o tipo de arquivo na tela de "templates". O tipo escolhido foi
"Style Sheet". (Referncia Theme2.1.2).

Referncia: Theme2.1.2

Temas no ASP.NET (Visual Studio)

71

Coloquei o nome do arquivo de "Estilo.css". Em seguida cliquei no boto ADD, o


mesmo foi adicionado dentro da tela de Solution Explorer e dentro da pgina
Theme. Dentro do arquivo "css" adicionei uma classe para configurar um label. (Referncia
Theme2.1.3).
.Label
{
background-color:Blue;
font-size:20px;
}
Referncia: Theme2.1.3
O "background-color: Blue" coloca o fundo da cor azul, o "font-size:20px" define o
tamanho da fonte mostrada em tela.
Na "Parte 1" mostrei como criar o "skin" do projeto, o passo seguinte adicionar
um "label" dentro do arquivo criado anteriormente chamado "SkinFile.skin".
(Referncia Theme2.1.4)
<asp:Label runat="server" CssClass="Label" />
Referncia: Theme2.1.4
Adicionei o cdigo da referncia (Theme2.1.4) dentro do skin e agora adicionarei
uma tag dentro do arquivo de configurao chamado web.config. Neste arquivo de
configurao e dentro da tag <system.web>, adicionei uma tag para utilizar em todas
as pginas automaticamente os estilos adicionados no skin do projeto. (Referncia
Theme2.1.5).

<pages theme="Theme" />


Referncia: Theme2.1.5
Esse cdigo atribui para todas as pginas o tema criado; dessa forma; s
adicionarei o controle "Label" dentro de qualquer pgina ASPX. Dentro do arquivo
"DEFAULT.ASPX" criado anteriormente coloquei um objeto de tela. (Referncia
Theme2.1.6)
<%[arroba] Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>Projeto Themes</title>
<link rel="stylesheet" type="text/css" href="App_Themes/Theme/Estilo.css"
/>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox runat="server" ID="txt"></asp:TextBox>
<asp:Label id="lbl" runat="server" Text="Label"></asp:Label>

Temas no ASP.NET (Visual Studio)

72

</div>
</form>
</body>
</html>
Referncia: Theme2.1.6
A referncia (Theme2.1.6) mostro toda a pgina "default.aspx". Logo nas primeiras
linhas, adicionei o "stylesheet". (Referncia Theme2.1.7)
<link rel="stylesheet" type="text/css"
href="App_Themes/Theme/Estilo.css" />
Referncia: Theme2.1.7
Adicionei o estilo e em seguida o controle Label de acordo com os detalhes da
referncia (Theme2.1.8).
<asp:Label id="lbl" runat="server" Text="Label"></asp:Label>
Referncia: Theme2.1.8

Referncia: Theme2.1.9
Na execuo do projeto, note que o label adicionado anteriormente no skin com um
estilo puxado do arquivo de stylesheet foi executado com sucesso. Da forma que fiz para pegar
o estilo, todos os labels de todas as pginas estaro com o fundo azul, como na referncia
(Theme2.1.9).

4. Outro Problema
Em caso de sites ou sistemas, no quero que todos os labels fiquem do fundo de
cor azul e sim alguns labels podero ficar. Ento tenho um problema, quero
adicionar para alguns labels a cor no fundo azul e outros labels no. Da forma que
est configurado hoje, todos os labels estaro com o fundo azul.
Para a soluo desse problema, existe o atributo "SkinId" que serve para
diferenciao, ou seja, preciso adicionar mais um controle do tipo label no

Temas no ASP.NET (Visual Studio)

73

skinFile.skin com o atributo "SkinID", depois de adicionar, preciso colocar na pgina o


controle com o mesmo "SkinId".

5. Soluo
Como falei anteriormente, para solucionar o problema de no ficar sempre um label
com o fundo da cor azul, preciso usar o atributo "SkinId" tanto no arquivo de "skin"
quanto na pgina. Para solucionar o problema, adicionei mais um novo label dentro
do "skinFile.skin" que fica dentro da pasta "Theme". (Referncia Theme2.1.10).
<asp:TextBox runat="server" SkinId="teste" ForeColor="Yellow" />
<asp:Label runat="server" CssClass="Label" />
<asp:Label runat="server" SkinId="labelTeste" />
Referncia: Theme2.1.10
Note que acrescentei mais um label apenas sem o uso do atributo CssClass e com o
"SkinId=labelTeste". Depois de adicionado, coloquei mais um controle de tela na
pgina "Default.aspx" com o mesmo "SkinId". (Referncia Theme2.1.11).
<asp:Label id="lbl" runat="server" SkinId="labelTeste"
Text="Label"></asp:Label>
Referncia: Theme2.1.11
Um label foi adicionado na pgina "Default.aspx" com o nome do SkinId igual ao do
arquivo skinFile.skin. Para melhor entendimento segue todo o cdigo da pgina
"Default.aspx". (Referncia Theme2.1.12)
<%[arroba] Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>Projeto Themes</title>
<link rel="stylesheet" type="text/css"
href="App_Themes/Theme/Estilo.css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox runat="server" ID="txt"></asp:TextBox>
<br />
<asp:Label id="Label1" runat="server" Text="Label"></asp:Label>
<asp:Label id="lbl" runat="server" SkinId="labelTeste"
Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
Referncia: Theme2.1.12

Temas no ASP.NET (Visual Studio)

74

Executei o projeto e retornou o resultado conforme a (Referncia Theme2.1.13).

Referncia: Theme2.1.13

Temas no ASP.NET (Visual Studio)

75

Temas e Aparncias do ASP.NET


Temas ASP.NET so um conjunto de propriedades que definem a aparncia de
pginas e controles em seu site da Web. Um tema pode incluir arquivos de
aparncia (skin files), que definem as configuraes de propriedade de controles de
servidor Web do ASP.NET, e tambm podem incluir arquivos de folha de estilo em
cascata (arquivos .css) e elementos grficos. Aplicando um tema, voc pode dar s
pginas de seu site da Web uma aparncia consistente.
Os tpicos nesta seo descrevem o que so temas ASP.NET, como eles funcionam,
e como cri-los e aplic-los.

Viso geral sobre capas e temas do ASP.NET


Um tema um conjunto de configuraes de propriedade que permitem a voc
definir a aparncia de pginas e controles, e aplicar a aparncia consistentemente
em pginas de um aplicativo da Web, em um aplicativo da Web inteiro, ou em
todos os aplicativos da Web em um servidor.

Temas e Aparncias de Controle


Temas so compostos de um conjunto de elementos: aparncias, folhas de estilo
em cascata (CSS), imagens e outros recursos. No mnimo, um tema conter capas.
Temas so definidos em diretrios especiais no seu site ou em seu servidor Web.
Aparncias
Um arquivo de aparncia tem a extenso de nome de arquivo .skin e contm
configuraes de propriedades para controles individuais, como os controles Button,
Label, TextBox ou Calendar. Configuraes de capa de aparncia so semelhantes a
marcaes de controle propriamente ditas, mas contm somente as propriedades
que voc deseja definir como parte do tema. Por exemplo, a seguir est uma
aparncia de controle para um controle Button:
<asp:button runat="server" BackColor="lightblue" ForeColor="black" />

Voc criar arquivos .skin na pasta do tema. Um arquivo.skin pode conter uma ou
mais aparncias de controle para um ou mais tipos de controle. Voc pode definir
aparncias em um arquivo separado para cada controle ou definir todos as
aparncias para um tema em um nico arquivo.
Existem dois tipos de aparncias de controle, aparncias padro (default skins) e
aparncias nomeadas (named skins):

Quando um tema aplicado a uma pgina, uma aparncia padro


aplicada automaticamente a todos os controles do mesmo tipo. Uma aparncia
de controle uma aparncia padro se ele no possuir um atributo SkinID. Por
exemplo, se voc criar uma aparncia padro para um controle Calendar, a
aparncia de controle ser aplicada a todos os controles Calendar nas pginas
que usam o tema. (Aparncias padro so definidas exatamente por tipo de
controle, para que uma aparncia de controle Button se aplique a todos os
controles Button, mas no a controles LinkButton ou a controles que derivem
do objeto Button.)

Uma aparncia nomeada uma aparncia de controle com um conjunto de


propriedades SkinID. Aparncias nomeadas no so aplicadas automaticamente
a controles por tipo. Em vez disso, voc aplica uma aparncia nomeada a um
controle explicitamente, definindo propriedade SkinID do controle. A criao

Temas no ASP.NET (Visual Studio)

76

de aparncias nomeadas permite-lhe definir aparncias diferentes para


instncias diferentes do mesmo controle em um aplicativo.
Folhas de Estilo em Cascata
Um tema tambm pode incluir uma folha de estilos em cascata (arquivo .css).
Quando voc coloca um arquivo.css no diretrio do tema, a folha de estilos
aplicada automaticamente como parte do tema. Voc define uma folha de estilos
usando a extenso de nome de arquivo .css na pasta do tema.
Grficos e Outros Recursos de Temas
Temas tambm pode incluir elementos grficos e outros recursos, como arquivos
de script ou arquivos de som. Por exemplo, parte do seu tema de pgina pode
incluir uma aparncia de um controle TreeView. Como parte do tema, voc pode
incluir os elementos grficos usados para representar os botes de expandir e
recolher.
Normalmente os arquivos de recursos para o tema esto na mesma pasta que os
arquivos de aparncias para esse tema, mas elas podem ser em outro lugar no
aplicativo da Web, em uma subpasta do diretrio do tema por exemplo. Para se
referir a um arquivo de recursos em uma subpasta do diretrio do tema, use um
caminho como o que est sendo mostrado nesta aparncia de controle Image:
<asp:Image runat="server" ImageUrl="ThemeSubfolder/filename.ext" />

Voc tambm pode armazenar seus arquivos de recurso fora a diretrio do tema.
Se voc usar a sintaxe til (~) para consultar os arquivos de recursos, o aplicativo
da Web automaticamente encontrar as imagens. Por exemplo, se voc colocar os
recursos para um tema em um subdiretrio do seu aplicativo, voc pode utilizar
caminhos do formulrio ~/SubPasta/nomedoarquivo.ext para referir-se a arquivos
de recursos, como no seguinte exemplo de cdigo
<asp:Image runat="server" ImageUrl="~/AppSubfolder/filename.ext" />
Temas de Escopo

Voc pode definir temas para um nico aplicativo da Web, ou como temas globais
que podem ser usados por todos os aplicativos em um servidor Web. Aps um tema
ser definido, ele pode ser colocado em pginas individuais usando o atributo
Theme ou StyleSheetTheme da diretiva @ Page, ou pode ser aplicado a todas as
pginas em um aplicativo definindo o elemento <pages> no arquivo de
configurao do aplicativo. Se o elemento <pages> estiver definido no arquivo
Machine.config, o tema ser aplicado a todas as pginas em aplicativos da Web no
servidor.
Temas de Pgina
Um tema de pgina uma pasta de tema com aparncias de controle, folhas de
estilos, arquivos grficos e outros recursos criados como um subpasta da pasta
\App_Themes em seu site da Web. Cada tema uma subpasta diferente da pasta
\App_Themes. O exemplo de cdigo a seguir mostra um tema de pgina tpico,
definindo dois temas chamados BlueTheme e PinkTheme.
MyWebSite
App_Themes
BlueTheme
Controls.skin
BlueTheme.css
PinkTheme
Controls.skin
PinkTheme.css

Temas no ASP.NET (Visual Studio)

77

Temas Globais
Um tema global um tema que voc pode aplicar a todos os sites da Web em um
servidor. Temas globais permitem que voc defina uma aparncia geral para o
domnio quando voc mantiver vrios sites da Web no mesmo servidor.
Temas globais so como temas de pgina dentro dos quais eles incluem
configuraes de propriedade, configuraes de folha de estilos, e elementos
grficos. Entretanto, temas globais so armazenados em uma pasta chamada
\Themes que global para o servidor Web. Qualquer site no servidor, e qualquer
pgina em qualquer site da Web, pode referenciar um tema global. Para obter mais
informaes sobre como criar uma pasta de temas globais, consulte Como definir
temas ASP.NET:.
Precedncia das Configuraes de Tema

Voc pode especificar a prioridade que as configuraes de tema tm sobre as


configuraes de controles locais, especificando como o tema aplicado.
Se voc definir a propriedade Theme de uma pgina, as configuraes de controle
no tema e na pgina sero mescladas para formar as configuraes finais para o
controle. Se uma configurao de controle for definida no controle e no tema, as
configuraes de controle do tema substituiro quaisquer configuraes da pgina
para o controle. Essa estratgia permite ao tema criar uma aparncia consistente
entre pginas, mesmo se os controles nas pginas j tm configuraes de
propriedade individuais. Por exemplo, ela permite a voc aplicar um tema a uma
pgina criada em uma verso anterior do ASP.NET.
Como alternativa, voc pode aplicar um tema como um tema folha de estilos,
definindo propriedade StyleSheetTheme da pgina. Nesse caso, as configuraes de
pgina locais tm prioridade sobre aquelas definidas no tema quando a
configurao definida nos dois lugares. Esse o modelo usado pelas folhas de
estilo em cascata. Voc pode aplicar um tema como um tema de folha de estilo se
voc deseja ser capaz de definir as propriedades de controles individuais na pgina
ainda enquanto aplica um tema para uma aparncia geral.
Propriedades que Voc Pode Definir Usando Temas

Como regra, voc pode usar temas para definir propriedades que dizem respeito
aparncia ou contedo esttico de uma pgina ou controle. Voc pode definir
somente as propriedades que possuem um atributo ThemeableAttribute definido
como true na classe controle
Propriedades que especificam explicitamente o comportamento do controle em vez
da aparncia no aceitam valores de tema. Por exemplo, voc no pode definir a
propriedade CommandName de um controle Button, usando um tema. Da mesma
forma, voc no pode usar um tema para definir a propriedade AllowPaging ou a
propriedade DataSource de um controle GridView.
Temas versus Folhas de Estilo em Cascata

Temas so semelhantes s folhas de estilo em cascata, pois tanto os temas quanto


as folhas de estilo definem um conjunto de atributos comuns que podem ser
aplicados a qualquer pgina. Entretanto, temas diferem das folhas de estilo das
seguintes maneiras:

Temas podem definir muitas propriedades de um controle ou pgina, no


apenas propriedades de estilo. Por exemplo, usando temas, voc pode
especificar os grficos para um controle TreeView, o layout de modelo de um
controle GridView, e assim por diante.

Temas no ASP.NET (Visual Studio)

78

Temas podem incluir elementos grficos.

Temas no fazem cascata (cascade) da mesma forma que as folhas de


estilo fazem. Por exemplo, por padro, os valores de propriedade substituem os
valores de propriedade local a menos que voc explicitamente aplique o tema
como um tema de folha de estilo.

Somente um tema pode ser aplicado a cada pgina. No possvel aplicar


vrios temas a uma pgina, diferentemente das folhas de estilo onde vrias
folhas de estilos podem ser aplicadas.

Como definir temas ASP.NET:


Voc pode definir seus prprios temas da pgina ou globais. Temas consistem de
vrios arquivos de suporte, inclusive folhas de estilo para aparncia da pgina,
capas de controle para decorar controles de servidor e qualquer outro suporte de
imagens ou arquivos que compem o tema.
Para criar um tema de pgina

1.

Crie uma nova pasta chamada App_Themes no seu site.


Observao
A pasta deve ser denominada App_Themes.

2.

Crie uma nova subpasta da pasta App_Themes para manter seus arquivos
tema. O nome da subpasta o nome do tema. Por exemplo, para criar um
tema chamado BlueTheme, crie uma pasta denominada
\App_Themes\BlueTheme.

3.

Adicione arquivos nova pasta para capas, folhas de estilos e imagens que
compem o tema.

Para criar um tema global

1.

Crie uma pasta de temas usando este caminho:


iisdefaultroot\aspnet_client\system_web\version\Themes

Por exemplo, se a pasta raiz da Web padro est em C:\Inetpub\wwwroot no


servidor Web, a nova pasta Themes pode ser esta:
C:\Inetpub\wwwroot\aspnet_client\system_web\version\Themes

Observao
O nome da pasta para temas globais Themes, no App_Themes, como para temas de pgina.
2.

Crie uma pasta de tema como uma subpasta da pasta Themes. O nome da
subpasta o nome do tema. Por exemplo, para criar um tema global chamado
BlueTheme, crie uma pasta chamada ...\Themes\BlueTheme.

3.

Adicione arquivos nova pasta para capas, folhas de estilos e imagens que
compem o tema.

Temas no ASP.NET (Visual Studio)

79

Para criar uma capa

1.

Crie um novo arquivo de texto na sua subpasta de tema com uma extenso
.skin.
A conveno comum consiste em criar um arquivo .skin por controle, como
Button.skin ou Calendar.skin. Contudo, voc pode criar tantos ou to poucos
arquivos .skin de quantos voc precisar; arquivos de capas podem conter
vrias definies de capa.

2.

No arquivo .skin, adicione uma definio de controle normal (usando sintaxe


declarativa), mas inclua somente as propriedades que voc deseja definir para
o tema e no inclua um atributo ID. A definio de controle deve incluir o
atributo runat="server".
O exemplo a seguir mostra uma capa de controle padro para um controle
Button, define a cor e a fonte para todos os controles Button no tema:
<asp:Button runat="server"
BackColor="Red"
ForeColor="White"
Font-Name="Arial"
Font-Size="9px" />

Observao
Uma maneira conveniente para criar uma capa adicionar o controle a uma pgina e configur-la de
modo que ele tenha a aparncia desejada. Por exemplo, voc pode adicionar um controle Calendar a uma
pgina e definir seu cabealho do dia, data selecionada e outras propriedades. Em seguida, voc pode
copiar a definio de controle da pgina em um arquivo de capa e remover o atributo ID.
3.

Repita as etapas 2 e 3 para cada capa de controle que voc deseja criar.
Observao
Voc pode definir apenas uma capa padro por controle. Use o atributo SkinID na declarao do controle
da capa para criar uma capa nomeada que voc pode aplicar s instncias de um controle especfico.

COMO: Aplicar temas ASP.NET


Voc pode aplicar temas a uma pgina, um site da Web ou globalmente. Definindo
um tema no nvel do site da Web aplica estilos e capas a todas as pginas e
controles no site, a menos que voc substitua um tema para uma pgina individual.
Se definir um tema no nvel da pgina aplica estilos e capas a essa pgina e todos
os seus controles.
Por padro, temas substituem as configuraes do controle local. Como alternativa,
voc pode definir um tema como um tema de folha de estilos para que o tema se
aplique somente a controlar as configuraes que no so explicitamente definidas
no controle.

Temas no ASP.NET (Visual Studio)

80

Para aplicar um tema a um site da Web

1.

No arquivo Web.config do aplicativo, definida o elemento < pginas > com o


nome do tema, ou um tema global ou um tema de pgina, conforme mostrado
no exemplo a seguir:

2.
3.
4.
5.

<configuration>
<system.web>
<pages theme="ThemeName" />
</system.web>
</configuration>

Observao
Se um tema de aplicativo tem o mesmo nome de um tema de aplicativo global, o tema da pgina ter
prioridade.
6.

Para definir um tema como um estilo de tema de planilha e ser subordinado


as configuraes do controle local), defina o atributo StyleSheetTheme em
vez disso:

7.
<configuration>
8.
<system.web>
9.
<pages StyleSheetTheme="Themename" />
10.
</system.web>
</configuration>

Uma configurao tema no arquivo Web.config se aplica a todas as pginas da Web


ASP.NET no aplicativo. Configuraes de tema no arquivo Web.config seguem
convenes de hierarquia de configurao normal. Por exemplo, para aplicar um
tema a apenas um subconjunto de pginas, voc pode colocar as pginas em uma
pasta com seu prprio arquivo Web.config ou criar um elemento < location > no
arquivo Web.config raiz para especificar uma pasta. Para obter detalhes, consulte
Configurando arquivos especficos e subpastas.
Para aplicar um tema a uma pgina individual

Definir o atributo Theme ou StyleSheetTheme da diretiva @


nome do tema a usar, como mostrado no exemplo a seguir:

<%@ Page Theme="ThemeName" %>


<%@ Page StyleSheetTheme="ThemeName" %>

Page com o

O tema e seus estilos correspondentes e capas agora se aplicam somente


pgina declarada.
Aplicando capas a controles

Capas definidas no seu tema se aplicam a todas as ocorrncias do controle no


aplicativo ou pginas ao qual o tema aplicado. Em alguns casos, convm aplicar
um conjunto especfico de propriedades a um controle individual. Voc pode fazer
isto criando uma capa nomeada (uma entrada em um arquivo.skin que tenha uma
propriedade SkinID definida) e depois aplic-la pela identificao aos controles
individuais. Para obter detalhes sobre como criar capas nomeadas, consulte Como
definir temas ASP.NET:.
Para aplicar uma capa nomeada a um controle

Definir a propriedade do controle SkinID como mostrado no exemplo a


seguir:

Temas no ASP.NET (Visual Studio)

81

<asp:Calendar runat="server" ID="DatePicker" SkinID="SmallCalendar" />

Se o tema da pgina no incluir uma capa controle que corresponda a


propriedade SkinID, o controle usa a capa padro para esse tipo de controle.

COMO: Desativar temas ASP.NET


Voc pode configurar uma pgina ou controle para ignorar temas. Temas
substituem as configuraes locais para a aparncia da pgina e controle por
padro. Desativar esse comportamento til quando um controle ou pgina j tem
uma aparncia predefinida que voc no deseja que o tema a substitua.
Observao
Voc pode dar prioridade para controlar as configuraes na pgina atual, aplicando um tema como um
tema de folha de estilos. Nesse caso, o tema usado para definir propriedades que no tm configuraes
locais, mas configuraes locais explcitas tm prioridade. Para obter detalhes, consulte COMO: Aplicar
temas ASP.NET.
Para desativar temas para uma pgina

Defina o atributo EnableTheming da diretiva @ PAGE como false, como


no exemplo:
<%@ Page EnableTheming="false" %>

Para desativar temas para um controle

Defina a propriedade EnableTheming do controle como false, como no


exemplo:
<asp:Calendar id="Calendar1" runat="server" EnableTheming="false" />

COMO: Aplicar temas ASP.NET por Programao


Alm de especificar preferncias de tema e de capa em declaraes da pgina e
arquivos de configurao, voc pode aplicar temas programaticamente. Voc pode
definir os temas de pgina e temas de folha de estilo programaticamente;
entretanto, o procedimento para aplicao de cada tipo de tema diferente.
Para aplicar um tema de pgina programaticamente

Em um manipulador para mtodo PreInit da pgina, defina a propriedade


Theme da pgina.
O exemplo de cdigo a seguir mostra como definir o tema de uma pgina com
base condicionalmente em um valor passado em uma seqncia de caracteres
de consulta.
C#
Protected void Page_PreInit(object sender, EventArgs e)
{
switch (Request.QueryString["theme"])
{

Temas no ASP.NET (Visual Studio)

82

case "Blue":
Page.Theme = "BlueTheme";
break;
case "Pink":
Page.Theme = "PinkTheme";
break;
}
}
Para aplicar um tema de folha de estilo programaticamente

No cdigo da pgina, substitua a propriedade StyleSheetTheme e no


acessador get, retorne o nome do tema de folha de estilos.
O exemplo de cdigo a seguir mostra como definir um tema denominado
BlueTheme como o tema de folha de estilo para uma pgina:
C#
public override String StyleSheetTheme
{
get { return "BlueTheme "; }
}

Para aplicar capas de controle programaticamente

Em um manipulador para mtodo PreInit da pgina, defina a propriedade


SkinID do controle.
O exemplo de cdigo a seguir mostra como definir uma propriedade SkinID de
um controle Calendar.
C#
void Page_PreInit(object sender, EventArgs e)
{
Calendar1.SkinID = "MySkin";
}

Temas no ASP.NET (Visual Studio)

83

Você também pode gostar