O Gua Prático ASP - Net Com SQL Server 2008

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

PEDRO REMOALDO

Portugal/2008

Microsoft is a registered trademark of Microsoft Corporation in the United States


and/or other countries and is used by Centro Atlntico under license from owner. O
Guia Prtico do ASP.NET com SQL Server 2008 is an independent publication not
affiliated with Microsoft Corporation.

Reservados todos os direitos por Centro Atlntico, Lda.


Qualquer reproduo, incluindo fotocpia, s pode ser feita com autorizao expressa dos editores da obra.

O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008


Coleco: Tecnologias
Autor:

Pedro Remoaldo

Direco grfica: Centro Atlntico


Reviso tcnica: Centro Atlntico
Capa: Paulo Buchinho
Centro Atlntico, Lda., 2008
Ap. 413 4764-901 V. N. Famalico
Rua da Misericrdia, 76 1200-273 Lisboa
Portugal
Tel. 808 20 22 21

[email protected]
www.centroatlantico.pt
Impresso e acabamento: Inova
1 edio: Outubro de 2008
ISBN: 978-989-615-070-9
Depsito legal:
/08

Marcas registadas: Todos os termos mencionados neste livro conhecidos como sendo marcas
registadas de produtos e servios foram apropriadamente capitalizados. A utilizao de um termo neste livro no deve ser encarada como afectando a validade de alguma marca registada
de produto ou servio.
O Editor e os Autores no se responsabilizam por possveis danos morais ou fsicos causados
pelas instrues contidas no livro nem por endereos Internet que no correspondam s Home-Pages pretendidas.

ndice
PREFCIO

13

Introduo .......................................................................................................... 13
Pblico-alvo e pr-requisitos .................................................................................. 14
Caractersticas principais do livro........................................................................... 14
Convenes usadas............................................................................................... 14
Viso geral e Organizao ..................................................................................... 15

SOBRE O AUTOR

17

1 DESENVOLVIMENTO DE SITES WEB

19

1.1 Pginas estticas ............................................................................................. 19


1.2 Pginas interactivas ......................................................................................... 20
1.3 Tecnologias client-side..................................................................................... 21
1.4 Pginas dinmicas ........................................................................................... 22
1.4.1 Metodologia das trs camadas ......................................................................... 24
1.4.2 Ambientes de desenvolvimento e produo ..................................................... 25

1.5 A .NET Framework........................................................................................... 26


1.5.1 Arquitectura ...................................................................................................... 27

1.6 ASP.NET.......................................................................................................... 29

2 VISUAL STUDIO E VISUAL WEB DEVELOPER EXPRESS ED. 31


2.1 Visual Studio .................................................................................................... 31
2.2 Visual Web Developer Express Edition ............................................................ 32
2.3 Instalar o Visual Web Developer ...................................................................... 33
2.4 Primeiro arranque ............................................................................................ 37

3 CRIAR UM SITE WEB

41

3.1 Criar um site Web ............................................................................................ 42


3.2 Localizao de sites ......................................................................................... 44
3.2.1 Criar um site Web no File System .................................................................... 44
3.2.2 Criar um site Web IIS local ............................................................................... 46
3.2.3 Criar um site Web IIS remoto............................................................................ 53
3.2.4 Criar um site Web acessvel por FTP ............................................................... 54
3.2.5 Configurao de opes ................................................................................... 56

3.3 Abrir um site existente...................................................................................... 57


3.3.1 Abrir um site recentemente utilizado................................................................. 57
3.3.2 Abrir um site...................................................................................................... 59

CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008

3.4 Fechar projectos e alternar entre projectos ..................................................... 62


3.5 Visual Web Developer e aplicaes IIS ........................................................... 63
3.6 Solution Explorer ............................................................................................. 63
3.6.1 Pastas especiais .............................................................................................. 66

3.7 Pginas Web ASP.NET ................................................................................... 66


3.7.1 Abrir pginas Web ASP.NET ........................................................................... 69

4 AMBIENTE DE TRABALHO

71

4.1 Painis e barras de ferramentas ..................................................................... 75


4.1.1 Painis ............................................................................................................. 75
4.1.2 Barras de ferramentas ..................................................................................... 79
4.1.3 Outros painis .................................................................................................. 79

4.2 Alterar a disposio dos painis ...................................................................... 80


4.2.1 Esconder os painis ......................................................................................... 82
4.2.2 Personalizar as barras de ferramentas ............................................................ 83
4.2.3 Janela Documento ........................................................................................... 85

4.3 Ajuda

.......................................................................................................... 86

5 CONTROLOS WEB E LAYOUT DE PGINAS

89

5.1 TOOLBOX .......................................................................................................... 90


5.1.1 Personalizar a TOOLBOX .................................................................................. 91

5.2 Layout de pginas ........................................................................................... 93


5.2.1 Flow layout ....................................................................................................... 94
5.2.2 Two-Dimensional Positioning ........................................................................... 94
5.2.3 Utilizar os tipos de layout disponveis .............................................................. 95
5.2.4 Rgua e grelha ................................................................................................ 97

5.3 Estrutura de uma pgina ASP.NET ................................................................. 98


5.3.1 Colocar controlos em pginas Web ................................................................. 99

5.4 Controlos HTML .............................................................................................. 99


5.4.1 Tabelas .......................................................................................................... 100
5.4.2 Divs ................................................................................................................ 101
5.4.3 Imagens ......................................................................................................... 102
5.4.4 Links............................................................................................................... 102
5.4.5 Transformar controlos HTML em controlos de servidor ................................. 104

5.5 Web Server Controls ..................................................................................... 104


5.6 Adicionar controlos a partir do Solution Explorer ........................................... 106
5.7 Seleccionar controlos .................................................................................... 107
5.8 Definir as propriedades de um controlo ......................................................... 109

5.8.1 Utilizar o painel PROPERTIES .......................................................................... 109


5.8.2 Utilizar a vista SOURCE ................................................................................... 111
5.8.3 Smart Tags .................................................................................................... 112
5.8.4 Menu FORMAT ................................................................................................ 112
5.8.5 Barras de ferramentas ................................................................................... 112

NDICE

6 CSS

113

6.1 Localizao dos estilos CSS .......................................................................... 113

6.1.1 Estilos inline .................................................................................................... 113


6.1.2 Estilos internos utilizando o elemento <style> ......................................... 117
6.1.3 Estilos externos .............................................................................................. 118

6.2 Trabalhar com estilos CSS ............................................................................ 119

6.2.1 Criar um ficheiro externo de estilos CSS ........................................................ 119


6.2.2 Definir estilos internos .................................................................................... 125
6.2.3 Aplicar estilos CSS ......................................................................................... 130
6.2.4 Mover estilos................................................................................................... 135
6.2.5 Gesto de estilos ............................................................................................ 137

6.3 Opes de personalizao ............................................................................. 137

7 MASTER PAGES, THEMES E SKINS

139

7.1 Centralizar o layout das pginas com master pages...................................... 139


7.1.1 Criar uma master page ................................................................................... 140
7.1.2 Master page exemplo ..................................................................................... 142
7.1.3 Aplicar master pages a content pages............................................................ 155

7.2 Controlar a aparncia com os themes ........................................................... 162

7.2.1 Criar themes ................................................................................................... 162


7.2.2 Adicionar skins a um theme ASP.NET ........................................................... 163
7.2.3 Adicionar folhas de estilo CSS a um theme.................................................... 166
7.2.4 Aplicar themes a pginas, sites e controlos.................................................... 167
7.2.5 Grficos e outros recursos .............................................................................. 169
7.2.6 Themes e master pages ................................................................................. 170

8 ELEMENTOS DE NAVEGAO

171

8.1 Criar um mapa de site .................................................................................... 172


8.2 Site exemplo .................................................................................................. 175
8.3 Identificar o mapa de site ............................................................................... 177
8.4 Criar menus de drop-down e de fly-out controlo MENU ............................... 181
8.4.1 Configurar o menu .......................................................................................... 182

8.5 Criar estruturas em rvore controlo TREEVIEW ............................................ 187

8.5.1 Configurar a TREEVIEW ................................................................................... 187

8.6 Situar o utilizador no site controlo SITEMAPPATH ......................................... 192

9 FORMULRIOS E VALIDAES

195

9.1 Controlos HTML ............................................................................................. 196


9.2 Controlos servidor ASP.NET .......................................................................... 197
9.2.1 Controlo TEXTBOX........................................................................................... 199
9.2.2 Radio buttons.................................................................................................. 201
9.2.3 Checkboxes .................................................................................................... 205
9.2.4 Drop-down lists ............................................................................................... 207

CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008

9.2.5 Campos escondidos ...................................................................................... 211


9.2.6 File uploads .................................................................................................... 212
9.2.7 CALENDAR ....................................................................................................... 212
9.2.8 Controlos de submisso e operao POSTBACK ............................................ 215

9.3 Validao do preenchimento de formulrios ................................................. 217

9.3.1 Controlos de validao .................................................................................. 218


9.3.2 Validao server-side e client-side ................................................................ 219
9.3.3 Propriedades dos controlos de validao ...................................................... 220
9.3.4 Validar o preenchimento de um campo ......................................................... 221
9.3.5 Validar intervalos de valores .......................................................................... 222
9.3.6 Comparar valores .......................................................................................... 223
9.3.7 Validao avanada ....................................................................................... 225
9.3.8 Validation Summary ....................................................................................... 230
9.3.9 Grupos de validao ...................................................................................... 232
9.3.10 Funes de validao personalizadas ......................................................... 233
9.3.11 Criar cdigo personalizado de validao ..................................................... 236
9.3.12 Propriedade ISPOSTBACK ............................................................................. 236
9.3.13 Propriedade ISVALID..................................................................................... 237
9.3.14 Confirmao do preenchimento do formulrio ............................................. 237

10 TRABALHAR COM CDIGO

241

10.1 Directivas ASP.NET .................................................................................... 241

10.1.1 Cdigo ASP.NET design-time ...................................................................... 242

10.2 Modelos de cdigo server-side.................................................................... 243

10.2.1 Cdigo server-side inline.............................................................................. 243


10.2.2 Cdigo server-side code-behind .................................................................. 244
10.2.3 Mudar entre modelos de cdigo server-side ................................................ 244
10.2.4 Escolher um modelo de programao ......................................................... 245

10.3 Eventos ....................................................................................................... 246

10.3.1 Client-scripting ............................................................................................. 248


10.3.2 O ciclo de vida de uma pgina ..................................................................... 249

10.4 Trabalhar com cdigo fonte ......................................................................... 252

10.4.1 Controlar a janela de edio ........................................................................ 253


10.4.2 Utilizar outlining ............................................................................................ 255
10.4.3 Navegar no cdigo ....................................................................................... 258
10.4.4 Word Wrap ................................................................................................... 269
10.4.5 IntelliSense .................................................................................................. 270
10.4.6 Detectar erros de sintaxe ............................................................................. 274
10.4.7 Localizar e substituir texto............................................................................ 276
10.4.8 Formatar o cdigo fonte ............................................................................... 287
10.4.9 Imprimir cdigo ............................................................................................ 292
10.4.10 Outros comandos de ajuda edio de cdigo ......................................... 294
10.4.11 Object browser e Class view ...................................................................... 296
10.4.12 Code Snippets ........................................................................................... 301

NDICE

11 A LINGUAGEM VISUAL BASIC

305

11.1 Variveis e tipos de dados ........................................................................... 305

11.1.1 Declarao de variveis ............................................................................... 306


11.1.2 Nomes de variveis ...................................................................................... 306
11.1.3 Tipos de dados ............................................................................................. 307
11.1.4 Atribuio de valores a variveis .................................................................. 309
11.1.5 Arrays ........................................................................................................... 310
11.1.6 Enumeraes................................................................................................ 312
11.1.7 Converses entre tipos de dados ................................................................. 313

11.2 Comentrios ................................................................................................. 314


11.3 Operaes sobre variveis .......................................................................... 314
11.3.1 Operaes matemticas ............................................................................... 314
11.3.2 Operaes sobre strings ............................................................................... 316

11.4 Terminao de linhas ................................................................................... 316


11.5 Estruturas de controlo .................................................................................. 316
11.5.1 Lgica condicional ........................................................................................ 317
11.5.2 Bloco If...Then...End If............................................................. 318
11.5.3 Bloco SelectCase ............................................................................... 319
11.5.4 Ciclos ............................................................................................................ 320
11.5.5 Esfera de aco ............................................................................................ 323

11.6 Funes, subrotinas e mtodos ................................................................... 324


11.6.1 Parmetros ................................................................................................... 325

11.7 Programao orientada para objectos ......................................................... 326


11.7.1 Uma classe simples ...................................................................................... 327
11.7.2 Criar um objecto ........................................................................................... 329
11.7.3 Membros Shared e Instance ......................................................................... 330
11.7.4 Adicionar propriedades ................................................................................. 330
11.7.5 Adicionar um mtodo .................................................................................... 333
11.7.6 Adicionar um constructor .............................................................................. 333
11.7.7 Adicionar um evento ..................................................................................... 335

11.8 .NET types ................................................................................................... 338


11.8.1 Namespaces e assemblies ........................................................................... 338
11.8.2 Utilizar namespaces ..................................................................................... 339
11.8.3 Importar namespaces ................................................................................... 340
11.8.4 Assemblies ................................................................................................... 341

11.9 Manipulao de objectos ............................................................................. 341


11.9.1 O tipo STRING................................................................................................ 342
11.9.2 Os tipos DATETIME e TIMESPAN .................................................................... 344
11.9.3 O tipo ARRAY................................................................................................. 347

12 EXECUTAR PGINAS E LIDAR COM ERROS

351

12.1 Testar pginas ............................................................................................. 351


12.1.1 Ver pginas individuais no browser .............................................................. 351
12.1.2 Executar o site sem depurar erros ................................................................ 353

10

CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008

12.1.3 Executar o site com depurao de erros ..................................................... 354


12.1.4 Definir uma pgina de incio......................................................................... 358

12.2 Erros ........................................................................................................ 360


12.2.1 Tipos de erros .............................................................................................. 360
12.2.2 Apresentao de erros no Visual Web Developer ....................................... 361
12.2.3 Erros de runtime .......................................................................................... 365

12.3 Localizar e corrigir erros .............................................................................. 367

12.3.1 Activar o debugging ..................................................................................... 367


12.3.2 Breakpoints .................................................................................................. 367
12.3.3 Painis de debugging .................................................................................. 372
12.3.4 Rastreamento (tracing) ................................................................................ 376

12.4 Tratamento de erros .................................................................................... 383

12.4.1 Excepes ................................................................................................... 384


12.4.2 Tratamento de erros em Visual Basic .......................................................... 385
12.4.3 Procedimentos PAGE_ERROR ou ONERROR ................................................. 392
12.4.4 Pgina de erro especfica ............................................................................ 395
12.4.5 Tratar erros ao nvel da aplicao................................................................ 396
12.4.6 Pgina de erro standard ao nvel da aplicao ............................................ 398
12.4.7 Erros ao nvel do servidor Web .................................................................... 403
12.4.8 Informao importante ................................................................................. 405

13 CONFIGURAO DE APLICAES

407

13.1 Ficheiros de configurao ........................................................................... 407

13.1.1 Segurana de acesso aos ficheiros ............................................................. 409

13.2 Web.config .................................................................................................. 409


13.2.1 Estrutura ...................................................................................................... 409
13.2.2 Acesso programtico ................................................................................... 411

13.3 ASP.NET Web Site Administration Tool ...................................................... 412


13.4 Ficheiro Global.asax .......................................................................... 414

14 BASES DE DADOS E SQL SERVER

417

14.1 SQL Server.................................................................................................. 417


14.2 SQL Server Express .................................................................................... 418
14.2.1 Instalar o SQL Server Express..................................................................... 418
14.2.2 Ferramentas de gesto do SQL Express ..................................................... 424
14.2.3 SQL Server Management Studio Basic ....................................................... 425

14.3 Bases de dados SQL Server ....................................................................... 428

14.3.1 Objectos da base de dados ......................................................................... 429


14.3.2 Criar bases de dados e tabelas ................................................................... 430
14.3.3 Bases de dados exemplo ............................................................................. 437

14.4 SQL

........................................................................................................ 445

14.4.1 SQL no Management Studio Basic .............................................................. 445


14.4.2 Linguagem SQL ........................................................................................... 449

14.5 SQLCMD Trabalhar com a linha de comandos ........................................ 452

11

NDICE

14.6 Visual Web Developer.................................................................................. 458


14.6.1 Adicionar uma ligao a uma base de dados ............................................... 458
14.6.2 Criar bases de dados .................................................................................... 461
14.6.3 Alterar a estrutura da base de dados............................................................ 462
14.6.4 Ver dados e modificar bases de dados......................................................... 464

15 ADO.NET

469

15.1 Arquitectura .................................................................................................. 470

15.1.1 DATA PROVIDERS ........................................................................................... 473

15.2 Ligaes a fontes de dados ......................................................................... 474


15.2.1 Ficheiro web.config .............................................................................. 476
15.2.2 Bases de dados attached ............................................................................. 478

15.3 Execuo de comandos SQL ....................................................................... 479


15.3.1 Extrair um nico valor ................................................................................... 480
15.3.2 Extrair vrias linhas ...................................................................................... 481
15.3.3 Preencher uma DROPDOWNLIST ................................................................... 484

15.4 Inserir, alterar dados e alterar a estrutura da base de dados ....................... 485
15.4.1 Adicionar novas linhas a uma tabela ............................................................ 486
15.4.2 Actualizar valores e eliminar linhas............................................................... 488

15.5 DATAADAPTERS e DATASETS ......................................................................... 494


15.5.1 Criar, preencher e percorrer objectos DATASET............................................ 495
15.5.2 Atribuir valores DATATABLE a controlos DROPDOWNLIST .............................. 497
15.5.3 Inserir, actualizar e eliminar linhas................................................................ 500

16 ACESSO A DADOS COM CONTROLOS DATABOUND

505

16.1 Utilizar fontes de dados (data sources) ........................................................ 506


16.1.1 Configurar fontes de dados (data sources)................................................... 511

16.2 Apresentar informao da base de dados ................................................... 517

16.2.1 Controlos DROPDOWNLIST e LISTBOX ........................................................... 519


16.2.2 Controlo GRIDVIEW ....................................................................................... 526
16.2.3 Controlo DETAILSVIEW................................................................................... 544
16.2.4 Controlo DATALIST ........................................................................................ 549
16.2.5 Controlo REPEATER ....................................................................................... 557
16.2.6 Controlo LISTVIEW ......................................................................................... 561

17 MANIPULAO DE DADOS

577

17.1 Fontes de dados .......................................................................................... 577


17.1.1 Mtodos e eventos ....................................................................................... 580

17.2 Inserir dados ................................................................................................ 581

17.2.1 Controlo FORMVIEW ...................................................................................... 581


17.2.2 Outros controlos ........................................................................................... 586
17.2.3 Inserir dados utilizando formulrios .............................................................. 587

17.3 Alterao de dados ...................................................................................... 589


17.3.1 Utilizao de um controlo GRIDVIEW ............................................................. 589

12

CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008

17.3.2 Combinar GRIDVIEWS com FORMVIEWS ....................................................... 594


17.3.3 Confirmao da eliminao de registos de dados ....................................... 598
17.3.4 Actualizar dados utilizando formulrios ........................................................ 600
17.3.5 Controlo de acesso concorrencial ................................................................ 600

17.4 Controlo LISTVIEW........................................................................................ 603


17.5 Obter um valor IDENTITY ........................................................................... 605
17.6 Upload de imagens ..................................................................................... 610

17.6.1 Armazenar ficheiros na base de dados........................................................ 616


17.6.2 Downloads de ficheiros ................................................................................ 618

18 GESTO DE ESTADOS

625

18.1 Control State ............................................................................................... 626


18.2 View state .................................................................................................... 627

18.2.1 Aceder ao view state .................................................................................... 628


18.2.2 Desactivar o view state ................................................................................ 629
18.2.3 Tornar o view state seguro........................................................................... 630
18.2.4 Exemplo ....................................................................................................... 631

18.3 Transferir informao entre pginas ............................................................ 633

18.3.1 Cross-Page Posting ..................................................................................... 633


18.3.2 Querystring .................................................................................................. 639

18.4 Cookies ....................................................................................................... 646


18.4.1 Esfera de aco dos cookies ....................................................................... 650
18.4.2 Cookies e segurana ................................................................................... 651
18.4.3 Determinar se um browser aceita cookies ................................................... 652

18.5 Session State .............................................................................................. 652

18.5.1 Controlo de sesses .................................................................................... 653


18.5.2 Utilizar o session state ................................................................................. 653
18.5.3 Configurao do session state ..................................................................... 654
18.5.4 Ficheiro Global.asax .......................................................................... 658

18.6 Application state .......................................................................................... 659


18.6.1 Ficheiro Global.asax .......................................................................... 661

19 CONTROLO DE ACESSOS

663

19.1 Configurar os parmetros de segurana ..................................................... 663

19.1.1 Configuraes adicionais ............................................................................. 669

19.2 Adicionar controlos de login ao seu site ...................................................... 670

19.2.1 Controlo LOGIN ............................................................................................. 672


19.2.2 Controlo CREATEUSERWIZARD ..................................................................... 673
19.2.3 Controlos LOGINSTATUS, LOGINNAME e LOGINVIEW ..................................... 675

Prefcio

Introduo
O desenvolvimento de stios Web, partilhado, entre outros, por informticos,
designers, arquitectos de informao e profissionais de marketing, tem sido
uma das actividades que mais alteraes tem sofrido ao longo dos seus poucos anos de existncia. As pginas Web foram sempre evoluindo, passando
de estticas para interactivas e depois para dinmicas, podendo ser personalizadas para cada visitante do site e suportadas por sofisticados acessos a
bases de dados.
A Microsoft, embora tendo entrado tardiamente no negcio da Internet, cedo
tentou recuperar o tempo perdido. Com o aparecimento das Active Server
Pages (ASP), os programadores Windows passaram a ter uma tecnologia
ideal para a criao de sites Web dinmicos. No contente com este sucesso,
a Microsoft resolveu reinventar os ambientes de desenvolvimento de aplicaes, lanando no incio da dcada a .NET Framework.
O ASP.NET representa a aplicao desta framework ao desenvolvimento de
pginas Web e de web services, sendo uma verdadeira revoluo relativamente s Active Server Pages. E com cada nova verso do ASP.NET e da
.NET Framework a Microsoft tem apresentado melhorias significativas.
Mas sem um ambiente integrado de desenvolvimento, seria muito complicada
a criao de sites Web utilizando o ASP.NET. Para resolver esse problema a
Microsoft disponibiliza o Visual Studio e o Visual Web Developer, verdadeiros
IDE (Integrated Development Environment) que possuem todas as ferramentas que um web developer pode necessitar.
Finalmente, a utilizao de bases de dados para a produo de sites Web
dinmicos ficou mais facilitada com a disponibilizao do SQL Server Express,
uma verso gratuita do SQL Server. Considerado um dos melhores sistemas
de gesto de bases de dados existentes no mercado, o SQL Server, na sua
verso Express, uma soluo poderosa para o desenvolvimento Web.

14

CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008

Pblico-alvo e pr-requisitos
Este livro destinado a todos os web developers, existentes ou potenciais,
que pretendam utilizar tecnologias recentes na criao de stios Web interactivos e dinmicos. especialmente orientado para os web developers que utilizem tecnologias Microsoft.
Embora seja recomendada alguma experincia ao nvel do desenho de pginas Web, da utilizao de linguagens de programao e da manipulao de
bases de dados, o livro pretende ser acessvel a qualquer pessoa que tenha
interesse no desenvolvimento de stios Web.

Caractersticas principais do livro


Neste livro todos os captulos tentam ter uma componente prtica, mesmo
aqueles em que so apresentadas, de forma mais terica, as tecnologias que
vo ser utilizadas.
Existem diversos projectos prticos, do tipo exerccio guiado, em que o leitor
pode reproduzir, passo-a-passo, a demonstrao ou projecto a desenvolver.
Todos os captulos encontram-se profusamente ilustrados. Este aspecto
considerado fundamental de forma a melhor guiar o leitor na reproduo dos
passos a efectuar em cada projecto.
Os ficheiros dos exemplos prticos encontram-se disponveis para os leitores.
Veja na pgina 18 como pode ter acesso a esses ficheiros.

Convenes usadas
Este livro utiliza diversas convenes com vista a facilitar a assimilao da
informao:
Termos em ingls so apresentados, de uma forma geral, em itlico:
" ... que definem propriedades para estilos inline e para o atributo ..."
"... redimensionar o controlo recorrendo s respectivas handles."
O cdigo encontra-se formatado em Courier New:
Try
paises.Items.Clear()
While dr1.Read()
paises.Items.Add(dr1.GetSQLString(0))
End While

15

PREFCIO

As alteraes a serem efectuadas no cdigo so assinaladas a negrito:


paises.Items.Clear()
paises.Items.Add("-- Seleccione um pas --")
While dr1.Read()
paises.Items.Add(rdr1.GetSQLString(0))
End While

O acesso a opes de menus ou de caixas de dilogo formatado em


letras maisculas pequenas. O carcter ">" utilizado para separar o
menu da opo:
"... o ideal definir uma classe recorrendo opo FORMAT > NEW
STYLE, atribuindo ..."

Combinaes de teclas so identificadas atravs do carcter "+". Por


exemplo, CTRL+TAB significa pressionar a tecla "Control" e, mantendo
esta tecla premida, de seguida premir a tecla Tab, soltando depois as
duas teclas.

Viso geral e Organizao


Este livro est organizado em dezanove captulos:
Captulo 1 Desenvolvimento de sites Web. Conceitos sobre pginas estticas, interactivas e dinmicas, e sobre as tecnologias e metodologias utilizadas no desenvolvimento de pginas e sites Web.
Captulo 2 Visual Studio e Visual Web Developer Express Edition. Apresentao dos ambientes integrados de desenvolvimento que
so disponibilizados pela Microsoft. Processo de instalao do Visual
Web Developer Express Edition.
Captulo 3 Criar um site Web. Descreve a definio e gesto de
sites no Visual Web Developer, a gesto de ficheiros e as pastas
especiais.
Captulo 4 Ambiente de trabalho. Apresenta o ambiente de trabalho do Visual Web Developer.
Captulo 5 Controlos Web e layout de pginas. Aborda a utilizao de controlos em pginas Web e o layout desses controlos nas
pginas.
Captulo 6 CSS. Demonstra como que o Visual Web Developer
pode ser utilizado para aplicar estilos CSS a pginas Web.
Captulo 7 Master Pages, Themes e Skins. Explica a utilizao de
modelos/templates no ASP.NET, bem como outros processos para
consolidar e centralizar a aparncia das pginas de um site.

16

CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008

Captulo 8 Elementos de navegao. Enumera os controlos que


podem ser utilizados para a criao de elementos de navegao dos
sites.
Captulo 9 Formulrios e validaes. Apresenta os controlos que
so utilizados na criao de formulrios de introduo de dados, bem
como os mecanismos de validao do preenchimento desses formulrios.
Captulo 10 Trabalhar com cdigo. Explica as funcionalidades
existentes no Visual Web Developer que facilitam a vida ao web developer na produo de cdigo para pginas ASP.NET.
Captulo 11 A linguagem Visual Basic. Introduz a linguagem Visual
Basic, apresentando a respectiva sintaxe, a utilizao de variveis, as
estruturas de controlo do fluxo de programa, os operadores e as funes, entre outros assuntos. Aborda-se tambm a programao
orientada para objectos e os diversos objectos internos da .NET Framework.
Captulo 12 Executar pginas e lidar com erros. Explica o processamento de pginas ASP.NET e o tratamento e depurao de erros.
Captulo 13 Configurao de aplicaes. Aborda os ficheiros de
configurao existentes nos sites Web ASP.NET que permitem personalizar o respectivo comportamento e as funcionalidades disponibilizadas.
Captulo 14 Bases de dados e SQL Server. Introduz o SQL Server
Express, a sua instalao e administrao, bem como a linguagem
SQL que utilizada para interagir com as bases de dados.
Captulo 15 ADO.NET. Apresenta a tecnologia de acesso a dados
da .NET Framework, que permite a extraco e manipulao de dados
provenientes de bases de dados e de outras fontes de dados.
Captulo 16 Acesso a dados com controlos databound. Descreve
e exemplifica a utilizao dos controlos especiais do ASP.NET para o
acesso a fontes de dados.
Captulo 17 Manipulao de dados. Descreve e exemplifica a
utilizao dos controlos especiais do ASP.NET para a insero, alterao e eliminao de dados.
Captulo 18 Gesto de estados. Aborda os mecanismos de gesto
de estados que permitem controlar a interaco dos visitantes com um
site.
Captulo 19 Controlo de acessos. Faz uma abordagem introdutria
problemtica de controlo de acessos a sites atravs de mecanismos
de autenticao, recorrendo a controlos servidor ASP.NET.

Sobre o Autor

Pedro Remoaldo
Pedro Remoaldo licenciado em Informtica, formador e consultor em sistemas
e tecnologias de informao com perto de uma dcada de experincia como
docente no ensino superior.
Autor de 16 livros sobre sistemas operativos, software aplicacional, Internet,
desenvolvimento Web e segurana, dos quais os 9 ttulos mais recentes foram
publicados pelo Centro Atlntico.
Os seus interesses so bastante abrangentes, mas atribui particular ateno s
tecnologias Internet, aos sistemas de gesto de bases de dados e ao Business
Intelligence.

17 Manipulao de dados

A maior parte dos rich data controls do ASP.NET, como a GRIDVIEW ou a


LISTVIEW, permite a manipulao de dados, isto , a insero, alteraes e
eliminao de registos de dados. Porm, nem todos os controlos permitem
efectuar essas operaes de uma forma fcil.
Estes controlos necessitam de um controlo SQLDATASOURCE associado para
poderem manipular dados numa fonte de dados. So estes controlos que
efectuam a interaco com a fonte de dados (SQL Server) quando solicitados
pelos rich data controls.

17.1 Fontes de dados


Os controlos SQLDATASOURCE so fundamentais na insero, alterao e eliminao de registos de dados. Mas tm de ser configurados nesse sentido, o
que efectuado clicando no boto ADVANCED, do ecr CONFIGURE THE SELECT
STATEMENT, e activando a opo GENERATE INSERT, UPDATE, AND DELETE
STATEMENTS:

610

CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008

Neste mtodo apenas apresentamos uma mensagem ao visitante da pgina a


inform-lo sobre o cdigo do livro produzido. Mas podemos utilizar agora este
valor para efectuar outro tipo de operaes.

17.6 Upload de imagens


A possibilidade de transferir ficheiros para um site (em ingls, file upload)
muito apreciada nomeadamente nos sistemas de gesto de contedos.
tambm utilizada em sites de webmail, como o Google Mail ou o HotMail, para
enviar ficheiros anexados a mensagens.
Existem dois controlos no painel TOOLBOX que permitem este upload de ficheiros:
Controlo INPUT (FILE) disponvel na categoria HTML;
Controlo FILEUPLOAD da categoria STANDARD;
Visualmente os dois controlos possuem a mesma aparncia:

Um controlo de upload assim constitudo por uma caixa de texto e um boto.


Estes elementos no possuem grande formatao e mesmo o texto que aparece no boto depende do browser, do sistema operativo e da lngua utilizada
pelo visitante.
Quando o visitante da pgina clica no boto BROWSE/PROCURAR aparece uma
caixa de dilogo que lhe permite seleccionar o ficheiro que pretende transferir.
O visitante tambm pode preencher manualmente a caixa de texto com a localizao do ficheiro. Porm, o contedo da caixa de texto no pode ser preenchida programaticamente, nem por ASP.NET nem por JavaScript.
possvel utilizar o controlo HTML (INPUT (FILE)) para fazer o upload, mas
para poder manipular o controlo em cdigo teremos de o converter para um
controlo de servidor, acrescentando o seguinte atributo:
<input id="File1" type="file" runat="server" />

Mas o ideal utilizar o controlo servidor FILEUPLOAD. De qualquer forma este


controlo convertido no controlo INPUT (FILE)) de HTML quando a pgina
enviada para o visitante.
A presena deste controlo numa pgina Web faz com que o ASP.NET acrescente o atributo enctype ao elemento form:
<form name="form1" method="post" action="Upload.aspx"
id="form1" enctype="multipart/form-data">

17. MANIPULAO DE DADOS

611

Este atributo enctype possui, por omisso, o valor application/x-wwwform-urlencoded, que um tipo de codificao ineficiente para enviar
grandes quantidades de dados binrios, ou texto que contenha caracteres
no-ASCII. Por isso que se utiliza o tipo de codificao multipart/formdata que contm uma srie de partes (da o nome), cada uma das quais se
refere a um controlo do formulrio.
Quando o formulrio submetido, o servidor recebe o(s) ficheiro(s) e cabe ao
cdigo ASP.NET examinar, ignorar ou guardar esse(s) ficheiro(s). Pode-se
guardar os ficheiros em disco ou numa base de dados.
No servidor, para obtermos informao sobre o ficheiro submetido temos de
utilizar a classe FILEUPLOAD e as seguintes propriedades:
FILEBYTES contedo do ficheiro como um array de bytes.
FILECONTENT contedo do ficheiro como uma stream, permitindo assim a sua leitura.
FILENAME nome original do ficheiro.
HASFILE devolve TRUE se um ficheiro tiver sido transferido, ou FALSE
caso contrrio.
POSTEDFILE permite aceder a um objecto HTTPPOSTEDFILE que possui informao sobre um ficheiro transferido.
Utilizando a propriedade POSTEDFILE temos acesso a propriedades adicionais
sobre o ficheiro transferido:
CONTENTLENGTH tamanho do ficheiro em bytes.
CONTENTTYPE MIME type do ficheiro transferido, isto , o tipo de
ficheiro (imagem, documento, etc.)
FILENAME fully qualified name do ficheiro, isto , o nome do ficheiro
bem como a sua localizao completa no computador do visitante, do
tipo c:\ficheiros\imagens\ca.gif
INPUTSTREAM Permite obter o contedo do ficheiro como uma
stream, permitindo assim a sua leitura.
A classe HTTPFILECOLLECTION disponibiliza acesso, como uma coleco de
ficheiros, a todos os ficheiros que so transferidos. Caso a pgina permita a
transferncia de mais de um ficheiro (recorrendo a vrios controlos FILEUPLOAD), ento esta coleco pode ser percorrida para obter informao sobre
cada um dos ficheiros. Por exemplo:
Dim listaFicheiros As HttpFileCollection = Request.Files
For Each ficheiro As String In listaFicheiros.AllKeys
' Se o ficheiro no tiver tamanho 0
If (listaFicheiros(ficheiro).ContentLength > 0) Then
' Fazer algo com o ficheiro

612

CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008

' Obtm-se o nome do ficheiro (incluindo pasta)


' utilizando listaFicheiros(ficheiro).FileName
...
End If
Next

Normalmente a operao mais efectuada no servidor armazenar o ficheiro


numa pasta especfica. Para isso utiliza-se o mtodo SAVEAS:
ElementoFileUpload.SaveAs(pasta/nomeficheiro))
Mas antes de invocar este mtodo conveniente utilizar a propriedade
HASFILE para verificar se o controlo FILEUPLOAD possui um ficheiro para
transferir com um tamanho superior a 0KB. Caso isso no acontea, podemos
ignorar a transferncia ou apresentar ao visitante uma mensagem informando-o do ocorrido.
Este cdigo normalmente colocado no event handler associado ao evento
CLICK do boto que submete o formulrio:
Protected Sub btInserir_Click(ByVal sender As Object, ByVal e
As System.EventArgs) Handles btInserir.Click
If (fuFicheiro.HasFile) Then
Dim nome_ficheiro As String = Server.MapPath("fich") &
"/" & fuFicheiro.FileName
fuFicheiro.SaveAs(nome_ficheiro)
Else
lblMensagem.Text = "No foi especificado nenhum
ficheiro para ser transferido."
End If
End Sub

Um dos problemas que podemos aqui encontrar o facto de na pasta fich


poder j existir um ficheiro com o mesmo nome que pretendemos atribuir. Uma
forma de resolver este problema gerar um nome baseado na identificao do
utilizador, na hora e data corrente ou em valores aleatrios (por exemplo, utilizando a estrutura GUID).
Por exemplo:
If (fuFicheiro.HasFile) Then
Dim nomeTemporario As String
Dim pasta As String = Server.MapPath("fich") & "/"
Dim nome_ficheiro As String = fuFicheiro.FileName
Dim pastaFicheiro As String = pasta & nome_ficheiro
If (System.IO.File.Exists(pastaFicheiro)) Then
Dim contador As Integer = 1
While (System.IO.File.Exists(pastaFicheiro))
nomeTemporario = contador.ToString() &
nome_ficheiro
pastaFicheiro = pasta + nomeTemporario
contador = contador + 1
End While

17. MANIPULAO DE DADOS

613

pastaFicheiro = pasta & nomeTemporario


End If
fuFicheiro.SaveAs(pastaFicheiro)
Else
...

Neste caso utilizamos um valor inteiro (1, 2, 3, ...) que colocamos no incio do
nome original. Teremos assim nomes do tipo 1computador.gif,
2computador.gif, etc. O mtodo SYSTEM.IO.FILE.EXISTS permite determinar
se um dado ficheiro existe numa pasta do disco.
Outra possibilidade a testar apenas aceitar determinados tipos de ficheiros.
No exemplo seguinte criamos uma funo que apenas permite a transferncia
de imagens:
Private Function TipoFicheiro(ByVal nomeficheiro As String) As
Boolean
Dim extensao As String =
System.IO.Path.GetExtension(nomeficheiro)
Select Case extensao.ToLower()
Case ".gif", ".png", ".jpg", ".jpeg"
Return True
Case Else
lblMensagem.Text = "O ficheiro transferido no
uma imagem!"
Return False
End Select
End Function

Para invocar a funo:


Dim pastaFicheiro as String = pasta & nome_ficheiro
Dim nome_ficheiro as String = fuFicheiro.FileName
If (TipoFicheiro(nome_ficheiro)) Then
...
ficheiro.SaveAs(pastaFicheiro)

Em vez de extrairmos a extenso do ficheiro o mais adequado obter o respectivo MIME type recorrendo propriedade CONTENTTYPE:
Private Function TipoFicheiro(ByVal tipo As String) As Boolean
Select Case tipo
Case "image/gif", "image/png", "image/x-png",
"image/jpeg", "image/pjpeg"
Return True
Case Else
lblMensagem.Text = "O ficheiro transferido no
uma imagem!"
Return False
End Select
End Function
...
Dim pastaFicheiro as String = pasta & nome_ficheiro
Dim nome_ficheiro as String = ficheiro.FileName

614

CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008

Dim MIMEType as String = ficheiro.PostedFile.ContentType;


If (TipoFicheiro(MIMEType.ToString())) Then
...
ficheiro.SaveAs(pastaFicheiro)
Else
lblMensagem="O ficheiro transferido no do tipo
autorizado!"
End If

Na funo TipoFicheiro utilizam-se os MIME type image/pjpeg e


image/x-png, alm dos tradicionais MIME types associados s imagens
permitidas em sites, porque assim que o Internet Explorer identifica as imagens do tipo JPEG e PNG, respectivamente
Como bvio, convm tambm efectuar este teste utilizando JavaScript, evitando assim uma viagem ao servidor para processar o cdigo ASP.NET.
Dado que se tentarmos guardar um ficheiro no existente ser desencadeada
uma excepo HTTPEXCEPTION, o ideal colocar a invocao do mtodo
SAVEAS dentro de uma estrutura TRY..CATCH..FINALLY, mesmo que utilizemos
todas as validaes apresentadas anteriormente:
Try
fuFicheiro.SaveAs(pastaFicheiro)
Catch Err As Exception
lblMensagem.Text = "Ocorreu um erro na transferncia do
ficheiro!"
End Try

Podemos guardar o ficheiro onde quisermos. Porm, para evitar obter erros
access denied quando se tenta guardar ficheiros directamente numa pasta
da sua aplicao Web, temos de verificar as permisses.
Assegure-se que o directrio virtual no IIS possui permisses de leitura e
escrita. Para guardar um ficheiro no file system do servidor, a conta Windows
associada com a pgina ASP.NET tem de possui permisses suficientes. No
caso do Windows XP (verso 5 do IIS) a conta ASPNET. Nas verses posteriores do IIS (Windows Vista e Windows Server 2003/2008) a conta NETWORK SERVICE.
No Windows Explorer, clique com o boto direito do rato na pasta onde pretende guardar os ficheiros, seleccione a opo PROPERTIES e depois o separador SECURITY. Clique no boto EDIT, depois no boto ADD, escreva NETWORK
SERVICE (ou ASPNET, conforme o sistema operativo) na caixa ENTER THE
OBJECT NAMES TO SELECT, clique em OK, e depois atribua a permisso WRITE
na coluna ALLOW da lista PERMISSIONS FOR NETWORK SERVICE.

17. MANIPULAO DE DADOS

615

Por omisso, o ASP.NET rejeitar um pedido de upload de um ficheiro que


seja maior que cerca de 4MB (4096KB), desencadeando uma exception.
Pode-se alterar este valor mximo atravs da modificao do atributo maxRequestLength do elemento httpRuntime no ficheiro web.config. No
exemplo seguinte aumentmos o tamanho mximo para 8MB. Utiliza-se 8192
porque o valor especificado em kilobytes (KB):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
...
<httpRuntime maxRequestLength="8192"/>
...
</system.web>
</configuration>

Na realidade, o atributo maxRequestLength define o tamanho mximo da


informao que pode ser enviada por um formulrio para o servidor, incluindo
a informao de todos os campos do formulrio. Por isso, o tamanho mximo
de um ficheiro transferido ser ligeiramente inferior ao especificado pelo atributo maxRequestLength.
Pode-se tambm utilizar outro atributo, requestLengthDiskThreshold,
para definir como que o envio do contedo do formulrio (e o ficheiro transferido) buffered para o sistema de ficheiros, para evitar a utilizao da memria para o armazenamento temporrio do ficheiro e da informao transferida.
Quando o tamanho de um ficheiro/informao transferido ultrapassa o valor do
atributo requestLengthDiskThreshold, o resto do ficheiro buffered para

616

CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008

o file system para a pasta Temporary ASP.NET Files (que se encontra na


pasta C:\Windows\Microsoft.NET\Framework\v2.0.50727).
Por omisso, a .NET Framework est configurada para fazer o buffering de
ficheiros (mais concretamente de posts de formulrios) maiores que 80KB. Se
pretender alterar este valor ter de ter em ateno que dever ser inferior ao
valor do atributo maxRequestLength:
<httpRuntime maxRequestLength="8192"
requestLengthDiskThreshold="200"

/>

Se possuir um valor do atributo maxRequestLength demasiado alto pode


sofrer um ataque denial-of-service atravs do envio de mensagens com grandes ficheiros, tornando o seu servidor muito lento ou mesmo parando-o.

17.6.1 Armazenar ficheiros na base de dados


Embora o armazenamento de ficheiros no disco do servidor seja muito comum, o web developer pode desejar guardar os ficheiros na base de dados.
Uma das vantagens de armazenar ficheiros em disco que o processo fcil,
bastando invocar o mtodo SAVEAS como vimos anteriormente. Outra vantagem a facilidade de efectuar cpias de segurana de uma pasta. Alm disso,
podem-se efectuar cpias de segurana incrementais.
Como desvantagens, a inexistncia de uma relao directa entre os ficheiros e
os registos na tabela da base de dados. Isto pode trazer problemas quando se
eliminam registos e nos esquecemos de eliminar o ficheiro respectivo. A principal desvantagem so as permisses de acesso e escrita em disco, que
podem ser problemticas quando se aloja o site num ISP.
Relativamente ao armazenamento de ficheiros em bases de dados, evita problemas com permisses de pastas ao nvel do file system alm de que possibilita uma cpia de segurana mais fcil dos dados do site, dado que toda a
informao se encontra num nico stio, isto , na base de dados.
Como desvantagens, a performance mais lenta, mas depende do tipo de
ficheiros armazenados, do servidor e de outros factores. O acesso aos ficheiros tambm uma desvantagem dado que no podemos aplicar um processo
(como escalar ou rodar imagens) a todos os ficheiros, sem primeiro extra-los
da base de dados.
Quando armazena ficheiros na base de dados vulgar armazenar a seguinte
informao sobre o ficheiro:
contedo do ficheiro (tipo de dados image ou varbinary(max));
tipo de ficheiro (tipo de dados varchar);
comprimento em bytes (tipo de dados int);

17. MANIPULAO DE DADOS

617

nome que o ficheiro possua quando foi uploaded (tipo de dados varchar). Pode ser utilizado quando um visitante solicitar posteriormente
o download do ficheiro.
De forma a exemplificarmos a insero de ficheiros em bases de dados SQL,
vamos alterar a estrutura da nossa tabela livros, acrescentando um novo
campo, excerto, do tipo varbinary(MAX), que vai conter um ficheiro PDF
com um excerto de cada livro:

O nosso formulrio de insero de livros tem agora o seguinte aspecto:

Repare que vamos utilizar dois controlos do tipo FILEUPLOAD. No existe limite
relativamente ao nmero de controlos deste tipo que se podem utilizar em
pginas Web, se bem que quantos mais controlos utilizar mais lento ser o
processamento da pgina.
No controlo SQLDATASOURCE associado a este formulrio vamos efectuar a
seguinte alterao ao comando SQL:

618

CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008

O valor a inserir no campo excerto da tabela livros provm da propriedade


FILEBYTES do controlo FILEUPLOAD. Esta propriedade permite obter o contedo
do ficheiro como um array de bytes. No cdigo aparece:
<asp:ControlParameter Name="excerto" ControlID="fuExcerto"
PropertyName="FileBytes" />

Basta invocar o mtodo INSERT do controlo SQLDATASOURCE para inserir os


dados na base de dados incluindo o ficheiro.

17.6.2 Downloads de ficheiros


Agora que j temos os ficheiros armazenados na base de dados necessrio
um procedimento para permitir ao visitante aceder a esses ficheiros.
Vamos arrastar a tabela livros do painel DATABASE EXPLORER para uma
nova pgina. Como j foi anteriormente explicado, esta operao criar um
controlo GRIDVIEW e um controlo SQLDATASOURCE. Este controlo SQLDATASOURCE extrair todas as linhas e todas as colunas da tabela livros,
excepto a coluna excerto dado que do tipo varbinary.
Vamos utilizar um link para possibilitar a transferncia do excerto do livro em
formato PDF. No controlo GRIDVIEW seleccione a opo ADD NEW COLUMN do
respectivo menu de tarefas. Na caixa de dilogo ADD FIELD seleccione
HYPERLINKFIELD da lista CHOOSE A FIELD TYPE:

17. MANIPULAO DE DADOS

619

Se quiser pode introduzir, na caixa HEADER TEXT, o texto que deve aparecer no
cabealho da coluna na GRIDVIEW. A seguir, na rea HYPERLINK TEXT introduza
o texto que pretende que aparea no link:

Finalmente, na rea HYPERLINK URL, seleccione a opo GET URL FROM DATA
e depois seleccione a coluna/campo codlivro na lista:

FIELD

Na caixa URL FORMAT STRING introduzimos:


processaficheiro.ashx?codlivro={0}

Isto significa que sempre que se clicar no link Excerto ser invocada a
pgina processaficheiro.ashx, e passada a essa pgina, como parmetro, o valor da coluna/campo codlivro do livro seleccionado. Neste caso,
o nome do parmetro (codlivro) idntico ao nome da coluna/campo da
tabela livros, mas isso no obrigatrio.
Para enviar para o visitante de um site um ficheiro que est armazenado na
base de dados, temos de recorrer a um ficheiro HTTP Handler (que possui a
extenso .ashx). Para criar um ficheiro deste tipo seleccione a opo FILE >
NEW FILE (ou ADD NEW ITEM no menu de contexto do site no painel SOLUTION
EXPLORER) e, na caixa de dilogo ADD NEW ITEM, seleccione o template

www.centroatlantico.pt

Você também pode gostar