Você está na página 1de 20

Conteúdo

Desenvolvendo uma aplicação com ASP.NET 2.0 – Parte 1 ..........................................................................1


O cenário ...................................................................................................................................................1
Criação da aplicação ..................................................................................................................................1
Criação do banco de dados .......................................................................................................................2
Criando a estrutura da aplicação ..............................................................................................................3
Desenvolvendo uma aplicação com ASP.NET 2.0 - Parte 2 ...........................................................................7
Cadastro de Produtos ..............................................................................................................................10
Desenvolvendo uma aplicação completa com ASP.NET 2.0 - Parte 3.........................................................14
Adicionando usuários ..............................................................................................................................15
Trabalhando com grupos de usuários .....................................................................................................16
Orçamento ..............................................................................................................................................17
1

Desenvolvendo uma aplicação com ASP.NET 2.0 – Parte 1


Este artigo discute Este artigo usa as seguintes tecnologias
Novidades do ASP.NET 2.0; .NET Framework 2.0, ASP.NET 2.0,
Criação do banco de dados; Visual Studio .NET 2005, Visual Web
Definição da estrutura de Developer, Atlas .NET, SQL Server 2005.
navegação do site.

Um curso para você conhecer os principais recursos do ASP.NET 2.0 utilizando o Visual Studio 2005 ou o
Visual Web Developer. Como ferramenta de banco de dados será utilizado o SQL Server 2005 Express.
Nessas três partes do mini-curso, você conhecerá as principais novidades para o desenvolvimento de
aplicações trazidas pelo ASP.NET 2.0, que facilitarão o desenvolvimento de Web Sites, gerando grande
produtividade para você desenvolvedor.
Vamos mostrar os principais novos controles, acesso a base de dados e dicas e truques que
serão úteis para a construção e organização dos Web Sites. Baseando-se em uma aplicação
comercial simples, os recursos serão demonstrados de forma que se aproxime ao máximo
com a rotina de um desenvolvedor.

O cenário
Neste curso, criaremos um sistema de controle de orçamentos on-line, com os seguintes
requisitos:
Cadastro de categorias;
Cadastro de produtos;
Solicitação de orçamento;
Relatórios de cadastros;
Controle completo de segurança – cadastro de grupos, usuários e permissões
de acesso.
O objetivo é criar um sistema simples, que possibilite a utilização máxima dos recursos
desta nova versão do ASP.NET. O mini-curso será organizado da seguinte forma:
Parte 1 – Introdução, requisitos do sistema, banco de dados, criação do projeto e páginas,
master page e navegação;
Parte 2 – Segurança completa e cadastros;
Parte 3 – Solicitação de orçamento, consultas (relatórios) e otimização.

Criação da aplicação
Abra o Visual Studio .NET 2005 e clique em File>New Web Site, aponte para o template
ASP.NET Web Site, escolha a location File System, selecione a linguagem Visual C# no
campo language, informe “C:\MiniCursoASPNET\” para definir o caminho do projeto e
confirme clicando em OK conforme mostra a Figura 1.

Figura 1. Criação do novo projeto do tipo Web Site


2

Uma das grandes novidades trazidas pelo Visual Studio 2005 é a criação de projetos do tipo
File System. Com essa opção, a ferramenta utilizará um servidor local para rodar aplicações
Web, ao invés do IIS (Internet Information Services), como era no ASP.NET 1.x. Não é
necessário criar um diretório virtual nem mesmo ter o IIS instalado para desenvolver o
projeto. Além disso, o recurso facilita bastante a organização dos projetos, já que agora é
possível armazenar e abrir projetos a partir de qualquer local. Basta abrir o projeto e
executá-lo.
Após a criação do projeto a ferramenta criará os arquivos iniciais. Além do arquivo
default.aspx, será possível visualizar também a pasta especial App_Data, que tem por
função armazenar diversos tipos de fonte de dados que serão acessadas pela aplicação,
como por exemplo: banco de dados, arquivos XML etc. Durante o desenvolvimento da
aplicação, você conhecerá outras pastas especiais que fazem parte do ASP.NET 2.0.

Criação do banco de dados


Na instalação inicial do Visual Studio 2005, o SQL Server Express está presente, de forma
que já estará instalado. Caso o desenvolvimento esteja sendo feito em Visual Web
Developer, faça o download gratuito do SQL Express no site
http://msdn.microsoft.com/vstudio/express.
No Solution Explorer (Control + Alt + L), clique com o botão direito do mouse sobre o
diretório App_Data >Add New Item. Na janela (Figura 2), selecione SQL Database e mude
o nome do banco de dados para Orçamento.mdf.

Figura 2. Adicionando um Banco de Dados

O banco de dados foi criado. Note que o SQL Express trabalha com arquivos mdf,
funcionando de forma semelhante ao Access. Vamos utilizar o próprio Visual Studio como
ferramenta para administração de banco de dados. Abra a janela Server Explorer (Control +
Alt + S), uma conexão com o banco Orçamento.mdf já é aberta. Clique com o botão direito
sobre Tables > Add New Table. Será aberta no próprio Visual Studio a estrutura para a
criação de uma tabela. Adicione os campos conforme a Figura 3.

Figura 3. Tabela de Categoria

Para configurar o campo CategoriaID como sendo a chave-primária, basta selecioná-lo e a


seguir clicar no botão Set Primary Key . Como o campo é do tipo auto-numeração,
3

precisamos configurá-lo. Pressione F4 para abrir a janela de Propriedades e altere Identity


Column para CategoriaID. Salve a nova tabela como o nome de “Categoria”.
Seguindo os mesmos passos, crie uma segunda tabela, chamada “Produto”, usando a
estrutura mostrada na Figura 4. Como o campo ProdutoID é do tipo auto-numeração,
pressione F4 para abrir a janela de Propriedades e altere Identity Column para ProdutoID.

Figura 4. Tabela de Produto

Para adicionar o relacionamento entre as tabelas, clique com o botão direito do mouse
sobre qualquer campo e escolha Relationships. Na nova janela que será aberta, clique em
Add para criar um novo relacionamento, expanda a propriedade Tables and Columns
Specification e altere as configurações conforme Figura 5. A seguir, clique em OK e feche
as janelas para prosseguir o exemplo.

Figura 5. Relacionamento entre as tabelas Categoria e Produto

Nota: Nosso banco de dados possui somente duas tabelas, já que o orçamento é montado
de forma on-line não trazendo a necessidade do armazenamento dos dados.

Criando a estrutura da aplicação


A maioria das aplicações possui uma aparência padrão e estrutura semelhante de
navegação/visualização. Normalmente existe um topo e uma lateral com menus ou opções
que estarão disponíveis em todas as páginas. No ASP.NET 1.x, usávamos User Controls para
criar áreas comuns nas aplicações Web. Apesar dos User Controls não terem sido criados
especificamente para essa finalidade, resolviam grande parte dos problemas.
O ASP.NET 2.0 trouxe um recurso muito interessante chamado Master Pages, que permite a
criação de diversos templates que serão usados como base para todas as páginas. Sendo
assim, iniciaremos criando a Master Page que será usada em todo o mini-curso.
No Solution Explorer clique com o botão direito no projeto, aponte para Add New Item e
selecione o template Master Page na janela que é aberta (Figura 6). Nomeie a Master Page
como “MiniCurso.master”, selecione a linguagem Visual C# e mantenha a opção Place code
in a separate file habilitada. Essa opção criará o arquivo de Codebehind e manterá o código
C# (.cs) separado do arquivo de layout (.aspx). Confirme com Add para efetuar a criação
da Master Page.
4

Figura 6. Criando a Master Page

Ao criar a Master Page, a ferramenta apresenta um quadro contendo um objeto


ContentPlaceHolder, que representa a seção onde ficará o conteúdo específico de cada
página criada futuramente. Tudo o que estiver fora desse objeto será exibido em todas as
páginas que fizerem uso dessa Master Page, e é nessa área onde normalmente coloca-se o
logo da empresa, um menu de navegações, informações do usuário logado, e outras
informações que são necessárias em todas as páginas do Web Site.
Configure o layout da forma que achar mais conveniente, pois iremos incrementando a
Master Pages com outros recursos importantes do ASP.NET. Após ter configurado a Master
Page, criaremos a primeira página, que será o Menu Principal da aplicação, contendo links
para as diversas funcionalidades do sistema. Para isso, clique com o botão direito no
projeto, aponte para Add New Item e selecione o template Web Form. Altere o Name do
WebForm para MenuPrincipal.aspx, escolha a linguagem Visual C# e mantenha a opção
place code in a separate code habilitada. Note que uma nova opção foi criada, a seleção
Select Master Page, que é exatamente o recurso para selecionar uma Master Page
existente. Selecione essa opção e confirme com Add para a seleção da Master Page.
A próxima tela (Figura 7) exibe do lado esquerdo a estrutura de pastas do projeto e do
lado direito as Master Pages disponíveis em cada pasta. Basta selecionar o arquivo
MiniCurso.master e confirmar com OK para concretizar a criação da página Menu Principal.

Figura 7. Selecionando o Master Page

Após a criação do Menu Principal é possível visualizar em Design Mode uma tela semelhante
a Figura 8, mostrando na parte superior o conteúdo da Master Page e na seção inferior, o
objeto Content que armazenará todo o conteúdo da página. Se em algum momento for
5

necessário alterar a Master Page, basta clicar com o botão direito na área da Master Page,
selecionar a opção Editar Master e você será redirecionado para o arquivo, podendo assim
efetuar as mudanças necessárias.

Figura 8. Utilização de Master Pages no menu principal do Web Site

Navegação
A navegação de uma aplicação Web é algo muito importante, e no ASP.Net 2.0 juntamente
com o Visual Studio 2005 temos ferramentas que facilitam muito essa tarefa. Foi criado um
novo conceito chamado Site Map, onde através de um arquivo XML, definimos todas as
páginas do projeto conforme a hierarquia da aplicação. A partir desse recurso podemos tirar
proveito de controles que utilizam como fonte de dados o arquivo Web.sitemap.
Para adicionar o arquivo, no Solution Explorer clique com o botão direito do mouse sobre o
projeto > Add New Item. Selecione o Template Site Map (Figura 9) e clique em OK.

Figura 9. Criação do arquivo Site Map

O arquivo XML é aberto e já traz o template básico para alteração. Arquivos XML trabalham
de forma hierárquica, onde os nós definem quem será o pai e filho na relação, com isso
adicionamos como nó principal do arquivo a página principal do sistema. A partir do nó
principal a hierarquia segue até um nível infinito de pais/filhos. Altere o arquivo conforme a
Listagem 1.
6

Listagem 1. Mapa do site em arquivo XML


<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="MenuPrincipal.aspx" title="Página Principal do Sistema">
<siteMapNode title="Cadastros" description="Cadastros do Sistema">
<siteMapNode title="Categorias" description="Cadastros de Categorias"
url="Cadastro/Categoria.aspx"/>
<siteMapNode title="Produtos" description="Cadastros de Produtos"
url="Cadastro/Produto.aspx"/>
</siteMapNode>
<siteMapNode title="Orçamento" description="Solicitação de Orçamento"
url="Orcamento/Orcamento.aspx"/>
<siteMapNode title="Consulta" description="Consulta Geral"
url="Consulta/Consulta.aspx"/>
</siteMapNode>
</siteMap>

Após a definição da hierarquia, vamos conhecer os controles que nos beneficiam e muito na
navegação das páginas. Como a navegação ocorre em todas as páginas, vamos alterar os
controles dentro da Master Page, assim todas as páginas passam a ter a navegação pronta.
Abra em modo Design a Master Page já criada, e logo abaixo do texto de título adicione o
controle Menu (Figura 10), que está localizado na ToolBox na categoria Navigation.

Figura 10. Menu do Sistema

Selecione o controle menu e altere as propriedades Orientation para Horizontal, com isso o
menu ficará alinhado com o título, Static DisplayLevels para 2, para iniciar a exibição a
partir do nó 2 na hierarquia do arquivo Site Map. Abra a Smart Tag (Figura 11) do menu,
selecione Auto Format e altere o modelo conforme o seu gosto. Novamente na Smart Tag,
selecione Choose Data Source > New Data Source, selecione Site Map e clique em OK.
7

Figura 11. Seleção da Smart Tag

O menu está pronto, note que os valores contidos no arquivo XML já são exibidos (Figura
12).

Figura 12. Menu do Sistema

Outro controle muito interessanete é o SiteMapPath, da aba Navigation, que exibe o


“caminho” em que o usuário se encontra dentro do site. Adicione-o logo abaixo do menu
(Figura 13). A única customização necessária é a do template, que pode ser feita a partir
da Smart Tag. Pronto, esse é um grande recurso muito interessante e simples de ser
utilizado, e que enriquece muito qualquer aplicação.

Figura 13. SiteMapPath

Desenvolvendo uma aplicação com ASP.NET 2.0 - Parte 2


Continuando o mini-curso de ASP.NET iniciado na edição anterior, apresentaremos neste
artigo o cadastro de produtos e das categorias dos produtos. Você verá a criação de dois
cadastros completos, sem a necessidade de nenhuma linha de código!
Vamos iniciar a criação das pastas da aplicação para o desenvolvimento. Serão criadas três
pastas: “Cadastro”, “Orcamento” e “Consulta”, que receberão as políticas de segurança para
acesso. Para iniciar a criação das pastas, clique com o botão direito no projeto e aponte
para New Folder. Uma nova pasta é criada, nomeie-a para “Cadastro”, repita a mesma
operação para as pastas citadas anteriormente.

Cadastro de Categorias
Uma vez que as pastas já estão criadas, iniciaremos a construção da página de cadastro de
categorias. Clique com o botão direito na pasta “Cadastro” e selecione a opção Add New
Item, aponte para o template Web Form e digite “Categoria.aspx” no campo Name.
Em Language selecione Visual C#. Mantenha a opção Place code in a separate file
habilitada, selecione Select master page e confirme com botão Add. No editor, selecione
MiniCurso.master (Figura 1) e confirme com o botão OK.
8

Figura 1. Selecionando o Master Page para o novo WebForm

Após a criação do Categoria.aspx, desenharemos a tela de cadastro com os campos já


definidos na base de dados. Para isso, utilizaremos os novos controles de acesso a dados
disponibilizados pelo ASP.NET 2.0 para facilitar o desenvolvimento. Um desses controles é o
DetailsView, arraste-o a partir da ToolBox (Figura 2).

Figura 2. Controle DetailsView na ToolBox do Visual Studio 2005

O DetailsView é utilizado para criar formulários com as operações básicas: inclusão,


alteração e exclusão de registros. O layout do formulário padrão criado pelo controle pode
ser alterado, mantendo a mesma funcionalidade das operações com o banco de dados. Após
arrastar o controle, é possível definir uma formatação padrão atravéz da opção Format da
Smart Tag.
Faremos o acesso ao banco através da opção Choose Data Source presente na Smart Tag.
Selecione New data source e uma nova janela de configuração é aberta (Figura 3).

Figura 3. Selecionando o DataSource


9

Escolha então DataBase, digite “SqlCategoria” em Specify an ID for the data source e clique
em OK. Como essa conexão com o banco de dados será a primeira no projeto, o Visual
Studio mapeia o banco de dados localizado na pasta App_Data. Selecione Orcamento.mdf
(arquivo do Sql Express) na tela Choose Your Data Connection e clique em Next.
Podemos então armazenar as configurações dessa conexão no web.config (arquivo de
configuração), nessa janela. Altere o nome da string de conexão para: “DBOrcamento” e
clique em Next. A última janela é aberta, onde selecionamos o objeto do banco de dados
que vamos utilizar, nesse caso selecione a tabela Categoria (Figura 4).

Figura 4. Selecionando a tabela Categoria do banco de dados

Clique no botão Advanced (Figura 5) e habilite a opção Generate INSERT, UPDATE and
DELETE statements. Assim o próprio controle (nesse exemplo o DetailsView) usa os
comandos de SQL, automaticamente. Clique em OK, Next e Finish.

Figura 5. Criação dos comandos SQL para inserção, atualização e exclusão

Com o DataSource configurado, podemos utilizar os recursos do DetailsView. Selecione a


Smart Tag do DetailsView já adicionado e selecione Enable Inserting (Figura 6).
10

Figura 6. Configurando o controle DetailsView para inserção de dados

Para o nosso exemplo, só utilizaremos o DetailsView para adicionar novas categorias, mas
poderíamos utilizar também o Update e Delete (respectivamente as opções Enable Editing e
Enable Deleting).
Selecione o controle e altere a propriedade Default Mode para Insert. Com isso o controle já
é exibido na vizualização de inserção de dados e está pronto para uso. Abaixo do formulário
vamos adicionar um GridView.
Selecione na Toolbox o GridView, localizado na categoria Data. Como já criamos uma
SqlDataSource da tabela Categoria, podemos compartilhar a utilização do SqlDataSource
com o GridView. Na Smart Tag do GridView, selecione em Choose Data Source (Figura 7) o
SqlCategoria.

Figura 7. Configurando o controle de GridView a utilizar o mesmo SQLDataSource

Na própria Smart Tag habilite as opções: Enable Paging, Enable Sorting, Enable Editing e
Enable Deleting, sendo assim o controle está pronto para editar, deletar, ordenar valores e
paginar. Para testar, no Solution Explorer clique com o botão direito do mouse sobre a
página e selecione View in Browser. Cadastre algumas categorias a seu gosto.

Cadastro de Produtos
O cadastro de produtos segue a mesma característica de layout do cadastro de categorias,
somente com o DetailsView e GridView. Adicione ao projeto uma nova página chamada
“Produto.aspx” vinculando ao MasterPage já criado (semelhante a técnica utilizada no Web
Form anterior).
Adicione ao formulário o DetailsView e vamos configurar o DataSource de produtos. Na
Smart Tag do controle, escolha a opção Choose Data Source e selecione New Data Source.
Novamente a janela de configuração do DataSource é aberta, selecione DataBase, digite
“SqlProduto” para o ID e clique em OK.
Na escolha da conexão com o banco de dados, podemos escolher a string de conexão,
selecionando a última chave incluída no arquivo web.config. Selecione DBOrcamento e
clique em Next. Escolha a tabela Produto (Figura 8) e clique em Advanced.
11

Figura 8. Selecionando os dados da tabela Produto

Na janela Advanced, marque a opção para gerar as instruções SQL de inserção, atualização
e exclusão. Clique em OK, Next e Finish. Na Smart Tag, selecione Enabled Inserting. Altere
a propriedade DefaultMode para Insert.
Nesse caso temos uma nova necessidade, para o campo CategoriaID é criado um TextBox,
porém a necessidade é de um DropDownList vinculada com a tabela Categoria, pois o
usuário não precisará digitar o código da categoria, mas sim, apenas escolher a mesma.
Para isso, selecione na Smart Tag a opção Edit Fields. Em Selected fields selecione a coluna
de categoria (CategoriaID) e clique na opção Convert this field into a TemplateField (Figura
9).

Figura 9. Configurando as colunas do DetailsView


Com isso temos uma coluna com os templates editáveis, e para esse cenário, vamos editar
a coluna no template de insert, denominado InsertItemTemplate. Clique em OK para fechar
o editor. Clique com o botão direito do mouse sobre o DetailsView, escolha a opção
EditTemplate>Field[1] - CategoriaID. Será aberto o editor para adição de controles em
“campos” templates (Figura 10).
12

Figura 10. Configurando as colunas templates do DetailsView

Neste momento temos o GridView exibido com todos os tipos de templates. Vamos alterar
somente o InsertItemTemplate, que é a exibição no momento em que o controle está em
estado de inserção.
Delete o TextBox que está no InsertItemTemplate e em seu lugar, adicione um
DropDownList. A primeira tarefa é o preenchimento do controle com todas as categorias
existentes, para isso, selecione a Smart Tag e em Choose DataSource escolha New Data
Source. Selecione DataBase e clique em OK. Selecione novamente a string de conexão e os
campos na tabela Categoria e clique em Finish (neste caso, não precisamos adicionar as
instruções SQL de inserção, atualização e exclusão). Você será retornado novamente para o
editor do DropDowList.
Na configuração dos campos, temos a opção Select a data field to display in the
DropDownList, onde configuramos a coluna responsável pelos dados que serão visíveis ao
usuário (nesse caso Descricao) e o Select a data field for the value of the DropDownList,
onde configuramos a coluna chave, que será CategoriaID (Figura 11).

Figura 11. Selecionando os campos de exibição e coluna chave no DropDownList

Com o DropDownList preenchido, devemos vincular o controle ao DataSource de produtos,


via DataBinding. Selecione novamente a Smart Tag e escolha Edit DataBinding. Configure o
evento Selected Value com o campo CategoriaID (Figura 12).
13

Figura 12. Vinculando os DataSources

Clique com o botão direito do mouse sobre o DetailsView e escolha End Template Editing.
Neste momento finalizamos o formulário para inserção de dados. Seguindo o padrão do
cadastro de categorias, devemos adicionar o GridView para exibir os valores da tabela,
adicionando-o abaixo do DetailsView. Como já criamos uma SqlDataSource da tabela de
produtos, podemos compartilhar a utilização do SqlDataSource.
Na Smart Tag do GridView, selecione em Choose Data Source o SqlDataSource já criado
(SqlProduto). Selecione as opções de paginação e ordenação conforme já realizamos no
cadastro de categorias. No Solution Explorer, clique com o botão direito do mouse sobre o
formulário de produtos e escolha View in Browser (Figura 13).

Figura 13. Finalização dos cadastros

Conclusão

Os novos controles do ASP.NET 2.0 facilitam o desenvolvimento de aplicações Web


juntamente com o Visual Studio 2005 ou Visual Web Developer Express. Não perca na
próxima edição a finalização da aplicação com muitos outros recursos do ASP.NET 2.0.
Fique ligado!
14

Desenvolvendo uma aplicação completa com ASP.NET 2.0 - Parte 3


Em continuação ao Mini-Curso de ASP.NET, apresentaremos a seção de segurança e
solicitação de orçamento. É importante ficar atento ao processo passo a passo, para que
você possa executar o Mini-Curso e aproveitar ao máximo o que será apresentado.

Segurança
Através do ASP.NET Configuration Site, podemos trabalhar toda a segurança da aplicação.
Abra o ASP.NET Configuration Site pelo Solution Explorer clicando no ícone conforme a
Figura 1.

Figura 1. ASP.NET Configuration Site


Clique na guia Security, onde a primeira configuração necessária é a autenticação, que
podemos trabalhar de duas formas:
Internet (Forms): a autenticação é baseada em um formulário de login e a
autenticação feita “na mão” pelo desenvolvedor;
Intranet (Windows): a autenticação é baseada no login na rede, ou seja, não
necessita de nenhum trabalho de autenticação. É mais utilizado em aplicações
corporativas.
Vale lembrar que muitas configurações de segurança usarão um BD especial criado
automaticamente pelo ASP.NET, o aspnetdb.

Problemas com o aspnetdb no SQL Server 2005 Express?


Caso tenha problemas, devido ao banco aspnetdb não estar registrado no SQL Server 2005
Express Edition, você pode utilizar o aspnet_regsql.exe
(C:\Windows\Microsoft.NET\Framework\v2.0.50727) para criar o database.
Verifique também, no arquivo machine.config
(C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG), se no node
<ConnectionStrings> a entrada LocalSqlServer está apontando corretamente para o
database criado.

Clique em Select Authentication Type localizado em Users. Altere a configuração para From
the Internet, pois trabalharemos com o tipo Forms, e clique em Done. Com isso já temos
toda a parte de autenticação pronta, isso mesmo, pronta!
Volte ao Visual Studio (sem fechar o site de configuração) e entre na Master Page. Abaixo
do SiteMap, adicione um LoginView, localizado na categoria Login da ToolBox. Esse controle
tem como objetivo criar Multiviews de acordo com o status do usuário (Logado ou
Anônimo).
A visualização default é a anônima, então arraste um controle Login sobre o LoginView ,
formate conforme seu gosto e altere a propriedade Orientation para Horizontal. Selecione a
SmartTag do LoginView e altere o view para LoggedInTemplate. Digite um texto, por
exemplo: “Olá” e arraste ao lado, o controle LoginName.
Logo abaixo adicione o texto: “para sair clique aqui” e arraste ao lado o controle
LoginStatus. Pronto, temos a tela de login e recepção do usuário. Só falta então ter o
usuário com um cadastro de usuários.
15

Adicionando usuários
Adicione ao projeto uma nova página chamada “NovoUsuario.aspx”. No Content da página
arraste o controle CreateUserWizard, ainda na categoria Login da ToolBox. Podemos
configurar todo o conteúdo para o idioma local nas propriedades do controle.
A única propriedade que vamos mudar é ContinueDestinationPageUrl para
“~/MenuPrincipal.aspx”, pois com isso ao finalizar o cadastro, o usuário é redirecionado à
página principal. Novamente na Master Page, adicione no LoginView de visualização
anônima (altere a view do controle para AnonymousTemplate) um Hyperlink localizado na
categoria Standard da ToolBox e altere a propriedade Text para “Novo Usuário” e
NavigateURL para “~/NovoUsuario.aspx”.
Finalmente podemos simular algo. No Solution Explorer, clique com o botão direito do
mouse sobre MenuPrincipal.aspx e View in Browser. Efetue o procedimento de cadastro
clicando no link Novo Usuário (Figura 2).

Figura 2. Cadastro do Usuário

Clique em Create User, então o cadastro é finalizado. Clique em Continue, com isso é feito e
redirecionamento ao Menu Principal e temos o resultado conforme a Figura 3.

Nota: Por padrão, o ASP.NET usa uma política de segurança para as senhas, que devem ser
maiores que sete dígitos e requerem um caractere especial (*, &, % etc.).

Figura 3. Usuário Logado


16

Efetue também testes através do login do site. Existem outros templates prontos que
podemos utilizar, como:
PasswordRecovery: lembrar a senha do usuário através de envio de e-mail;
ChangePassword: alterar a senha do usuário.

Trabalhando com grupos de usuários


Podemos trabalhar também com grupos de usuários, facilitando o gerenciamento de
permissões no site. Volte ao site de configuração e clique em Enable roles. Com isso
podemos criar grupos clicando em Create or Manage roles.
Crie um grupo chamado “Administrativo” (digite o nome e clique em Add Role) e clique em
Back. O objetivo é criar uma regra onde somente usuários desse grupo possam cadastrar
categorias e produtos.
Novamente no site de configuração, clique em Create access rules. Selecione o diretório
Cadastro, marque em Role a opção Administrativo e em Permission, marque Allow (Figura
4).

Figura 4. Configurando os acessos

Assim estamos dando direito de acesso aos membros do grupo Administrativo. Finalize,
clicando em OK. Clique agora em Manage Access Rules, sendo exibida configuração atual.
Estamos permitindo todos os usuários além dos usuários do grupo Administrativo. Clique
em Add new access rules, selecione All Users e Deny e clique em OK (certifique que o
diretório selecionado é o Cadastro). Agora sim, a pasta cadastros está segura.
Selecione o diretório Orcamento, clique em Add new access rules, marque a opção
Anonymous users, Deny e clique em OK. Com isso somente usuários logados entram nessa
pasta. Simule na aplicação a tentativa de acesso as páginas, sabendo do erro de falta de
permissão nas páginas.
Para adicionar um usuário a um grupo, na tela principal de Security no site de configuração,
acesse o Manage Users. Na listagem de usuários, clique em Edit Roles e selecione o grupo
desejado de cada usuário.
Quando entramos em um menu sem permissão, é redirecionado para uma página
login.aspx, essa é a configuração default. Para alterar, abra o arquivo web.config e altere a
tag <authentication mode="Forms" /> conforme o seguinte código:

<authentication mode="Forms">
<forms loginUrl="MenuPrincipal.aspx"/>
</authentication>
17

Finalmente temos a segurança completa no nosso site, muito mais fácil do que antes do
ASP.NET 2.0.

Orçamento
Como já mencionado nas partes anteriores, o usuário do sistema poderá gerar orçamentos
dos produtos que fornece para o cliente. Para isso, selecionará os dados do orçamento e os
itens que foram solicitados pelo Cliente.
Clique com o botão direito na pasta Orcamento, selecione a opção Add New Item e escolha
o template Web Form. Informe “Orcamento.aspx” no campo Name, selecione a opção Select
master page e clique Add. Na próxima tela o sistema solicita a Master Page para a página,
selecione o arquivo MiniCurso.master e confirme com OK.
Após a seleção da Master Page, a página é aberta para iniciar a construção do Orçamento.
Essa tela terá um conjunto de controles (que informarão os dados do Orçamento) e um
GridView contendo os produtos disponíveis para venda, podendo selecionar os itens em um
CheckBox.
Selecione então no ToolBox três TextBox, três Labels, um botão e formate-os semelhante a
Figura 5.

Figura 5. Incluindo os campos para registro do Orçamento


Além dos controles já adicionados, ainda será necessário selecionar os produtos que farão
parte do orçamento. Para isso, o usuário fará a seleção a partir de um GridView, utilizando
um CheckBox presente em uma das colunas.
Arraste então o GridView, crie uma conexão com o banco de dados, semelhante ao que já
fizemos nos outros exemplos, mas escolha a opção Specify a custom SQL statement or
stored procedure (Figura 6).

Figura 6. Selecionando uma instrução SQL personalizada ou Stored Procedure


Nessa tela você poderá informar uma instrução SQL personalizada ou até mesmo informar
uma Stored Procedure existente. Nesse exemplo, utilizaremos o código da Listagem 1 (na
aba Select).
18

Listagem 1. Código para retornar o produto, valor e sua descrição


SELECT Produto.produtoID,
Categoria.Descricao AS Categoria,
Produto.Descricao AS Descricao,
Produto.Valor
FROM Produto
INNER JOIN Categoria ON
Produto.categoriaID = Categoria.categoriaID.

Com isso, teremos a listagem dos produtos exibindo a descrição da categoria de cada
produto. As outras guias poderiam ser utilizadas para cada operação de sua fonte de dados,
colocando em cada Guia (Select, Insert, Update e Delete) o SQL correspondente.
Além das colunas que serão criadas automaticamente pelo controle, precisaremos incluir a
coluna do CheckBox para seleção dos produtos a fim de concluir o orçamento. Para isso,
precisamos incluir uma coluna do tipo TemplateField. Clique na Smart Tag do GridView e
escolha a opção Add New Column.
Selecione TemplateField em Choose a field type informe “Selecione” em Header Text e
clique OK. Agora que a coluna já está criada, é necessário adicionar o CheckBox. Para isso,
clique novamente na Smart Tag e selecione a opção Edit Template.
Essa funcionalidade mostra as diversas seções de uma coluna TemplateField. Por padrão, a
seção ItemTemplate é apresentada e é exatamente ela que é exibida na carga do GridView.
Assim, arraste um CheckBox para dentro dessa seção, configure a propriedade ID como
“chkSelecione” para que depois consigamos recuperar os valores selecionados. Veja na
Figura 7, como deve ficar o Template. Após esse passo, clique com o botão direito na
seção e escolha a opção End Template Editing.

Figura 7. Configurando o CheckBox para seleção dos produtos


Já temos quase tudo pronto, só falta codificar para que sejam recuperados os CheckBox’s
selecionados. Faremos isso no evento Click do botão Incluir Orçamento, que também
enviará um e-mail para o administrador do sistema para que avalie o orçamento e retorne
para o cliente.
A classe que envia e-mails no .NET Framework 2.0 é a System.Net.Mail e trabalharemos
com a mesma para enviar e-mail, através da aplicação. Para isso, clique duas vezes no
botão Incluir Orçamento e codifique conforme mostra a Listagem 2.
19

Listagem 2. Verificando os produtos selecionados e enviando e-mail


//importar o namespace //Body do e-mail
using System.Net.Mail; //(atente para o indice da coluna)
body += "Valor do Produto: R$ " +
CheckBox chk; Convert.ToDouble(
int idProduto;
item.Cells[4].Text) + "\n\n\n";
string body;
}
}
body = "Produtos Selecionados: \n";
foreach (GridViewRow item in GridView1.Rows)
MailAddress mailFrom = new MailAddress(
{ "minicurso@asp.net", "Mini Curso
//recupera o checkBox da primeira ASP.NET");
coluna //atente para o nome dos TextBox
//localizando pelo NOME da checkBox MailAddress mailTo = new MailAddress(
chk = txtEmailSolicitante.Text,
(CheckBox)item.Cells[0].FindControl( txtSolicitante.Text);
"chkSelecione"); //instancia a classe que configura o e-mail
a ser enviado
if (chk.Checked) MailMessage email = new MailMessage(mailFrom,
mailTo);
{
//recupera o ID do produto selecionado email.Subject = "Orçamento OnLine";
//(atente para o indice da coluna) email.Body = body;
idProduto = Convert.ToInt32(item.Cells[1].Text);
//acrescenta no Body do e-mail //instancia a classe que executa o envio
body += "Código: " + do e-mail
idProduto.ToString() + "\n"; SmtpClient smtp = new SmtpClient();
//endereço do Server
//recupera a descrição e armazena
direto no smtp.Host =
//Body do e-mail "mail.seu_host_de_email.com.br";
//porta no servidor de e-mail
//(atente para o indice da coluna) smtp.Port = 25;
body += "Descrição do Produto: " + //envia o objeto MailMessage
item.Cells[3].Text + "\n"; smtp.Send(email);
//recupera o valor e armazena direto
no
Após ter codificado, execute a aplicação e veja o resultado (Figura 8).

Figura 8. Aplicação em execução, selecionando os produtos no GridView

Você também pode gostar