1. Trang chủ
  2. » Công Nghệ Thông Tin

ASP.NET 3.5 em VB.NET e C# doc

212 429 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề ASP.NET 3.5 em VB.NET e C#
Tác giả Fernando Amaral
Trường học Uniderp
Chuyên ngành Computer Science
Thể loại tài liệu hướng dẫn
Năm xuất bản 2008
Thành phố Campo Grande MS
Định dạng
Số trang 212
Dung lượng 5,48 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Já as propriedades são bastante singular em cada linguagem: Você não é obrigado a criar uma classe dentro de um NameSpace.. Public Property Nome As String Get Return Pnome End Get S

Trang 3

Sobre o Autor

Fernando Amaral trabalha a mais de 10 anos com o desenvolvimento de software É certificado Microsoft MCP, MCAD, MCSD, MCDBA e MCT, Comptia CDIA+, Project Managment Institute PMP É Pós Graduado em Gestão de Sistemas de Informação pela Uniderp e em Melhoria de Processo de Software pela UFLA Além disso tudo é Ateu Atualmente reside em Campo Grande MS

Sobre www.fernandoamaral.com.br

Eu mantenho um site com alguns artigos e tutoriais de tecnologia no endereço www.fernandoamaral.com.br Através do site existe um formulário onde posso ser contatado

Trang 4

Sobre ASP.NET 3.5 em VB.NET e C#

Existe muito conteúdo para quem quer aprender ASP.NET Existem centenas de bons livros Porém este curso em formato digital traz algumas características que talvez você não encontre em nenhum lugar:

É completo no sentido que abrange todos os principais temas relacionados ao ASP.NET 3.5;

Segue uma seqüência lógica Você não precisará ficar garimpando informações

em lugares diferentes;

É em português

Porque não um Livro?

Este curso foi criado dentro de minhas possibilidades, de maneira que não precisei assumir nenhum compromisso

Trang 5

ASP.NET 3.5 em VB.NET e C#

1 Introdução ao ASP.NET 7

2 Visual Studio 2008: O ambiente e as linguagens 13

3 Web Forms 31

4 Controle 33

5 Master Page 44

6 Themes e Skins 53

7 Navigation 59

8 WebParts 71

10 LINQ 116

11 MemberShip e Roles 119

12 Manutenção de Estado 153

13 ASP.NET AJAX 167

14 Criando e Consumindo WebServices 179

15 Criando uma página de erros personalizada 188

16 Eventos da aplicação 191

17 Distribuindo sua Aplicação 193

18 Relatórios com Crystal Report 202

Trang 6

1 Introdução ao ASP.NET

Desenvolver aplicações nunca foi tão fácil Ambientes RAD cada vez mais modernos e amigáveis tem tornado o trabalho dos arquitetos de software cada vez mais simples Com o versão 3.5 do ASP.NET, conseguiu-se atingir níveis de produtividade nunca antes imaginados

Este curso tem por objetivo introduzir o desenvolvedor no mundo do desenvolvimento

de aplicações Web utilizando o ASP.NET 3.5 Não é um curso introdutório de lógica de programação

Os exemplos ao longo do curso serão todos demonstrados em VB.NET e C#

Blocos de código serão precedidos pelo ícone da linguagem utilizada:

para código em VB para código em C#

O que é o Microsoft NET FrameWork?

Tradicionalmente o desenvolvedor escreve Software para um sistema Operacional ou dispositivo especifico Por exemplo, ao criar um programa no Delphi 7 ou no Visual Basic 6, ele esta criado um Software para rodar em Sistemas Operacionais Windows sobre a plataforma Intel

Ao desenvolver um software para o NET, o desenvolvedor ao invés disto esta fazendo

um software para rodar em qualquer dispositivo ou plataforma que tenha o NET Framework instalado

Existem dezenas de linguagem que podem ser usadas para criar um programa NET, a Microsoft desenvolveu o VB.NET, uma versão Orientada a Objetos do clássico VB e o C#, que herdou sua sintaxe do C++ Outras empresas desenvolveram outras: COBOL, Delphi, Fortran etc só para citar algumas Você mesmo pode criar sua própria linguagem A escolha entre uma linguagem ou outra é apenas uma questão de sintaxe

Trang 7

Isto é possível porque um programa escrito para NET é compilado em uma linguagem intermediaria chamada MSIL (Microsoft Intermediate Language) Não importa qual linguagem em que você codificou, o resultado, em termos de performance, qualidade, tamanho dos binários etc será o mesmo O arquivo compilado em MSIL normalmente resulta um uma DLL, denominada assembly

Quando o programa for executado pela primeira vez, entre em cena o JIT (Just In Time Compiler), que vai fazer uma nova compilação do programa, desta vez de acordo com

as especificações do sistema operacional e do dispositivo em que o NET Framework se encontra

Desenvolver um sistema para o plataforma NET, traz mais alugmas vantagens além de das ficaram óbvias nesta introdução A mais importante é que o seu programa vai rodar

em um ambiente protegido e especifico, sem ter que se preocupar com as especificações

ou problemas do sistema operacinal Toda a interação com este, como por exemplo, o gerencimento de memória, é feita pelo NET

de escrever uma linha de código qualquer

Porem não podemos dizer o mesmo para as aplicações Web Além algumas frustadas tentativas, não existiu nenhum ambiente de alta produtividade como existiam para aplicações convencionais As linguagens, principalmente o ASP classico, semelhante ao Visual Basic, era limitada é sem os recusos de linguagens OO

Ao planejar o NET, a Microsoft vislumbrou um ambiente para aplicações Web onde se pudesse desenvolver aplicações no mesmo ambiente e com as mesmas facilidades de aplicações convencionais, utilizando a mesma linguagem

Trang 8

Promessa cumprida: O NET 1.x junto com o Visual Studio 2002 / 2003 proporcionou

um ambiente para aplicações WEB, totalmente integrado, com as facilidades só antes vistas em ambientes de aplicações convencionais: WYSIWYG, Drag and Drop, Intellisense, recursos de depuração avançados etc Já era possivel exibir uma tabela numa aplicação WEB com duas linhas de código, e sem escrever uma Tag HTML sequer!

ASP.NET 2.0

Não há duvidas que a plataforma NET 1.x e o ASP.NET 1.x mudaram a maneira como

as aplições Web são desenvolvidas Porém a equipe de desenvolvimento da plataforma percebeu que muito ainda poderia ser feito, principalmente no que diz respeito a produtividade, e esse foi o objetivo principal da equipe de durante seu desenvolvimento Como resultado, houve uma melhora de produtividade em até 70% ! Vejamos algumas das melhorias do ASP.NET 2.0 em relação ao seu antecessor:

Mais de 50 novos Server Controls Novas ferramentas adiminstrativas Nova IDE do Visual Studio 2005 Site Navigation: Controles que facilitam a navegação em Web Sites Master Pages: Agora é possível utilizar herança visual em aplicações Web, o que

na versão 1.x só era possivel com aplicações Windows Forms

Themes: Tornam mais facil o gerenciamento do visual de sua aplicação Acesso a Dados: O ADO.NET embora extramente eficiente, era demasiadamente complexo O Acesso a dados foi reformulado e simplificado Snippets: Partes de códigos especificas que podem ser armazenadas para utilização futura

O ASP.NET foi o primeiro ambiente que permitiu que se desenvolvessem aplicações convencionais ou para Web em uma mesma IDE, utilizando a mesma linguagem

Normalmente você não precisa ser um profundo conhecedor de HTML para desenvover uma aplicação Web no VS 2005 Porém um conhecimento básico

é recomandado: sempre há necessidade de algum ajuste manual

Trang 9

ASP.NET 3.5

As mudanças do ASP.NET 2.0 e 3.5 foram poucas, porém significativas Na verdade o core engine das duas versões continua o mesmo Para projetos em ASP.NET 3.5 o ASP.NET AJAX Extensions passou a estar integrado a IDE do Visual Studio, não é mais necessário baixar e instalar separadamente É encontrado no assemblie System.Web.Extensions.dll

Outra grande novidade, já há bastante esperada é o LINQ A Gap que existe entre dados

relacionais e objetos já não é um assunto novo, já recebendo inclusive artigos meus Já postei também alguns artigos técnicos sobre LLBLGen e NHibernate Agora o NET avança nesse sentido com o LINQ O LINQ não é nenhuma novidade, porém agora é integrado ao Visual Studio A idéia do LINQ também não é nova, com esta tecnologia você pode operar o banco de dados em uma linguagem nativa, como se tivesse gerando

System.Data.Linq.dll, System.Xml.Linq.dll e System.Data.DataSetExtensions.dll

Também há controles novos Além dos controles Ajax Extensions que na versão anterior deviam ser instalados separadamente, existem mais três novos controles: ListView, DataPager e LinqDataSource O Listview é um controle de exibição de dados tabulares, semelhante ao Datagrid e GridView, porém com novas funcionalidades e maior controle sobre o resultado produzido DataPager é um controle que prove paginação de dados ao Listview LinqDataSource é mais um controle de acesso a dados, como ObjectDataSource e o SQLDataSource, porém utilizando o modelo LINQ descrito

em sessão anterior

Estrutura de uma aplicação ASP.NET 2.0 e 3.5

Nesta sessão apresento algumas considerações sobre o estrutura de aplicações ASP.NET 2.0 e 3.5, que como dito em seção anterior, permaneceram inalterados

Você já percebeu que muita coisa mudou entre o ASP.NET 1.x e seu predecessor Uma das grandes propagandas no lançamento da primeira versão do ASP.NET era o modelo code-behind, onde apresentação e código de servidor ficam armazenados em arquivos

Trang 10

fisicamente separados, tornando o código mais limpo e intuitivo tanto para o designer quanto para o programador Trabalhar com tudo em um único arquivo até era possível, porém desvantajoso

No ASP.NET 3.5, embora o padrão seja um arquivo único, pode-se facilmente optar em

trabalhar com arquivos separados, basta desmarcar a opção place code in separated file

na caixa de dialogo de criação de um novo Web Form:

Este novo modelo é denominado code-inline Se você optar por trabalhar com este

modelo, seu código de servidor vai estar separado entre tags Script O grande problema

na versão 1.x era que trabalhando com um único arquivo perdíamos alguns recursos poderosos de programação, como o Intellisense Na versão 2.0 e 3.5 não há qualquer problema: tudo que funciona no modelo code-behind funciona também no code-inline

Post-Back entre páginas

Até o.NET 1.x um controle só poderia causar um post back para a própria página Agora esta limitação acabou, através da propriedade PostBackUrl, presente no botão de comando e similares, que permite que seja executa um postback para outra pagina Asp

Trang 11

Agora é possível inclusive ler valores de controles ou propriedades de páginas que deram origem ao postback Esta fantástica inovação surgida no ASP.NET 2.0 permite tornar o código mais limpo, mas otimizado, além de reduzir a necessidade de utilização

de variáveis de sessão, querystring e outros

Pastas

A partir da versão 2.0 o ASP.NET uma aplicação Web deixou de ser orientada a projeto

e passou a ser orientada a arquivos Em conseqüência foram definidas uma série de pastas com funções especificas, vamos ver as principais:

App_Code: Para armazenamento de classes App_data: Armazena fontes de dados App_Themes: Armazena um tema Estudaremos temas mais adiante

App_LocalResources: Armazena arquivos de recursos

.aspx: arquivo contendo a apresentação de uma página

.vb ou cs: arquivo com código de servidor relacionado a uma página Global.aspx: Arquivo contendo os eventos globais da aplicação

.master: Arquivo contendo uma MasterPage

.ascx: Arquivo contendo um WebUserControl css: Arquivo css

.resx: Arquivo de recursos sitemap: Arquivo contendo um mapa do site skin: Arquivo contendo um skin

Trang 12

2 Visual Studio 2008: O ambiente e as linguagens

Nesta seção vamos ver os principais compontentes da IDE do VS 2008

A esquerda, por padrão oculta, existe a Barra de Ferramentas, onde ficam agrupados por categoria os compontes padrão do VS ou de terceiros instalados no ambiente Para instalar um novo componente, basta clicar com o botão direito sobre a barra e selecionar Choose Itens Você pode também personalizar a sua barra de ferramentas da maneira que achar melhor

A direita temos o Solution Explorer, que permite uma navegação rápida entre os arquivos de um projeto ou solução

Abaixo, a janela de propriedades, permite configurar as propriedades de um controle ou

de um formulário, bem como acessar eventos

Entre as principais novidades do ambiente temos as notificações de status da linha através de cores: Uma nova linha de código ou código alterado é marcado como amarelo Se a linha já foi salva sua cor muda para verde

Trang 13

Outra novidade são os Snippets: pedaços de código pré fabricados para executar uma tarefa especifica Tudo bem que isso não é uma grande novidade e já foi utilizada em outras IDEs por aí a fora, mas com certeza o recurso esta melhor do que nunca e poderá lhe ajudar a poupar bastante trabalho Para inserir um Snippet basta chama-lo no menu rápido sobre a área de código Obviamente que você também poderá criar seus proprios snippets

SINTAXE: VISUAL BASIC NET e C#

Vamos introduzir os principais aspectos d a sintaxe de programação do VB.NET e do C# Este não será um estudo completo ou abrangente, para tal procure bibliografia específica

Comment out the selected lines que comenta um bloco de código selecionado e Uncomment the selected lines que remove os comentários, a utilização é simples e

intuitiva, e funcina em ambas as linguagens

este é um comentário válido Dim i as Integer esta também é um comentário válido

//este é um comentário válido

Trang 14

No Visual Studio 2008 também é possível documentas seu código sem a necessidade de instalar qualquer plug-in, basta adcionar três aspas (vb.net) ou tres barras (C#) antes do procedimento O VS automaticamente preenche o esqueleto do documento Observe o exemplo abaixo:

''' <summary>

''' Função para somar dois números

''' </summary>

''' <param name="x"> Primeiro número a somar </param>

''' <param name="y"> Segundo número a somar </param>

''' <returns> Resultado da soma </returns>

''' <remarks> By Fulano </remarks>

Public Function Somar(ByVal x As Integer, ByVal y As Integer) _

As Integer Dim z As Integer

z = x + y Return z End Function

/// <summary>

/// Função para somar dois números /// </summary>

/// <param name="x"> Primeiro número a somar </param>

/// <param name="y"> Segundo número a somar </param>

/// <returns> Resultado da soma </returns>

int Somar( int x, int y) {

Sendo o NET um framework, não existem tipos de dados desta ou daquela linguagem

Os tipos são todos do NET Obviamente que existem diferenças de sintaxe na declaração e manipulação destas variaveis Abaixo segue uma relação dos principais tipos de dados, para uma relação completa consulte a documentação do VS 2008:

Você ainda pode criar comentários no VB.NET utilizando Rem

Trang 15

Boolean Verdadeiro ou falso Char - caractere unicode de 16 bit String - String

Byte inteiro de 8 bit, sem sinal UInt16 - inteiro de 16 bit, sem sinal UInt32 - inteiro de 32 bit, sem sinal UInt64 - inteiro de 64 bit, sem sinal Int16 inteiro de 16 bit, com sinal Int32 - inteiro de 32 bit, com sinal Int64 - inteiro de 64 bit, com sinal SByte - - inteiro de 8 bit, com sinal DateTime data e hora

Double número de ponto flutuante com 64 bit Single - número de ponto flutuante com 32 bit

Um valor nulo em VB.NET é representado por NOTHING, em C# por null

O tipo Int32 pode ser representado no VB.NET por Integer e int no C#

Trang 16

Podemos ainda declara diversas variaveis de um mesmo tipo numa unica declaração:

Dim i,j,k as Integer

int x, y, z;

Ou ainda variaveis de diferentes tipos:

Dim i,m as Integer, j,k as Single

int i, m; Double j,k;

Obviamente i e m serão do tipo inteiro, e j e K do tipo single

É possível ainda incializar a variável na sua declaração:

int z = 1;

Para declarar uma constante utilizamos a declaração Const:

Dim i as Integer = 1

Trang 17

Enum Semana Domingo = 1 Segunda = 2 Terça = 3 Quarta = 4 Quinta = 5 Sexta = 6 Sabado = 7 End Enum

Sexta =6, Sabado =7 };

Dim MeuArray(1) As String

MeuArray(0) = "Um"

MeuArray(1) = "Dois"

Trang 18

Ao contrário do legado VB, um array possui sempre índice iniciado em zero, portanto

um array declarado com (1), terá duas posições

Estruturas de decisão

O classico if não poderia faltar A sintaxe é semelhante as suas linguagens legadas:

Obviamente que a intrução else é opcional

Outra forma de controle de fluxo conhecido é o Select (VB.NET) ou Switch (C#):

string [] MeuArray = new string [1];

arr[0] = "Um" ; arr[1] = "Dois" ;

Dim Nome As String = "ASP.NET"

If Nome = "VB.NET" Then

MessageBox.Show( "Certo!" ) Else

MessageBox.Show( "Errado!" ) End If

string Nome = "ASP.NET" ;

if (Nome == "C#" ) {

MessageBox Show( "Certo!" );

} else { MessageBox Show( "Errado!" );

}

Dim Nome As String = "VB.NET"

Select Case Nome Case "VB.NET"

MessageBox.Show( "Certo!" ) Case "C#"

MessageBox.Show( "Errado!" ) Case Else

MessageBox.Show( "?" ) End Select

Trang 19

Note que no C# devemos usar a palavra break para quebrar o fluxo

Laços

Vamos estudar três estruturas de laços: For, while e laços em coleções

O laço for tem a sintaxe semelhante em qualquer linguagem:

Dim i As Integer

For i = 1 To 10 MessageBox.Show( CStr (i)) Next i

for ( int i = 0; i < 10; i++)

A sintaxe do C# nos permite facilmente fazer um loop regressivo, basta alterarmos o último argumento de i++ para i , e obviamente mudarmos a condição:

for ( int i = 0; i < 10; i++)

No VB.NET podemos conseguir o mesmo efeito utilizando a palavra chave Step:

Dim i As Integer = 0

For i = 10 To 1 Step -1 MessageBox.Show( CStr (i)) Next i

Existem laços While com teste de condição no inicio da sentença ou no final, neste

último o laço executa sempre uma primeira vez, independente do resultado da avaliação Vamos ver exemplos do primeiro caso:

Trang 20

Dim i As Integer = 0

Do While i < 5 MessageBox.Show( CStr (i))

i += 1 Loop

Dim numbers() = {4, 5, 6, 1, 2, 3, -2, -1, 0}

Dim i As Integer For Each i In numbers MessageBox.Show(Convert.ToString(i)) Next

Para a conversão entre tipos de dados utilize a classe convert, seguida do método

apropriado ao tipo que ser converter:

Dim i As Integer, s As String

Trang 21

z = x + y Return z End Function

int Somar( int x, int y) {

int z;

z = x + y;

return z;

}

O retorno é inidicado pela palavra-chave return ou pelo próprio nome da função

Um procedimento que não retorna valor em VB.NET inicia com a palavra chave Sub, e

em C# com void:

Sub Somar( x As Integer, y As Integer) _

As Integer Dim z As Integer

z = x + y End Function

void Somar( int x, int y) {

Trang 22

A visibilidade de um procedimento, classe, inferface etc é definada através das palavras reservadas a seguir:

Public / public: acessível de qualquer lugar do projeto ou de instancias da classe Private / private: Acessível apenas dentro do mesmo contexto;

Friend / internal: Acessivel apenas dentro do projeto;

Protected / protected: Acessivel apenas dentro da classe ou de uma classe derivada; Protected Friend / Protected Internal: Acessivel apenas dentro da classe derivada ou do mesmo projeto;

Tratamento de exceções

O tratamento de exceções será surpresa apenas para quem esta começando agora a conhecer o VB.NET, que com o lançamento do linguagem ganhou uma forma estruturada de tratamento de erro semelhante as demais linguagens OO È o adeus ao

On error go to

O tratamento de erro é formando por uma estrutura Try Catch Finally Entre o Try e o

Catch deve ser colocado o código que você quer proteger de uma exceção Entre Catch

e Finnally o código a ser executado no caso de ocorrer uma exceção, e finalmente após

Finnally algum código que você queira que obrigatóriamente seja executado, ocorrendo

ou não uma exceção, geralmente usado para liberar algum recurso alocado Vale lembrar que você pode usar apenas parte da funcionalidade do bloco, por exemplo, se você que apenas tratar uma exceção, pode contruir um bloco contendo apenas os

comando try catch Por outro lado se você quer apenas garantir que um recurso seja

liberado, como uma conexão com o banco de dados pro exemplo, você pode fazer uso

apenas do bloco try finally

Outra caracteristica importante é que as classes de exceção são executadas da mais especifica para a menos especifica, isto permite um tratamento de erros mais robusto e

eficaz Normalmente você deve terminar seu tratamento com a classe Exception, que é

menos específica e que da origem a todas as demais

Ao declarar algo sem a visibilidade, por padrão será private

Trang 23

Try

My Computer.FileSystem.CopyFile( "Aspnet.pdf" , "Aspnet.bkp" )

Catch ex As System.IO.IOException MessageBox.Show("Ocorreu um erro na cópia do arquivo")

Catch ex2 As Exception MessageBox.Show("Ocorreu um Erro desconhecido") End Try

try { string s = null;

}

catch ( ArgumentNullException s) {

MessageBox.Show( "Ocorreu um erro na string" );

}

catch ( Exception r) {

MessageBox.Show( "Ocorreu um Erro desconhecido" );

.EditIndex = 0 Enabled = False

End With

Orientação a Objetos

Vamos também apresentar alguns aspectos da sintaxe da criação de classes no VB.NET

e no C# Porém antes é preciso conhecer o conceito de NameSpaces

NameSpaces é uma estrutura simples, porém muito eficiente de organizar seu código Por exemplo, uma suposta empresa GoodSoftware pode definir que todas suas classes terão como NameSpace raiz GoodSoftware Abaixo deste existirão os NameSpaces ERP, CRM e Global O NameSpace ERP abrigaria as classes de seus novo sistema ERP, o CRM idem, e o Global classes que para serem utilizadas em ambos os projetos

Dentro de cada um destes NameSpaces é possível criar n outros Outra importante

Trang 24

vantagem do seu uso é redução de problemas com conflitos com nomes repetidos de classes ou métodos

Abaixo vemos a declaração básica de uma classe de Nome Class1, dentro de um NameSpace

Namespace GoodSoftware Public Class ERP '

End Class End Namespace

namespace GoodSoftware {

public class ERP

{ //

} }

Um construtor de uma classe em VB.NET se define com a palavra chave New, já em C# deve ter no mome da classe

Public Sub New()

End Sub

public Class1 () {

//

}

Obviamente que você pode criar um construtor com passagem de parametros

Já as propriedades são bastante singular em cada linguagem:

Você não é obrigado a criar uma classe dentro de um NameSpace

Não é preciso existir relação entre nomes de classes e namespaces com o nome fisico do arquivo Você pode inclusive colocar diversas classes ou namespaces dentro de um mesmo arquivo

Trang 25

Public Property Nome() As String Get

Return Pnome End Get

Set(ByVal value As String)

Pnome = value End Set

End Property

public String Nome {

get { return Pnome; }

set { Pnome = value ; } }

Caso você deseje criar um método que por algum motivo não precise ou não deva ter sua classe instanciada, basta você acrescentar a palavra chave shared no VB.NET ou static no C#, sempre após a declaração de visibilidade do método:

Public Shared Function Somar(ByVal x As Integer, ByVal y As Integer) _

As Integer Dim z As Integer

z = x + y Return z End Function

public static int Somar(int x, int y) {

Uma propridade pode ser apenas leitura ou apenas escrita Além de inicar estas caracteristica na declaração da propriedade, você deverá omitir as sentenças get e set, respectivamente

Lembre-se que um método definido com shared / static, não pode usar qualquer recurso da classe, como por exemplo uma variavel privada ou mesmo, uma propriedade ou um outro método

Trang 26

class Class2 : Class1

{ }

Abaixo alguns outros recursos de OO do NET, não vou demonstrar exemplos porque extrapolam o objetivo básico desta sessão A primeira palavra é a notação em VB.NET

e a segunda em C#:

NotInheritable / sealed: Também conhecido com Classe Fechada , indica que uma classe não pode ser usada como base, ou seja, nenhuma outra classe poderá herdá-la

MustInherit / abstract: Define uma classe abstrato, onde apenas uma classe filho poderá ser instanciada

Overloads: permite que um método seja sobrecarregado, ou seja, que possa haver métodos com a mesma função, porém com assinaturas diferentes O uso

do termo é desnecessário tanto em VB.NET quanto em C#, pois o ambiente entende que métodos com o mesmo nome porem com assinaturas diferentes estão sobrecarregados

Overridable / virtual: Indica que uma classe filho deve programar uma nova versão do método

Overrides / override: Utilizado para sobrescrever uma implementação na classe pai

MustOverride: Em uma classe marcada como MustInherit Indica que o método

ou propriedade deve não foi implementado na classe pai e deve ser implementado na classe derivada

Interfaces

Interfaces é um recurso que permite criar uma padronização maior entre classe Uma interface é uma assinatura , que compreende nada mais que métodos e propriedades ocas Uma classe que programe determinada interface deve obrigatoriamente seguir essa assinatura Você pode definir que determinada classe implemente determinada

Para se referir a classe base, utilize MyBase no VB.NET ou base no C#, seguido do nome do método ou propriedade

Trang 27

Confuso? Vou citar um exemplo: você pode conectar tanto um array quanto um

System.Collections.IEnumerable

Interface Interface1 Sub Metodo1() Function Metodo2() As Integer End Interface

Public Class UsaInterface Implements Interface1 Public Sub Metodo1() Implements Interface1.Metodo1 '

End Sub Public Function Metodo2() As Integer Implements Interface1.Metodo2 '

End Function End Class

public interface Interface1

{ void Metodo1();

int Metodo2();

}

public class UsaInterface : Interface1

{ public void Metodo1() {

//

} public int Metodo2() {

//

} }

Utilizando o IIS

Como um ambiente de alta produtividade, O VS vai criar automaticamente pra você todas as estruturas que precisam ser implementadas na classe, no momento que você informar que deseja utilzar determinada interface

O NET não suporta herança multipla, porém uma classe pode implementar diversas interfaces

Certifique-se que o IIS esta devidamente instaldo e rodando

Trang 28

Ao contrario do seu entecessor, o VS 2005 e 2008 vem com um pequeno servidor Web embutido Porém devido as limitações deste, vamos trabalhar com IIS

Para criar uma nova aplicação usando o IIS siga os seguintes passos:

Na IDE do VS selecione File / New Web Site;

Na caixa de dialogo New Web Site selecione ASP.NET Web Site;

Clique em Browse;

Na caixa de dialogo Chose Location, selecione Local IIS;

Selecione Site da Web Padrão;

Clique em Create New Web Aplication;

Digite um nome para sua aplicação, no exemplo Teste;

Trang 29

Clique em Open;

De volta a new Web Site, clique em Ok.;

Trang 30

3 Web Forms

Um Web Form é uma pagina de sua aplicação Na IDE do VS ele se comporta de forma semelhante a um Windows Form: Uma área onde você pode arrastar e soltar controles visuais, codificar eventos e configurar propriedades que vão regrar seu comportamento Fisicamente, um Web Form é composto por um arquivo com extensão aspx e, dependendo do modelo adotado, poderá ou não estar vinculado a ele um arquivo vb ou

cs, com a codificação para execução no servidor

Abaixo você vê o código gerado pelo próprio VS na criação da um Web Form:

<%@ Page Language ="VB" AutoEventWireup ="false"

CodeFile ="Default2.aspx.vb" Inherits ="Default2" %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

< html xmlns ="http://www.w3.org/1999/xhtml" >

< head runat ="server">

<title> Untitled Page </title>

Trang 31

Abaixo veremos as principais diretivas existentes no ASP.NET 3.5:

@Control: Diretiva de um User Control (arquivo ascx)

@Master: Diretiva de uma Máster Page

@OutPutCache: Diretiva de controle de cachê

@Assembly: Vincula um assembly a página

@Import: Importa um namespace especificado

@Page: Diretiva de um Web Form (arquivo aspx

Cada diretiva pode conter n atributos Os atributos são configurações que na verdade

ditam as funcionalidades da diretiva Veremos a seguir os principais atributos da diretiva @page:

AutoEventWireUp: Determina que os eventos de uma página sejam disparados automaticamente

ClassName: Especifica o nome da classe relacionada a página CodeFile: Especifica o arquivo code-behind da página

Culture: Especifica as configurações de cultura da página Debug: Compila a página com os símbolos de depuração EnableSessionState: Indica se é permitido armazenamento de sessão na página EnableTheming: indica se é permitido o uso de temas na página

EnableViewState:Indica se o viewstate será mantido na página Language: Defina a linguagem em que a página é codificada SmartNavigation: Habilita os recursos do SmartNavigation na página Theme: Defini um tema especifico para a pagina

ValidateRequest: Indica se a requisição será validada Quando este atributo esta com verdadeiro, se existir algum conteúdo potencialmente perigoso postado na página, será gerada uma exceção

No arquivo web.config ou mesmo até no machine.config, podemos configurar muitos dos atributos que também são configuráveis a nível de pagina Normalmente a configuração através de diretiva de página sobrescreve a definida em um arquivo de configuração

Trang 33

Você pode criar uma aplicação utilizando basicamente dois grandes grupos de controles: controles HTML, que são os controles padrão conhecidos e Server Controls,

ou controles de servidor

Server Controls são controles ricos em funcionalidade, que podem ter seus eventos ou propriedades manipulados no código executado no servidor Todo controle de servidor é codificado através de uma tag ASP, que não é HTML padrão que conhecemos Em tempo de execução, o ASP.NET renderiza esta tag em HTML otimizado para o navegador em que a aplicação é executada

Por exemplo, um dos controles mais simples é o Label Ao colocar um Label em um WebForm o VS gera o seguinte código:

Ao executarmos a aplicação, a tag ASP:Label é renderizado em uma tag span:

Não estudaremos detalhadamente todos os Server Controls

Você pode criar aplicativos usando apenas controles HTML, porém tenha um bom motivo para fazer isto

< asp : Label ID ="Label1" runat ="server" Text ="Label"></ asp : Label >

Você pode gerenciar a apresentação de seu site manualmente, se preferir

<span id="Label1">Label</span>

Trang 34

O atributo runat=Server não define que o controle é um controle de servidor, mas sim que ele será visível no código executado no servidor Isto significa que se adicionarmos este atributo a um controle HTML, este também poderá ser manipulado no servidor, porém de forma mais pobre:

Acessando eventos e propriedades de controles

Na caixa de propriedades, clicando no botão Events , você tem uma relação de todos

os eventos possíveis para um determinado controle Para que o VS crie automaticamente um manipulador para o evento basta dar um duplo clique no nome Alguns manipuladores podem ser criados quando clicamos sobre o próprio controle, como o evento Click de um Button:

Protected Sub Button1_Click( ByVal sender As Object , ByVal e _

As System.EventArgs) Handles Button1.Click

End Sub

protected void Button1_Click( object sender, EventArgs e) {

}

Junto com o evento são passadas duas propriedades, sender, do tipo object, que contem

o objeto que disparou o evento, e e, do tipo EventArgs, que contem algumas

propriedades especificas do evento

Ler ou alterar propriedades de um controle é feito no modelo controle.propriedade, como nos exemplos abaixo:

Protected Sub Button1_Click( ByVal sender As Object , ByVal e _

As System.EventArgs) Handles Button1.Click Button1.Text = "Gravar"

Button1.ToolTip = "Clique Aqui para Gravar"

< input id ="Text1" runat ="server" type ="text" />

Não estudaremos controles HTML

Trang 35

protected void Button2_Click( object sender, EventArgs e) {

Button1.Text = "Gravar" ; Button1.ToolTip = "Clique Aqui para Gravar";

}

Você pode definir que mais de um controle dispare um mesmo manipulador de evento, internamente basta você verificar qual foi o controle que causou o evento De uma maneira geral, para ambas as linguagens, basta você selecionar o evento no dropdown

na caixa de propriedades O interessante é como o VS trata isto em tempo de design de forma tão diferenciada No C# o nome do manipulador do evento é colocada no arquivo ASPX, no atributo OnClick No VB.NET, é adicionado o nome do controle ao grupo handles, ao final da assinatura do evento O resultado em tempo de execução obviamente é o mesmo

EnableTheming: Indica se é o tema do controle estará ativo EnableViewState: Indica se o controle vai armazenar seu estado no viewstate da pagina

Font: Fonte do controle SkinID: Indica o ID do skin a ser utilizado Skins serão estudados mais adiante Text: Representa o texto que será exibido ao usuário da aplicação

ToolTip: é a dica que será exibida ao usuário quando este posicionar o mouse sobre o controle

Trang 36

Uso de HotKeys

Duas propriedades novas e interessantes, que estão presentes em alguns controles, são AcessKey e AssociatedControlID Com a primeira definimos uma tecla de atalho para o controle, que no navegador e acionado junto com a tecla ALT Já com AssociatedControlID podemos definir qual o controle vai receber o foco no caso da combinação de teclas ser acionadas Este recurso é conhecido como HotKeys

Vamos estudar agora os três principais controles de servidor, que formam um conjunto básico para a criação de qualquer aplicativo

Label

Um controle simples, porém poderoso, que nos permite exibir algum texto em uma página Web Todas suas propriedades podem ser manipuladas no código gerado no servidor

É definido pela a tag ASP:Label e quando executado renderizado em uma tag span:

TextBox

O textbox é um controle de edição simples Através da propriedade TextMode podemos utilizá-lo ainda para receber senhas ou mesmo transforma-lo em um controle com múltiplas linhas Uma novidade é a propriedade AutoCompleteType, que pode receber apenas valores pré-definidos Ao preencher um segundo controle com o mesmo valor para esta propriedade, o navegador deverá sugerir o preenchimento do valor informado

no primeiro campo

È definido pela a tag ASP:TextBox e quando executado renderizado em uma tag input

do tipo text ou password ou então textarea, de acordo com a propriedade textmode

Alguns exemplos de codificação de controles, mostram primeiro em tempo

de design (ASP) e em seguida em tempo de execução (HTML)

< asp : Label ID ="Label1" runat ="server" Text ="ASP.NET 3.5 Rules!!"></ asp : Label >

span id="Label1">ASP.NET 3.5 Rules!!</span>

Trang 37

Button

O button é um botão de comando básico Sua principal função é causar um post back para a execução de algum código no servidor O principal evento é Click, que, obviamente, é disparando quando clicamos no botão É renderizado em uma tag input

Nos bastidores, o LinkButton renderiza uma tag a, cujo atributo Href, ao invés de conter

uma URL, dispara uma função Java Script gerada pelo ASP.NET

< asp : TextBox ID ="TextBox1" runat ="server">Normal</ asp : TextBox >

< asp : TextBox ID ="TextBox2" runat ="server"

TextMode ="Password">Senha</ asp : TextBox >

< asp : TextBox ID ="TextBox3" runat ="server"

TextMode ="MultiLine">MultiLine</ asp : TextBox >

<input name="TextBox1" type="text" value="Normal" id="TextBox1" />

<input name="TextBox2" type="password" id="TextBox2" />

<textarea name="TextBox3" rows="2" cols="20"

id="TextBox3">MultiLine</textarea>

< asp : Button ID ="Button1" runat ="server" Text ="Button" />

<input type="submit" name="Button1" value="Button" id="Button1" />

Dim Nome As String = CType (PreviousPage.FindControl( "Nome" ), _ TextBox).Text

< asp : LinkButton ID ="LinkButton1"

runat ="server">LinkButton</ asp : LinkButton >

Trang 38

ImageButton

Um ImageButton é um botão de comando onde podemos adicionar uma imagem para exibição Possui todas as funcionalidades do Button, mais a propriedade ImageURL onde definimos a imagem Em tempo de execução é renderizado como Input do tipo Image

HyperLInk

O hyperlink permite criar links de navegação, sua propriedade mais importante é NavagateURL, que é valor para a atribuo HREF É um controle simples que é

renderizado com uma tag a Seu poder maior esta na possibilidade de, por exemplo,

definir a URL dinamicamente no código do servidor Através de uso de HotKey pode-se ainda facilitar a navegação na pagina A propriedade text define o texto de exibição, já ImageUrl pode definir uma imagem a ser exibida ao invés do texto

<a id="HyperLink1" href="http:\\www.fernandoamaral.com.br">Clique Aqui</a>

< asp : CheckBox ID ="CheckBox1" runat ="server" Text ="Lembrar" />

<input id="CheckBox1" type="checkbox" name="CheckBox1" />

Trang 39

em tempo de design ou de execução, através da propriedade Itens Também é possível vinculá-lo a uma fonte de dados qualquer, que pode ser um array, um dataset ou mesmo

um SqlDataSource, só para citar alguns

Para cada item é possível ler e escrever um texto e um valor, armazenados nas propriedades text e value, respectivamente Isto é muito útil, por exemplo, para recuperar o código de um item selecionado pelo usuário

O exemplo abaixo adiciona um item a um DropDownList:

DropDownList1.Items.Add( "Selecione uma opção" )

< asp : RadioButton ID ="RadioButton1" runat ="server" Text ="Lembrar" />

<input id="RadioButton1" type="radio" name="RadioButton1"

value="RadioButton1" />

< asp : Image ID ="Image1" runat ="server" ImageUrl ="web.gif" />

<img id="Image1" src="web.gif" />

< asp : DropDownList ID ="DropDownList1" runat ="server">

<select name="DropDownList1" id="DropDownList1">

Trang 40

DropDownList1.Items.Add( "Selecione uma opção" );

Para recuperar o valor da propriedade text bem como value basta ler as propriedades específicas:

Dim s As String = DropDownList1.SelectedValue

Dim t AsString = DropDownList1.SelectedItem.Text

string s = DropDownList1.SelectedValue;

string t = DropDownList1.SelectedItem.Text;

O evento SelectedIndexChange é executado quando um item do controle é selecionado

Se a propriedade AutoPostBack estiver marcada como verdadeira, um postback é executado imediatamente, caso contrário o evento só será executado no próximo postback

Existem ainda diversos métodos interessantes, como itens.clear, que limpa os itens, e propriedades, como itens.count, que retorna o número de itens no controle

CheckBoxList e RadioButtonList

Os controles CheckBoxList e RadioButtonList em tempo de design são apresentados como um conjunto de controles CheckBox e RadioButton, que podem ter suas propriedades gerenciadas mais facilmente e conectados a uma fonte de dados qualquer

Em tempo de execução, o ASP.NET renderiza cada controle como diversos controles input do tipo checkbox ou radiobutton

No exemplo abaixo o código verifica se um determinado item de um

If CheckBoxList1.Items(0).Selected = True Then

'' End If

if (CheckBoxList1.Items[0].Selected== true ) {

//

}

Ngày đăng: 14/03/2014, 20:20

TỪ KHÓA LIÊN QUAN