ASP .NET - Revendo conceitos - Aplicação Currículos web - I


Uma das técnicas de aprendizado é  conhecida como "Fazendo e Aprendendo", onde partimos diretamente para a prática e conforme vamos construindo uma aplicação vamos aprendendo os conceitos relacionados durante a sua construção.

Pois neste artigo iremos trilhar este caminho para rever conceitos ASP .NET enquanto construímos uma aplicação simples mas funcional usando os recursos da tecnologia ASP .NET.

Objetivo

O objetivo da aplicação é permitir o cadastramento de usuários e seus currículos na internet. Ela também permitirá a edição e  visualização do currículo de um usuário no formato PDF.

A aplicação usa os recursos básicos de uma aplicação ASP .NET usando os Web Forms e foi construída de uma forma onde poderemos aprender os seguintes conceitos:

Recursos usados

Definindo o modelo de dados

Como esta é um abordagem tradicional cujo objetivo é rever conceitos ASP .NET com acesso a um banco de dados relacional eu não vou usar nenhuma ferramenta ORM como NHibernate ou o Entity Framework mas vou começar construindo o banco de dados e as tabelas da aplicação usando o SQL Server Management Studio.

A aplicação irá acessar um banco de dados SQL Server 2005 chamado Curriculos e conterá as seguintes tabelas:

 A estrutura de cada tabela é dada a seguir:

Usurios InfoPessoal
InfoEducacao InfoProfissional
As tabelas InfoEducacao, InfoProfissional e InfoHabilidades possuem os mesmos campos e não possuem chave primária nem o campo usuarioid não é do tipo identidade

InfoHabilidades

 

O diagrama de relacionamento entre as tabelas pode ser visto a seguir:

Criando uma aplicação ASP .NET Web Forms

A ASP .NET faz parte do .NET Framework e por isso aproveita ao máximo os recursos da programação orientada a objetos oferecidos pela plataforma. Quando você cria uma página web usando ASP .NET você esta criando um objeto com comportamento (os eventos da página), os comandos (métodos) e os estados (os objetos instanciados).

A abordagem de desenvolvimento Web Forms da ASP .NET é semelhante ao desenvolvimento desktop para o VB .NET onde cada objeto de uma página pode ser programado e possui eventos.  A figura abaixo mostra o modelo Web Forms em ação:

Usando Web Forms podemos incluir um controle Button em uma página e manipular a ação do usuário ao clicar no botão colocando código no evento Click do botão.

O outro modelo de desenvolvimento de aplicações web com ASP .NET é o modelo ASP .NET MVC, sobre o qual eu  não vou dar mais detalhes neste artigo.

O termo Web Form na verdade significa uma página web e uma página ASP .NET possui controles de servidor ou seja objetos. Um Web Form é composto por dois arquivos: um arquivo contendo o código de marcação e um arquivo contendo código mais conhecido como code-behind.  Para executar uma página ASP .NET você precisa de um navegador para renderizar o código de marcação (gerando HTML) e de um servidor web para executá-lo.

Para mostrar como isso funciona na prática vamos iniciar com a criação do nosso web site usando o Visual Web Developer 2010 Express Edition.(VWD 2010)

Abra o VWD 2010 e no menu File clique em New Web Site e a seguir selecione a linguagem Visual C# e o template ASP .NET Web Site;

Informe o nome Curriculos e tecle em OK;

Ao utilizar o template ASP .NET Web Site teremos uma estrutura de pastas e arquivos previamente criados e nosso projeto irá aproveitar alguns destes arquivos e vamos excluir outros.

Exclua os seguintes arquivos do web site:

  1. Pasta Account
  2. Pasta Scripts

Vamos incluir as seguintes pastas em nosso web site:

  1. Fotos - armazenar as fotos usadas nos currículos;
  2. Imagens - armazenar as imagens usadas na aplicação web;
  3. Pdf - armazenar os arquivos PDF dos currículos gerados;

Para incluir estas pastas selecione o menu WebSite e clique em New Folder informando o nome da pasta. Após criar as pasta vamos incluir os arquivos usados no projeto em cada pasta.

Obs: A pasta App_Code será criada quando formos definir a classe Curriculo no projeto.

Nosso web site irá possuir as seguintes páginas:

As páginas About.aspx e Default.aspx serão aproveitadas a partir do template gerado. As demais mais páginas serão incluídas no projeto a partir do menu WebSite-> Add New Item -> Web Form;

Após informar o nome do arquivo marque as opções : Select master page e Place code in separate file

Seguiremos este procedimento para criar as páginas : Menu.aspx, EditarCurriculo.aspx, ErroLogin.aspx e VisualizarCurrilo.aspx

Nossa aplicação também usará os seguintes arquivos:

A estrutura do Web Site, após a criação das páginas, pode ser visto na janela Solution Explorer conforme figura a seguir;

Fazendo pequenos ajustes

Vamos ajustar o arquivo Master page Site.Master para exibir o seguinte leiaute:

O código necessário para incluir a imagem e o título da página é o seguinte:

             .................
            <div class="title">
                <h2>
                    <asp:Image ID="Image1" runat="server" Height="102px" ImageUrl="~/Imagens/curriculo4.jpg" Width="205px" />  
                    <span class="style1">
                    Currículos Web</span>
               </h2>
            </div>
           ................

O código necessário no arquivo Site.Master para incluir a guia Menu é dado a seguir:

   .............
  <div class="clear hideSkiplink">
                <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
                    <Items>
                        <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/>
                        <asp:MenuItem NavigateUrl="~/Menu.aspx" Text="Menu"/>
                        <asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
                    </Items>
                </asp:Menu>
            </div>
................

A página About.aspx possuirá o seguinte leiaute:

Ajustando o arquivo Global.asax

Vamos incluir a string de conexão com o banco de dados no arquivo Global.asax no evento Application_Start de forma que ela estará disponível assim que a aplicação iniciar e poderemos acessá-la em toda a aplicação;

O arquivo Global.asax ( lembra do Global.asa no ASP ? ) é um arquivo texto que pode ser usado ou não (ele é opcional ) na configuração de uma aplicação Web. Cada arquivo Global.asax deve estar presente no diretório raiz da aplicação web.

O arquivo Global.asax  contém código que deve ser executado em resposta a alguns eventos relacionados a uma aplicação web.  Abaixo uma estrutura básica com seus métodos mais importantes:

<script language="VB" runat=server>

Sub Application_Start(Sender As Object, E As EventArgs)

End Sub

Sub Session_Start(Sender As Object, E As EventArgs)

End Sub

Sub Application_End(Sender As Object, E As EventArgs)

End Sub

Sub Session_End(Sender As Object, E As EventArgs)

End Sub

</script>

Abaixo vemos a linha de código relativa a string de conexão com o banco de dados Curriculo no SQL Server 2005;

<%@ Application Language="C#" %>
<script runat="server">
    void Application_Start(object sender, EventArgs e) 
    {
        // Code that runs on application startup
        Application["ConexaoDBSQLCurriculos"] = @"Data Source=.\SQLEXPRESS;Initial Catalog=Curriculos;Integrated Security=SSPI;";
    }
    void Application_End(object sender, EventArgs e) 
    {
        //  Code that runs on application shutdown
    }
    void Application_Error(object sender, EventArgs e) 
    { 
        //Code that runs when an unhandled error occurs 
    }
    void Session_Start(object sender, EventArgs e) 
    { 
        // Code that runs when a new session is started 
    }
    void Session_End(object sender, EventArgs e) 
    {
        // Code that runs when a session ends. 
        // Note: The Session_End event is raised only when the sessionstate mode
        // is set to InProc in the Web.config file. If session mode is set to StateServer 
        // or SQLServer, the event is not raised.
    }
</script>

 

Criando a classe Curriculo

Vamos incluir uma classe chamada Curriculo que será usada para receber e obter informações de um currículo;

No menu  Web Site -> Add New Item selecione o template Class e informe o nome Curriculo.cs;

O arquivo será criado na pasta App_Code e deverá possuir o seguinte código:

using System;
public class Curriculo
{
        public int ID { get; set; }
        public int UsuarioID { get; set; }
        public string nome { get; set;}
        public string endereco { get; set;}
        public string cidade { get; set;}
        public string estado { get; set;}
        public string cep { get; set;}
        public string pais { get; set;}
        public string telefone { get; set;}
        public string celular { get; set;}
        public string email { get; set;}
        public DateTime nascimento { get; set;}
        public string foto { get; set; }
        public int ativo { get; set;}
        //
        public string infoEducacao { get; set; }
        public string infoProfissional { get; set; }
        public string infoHabilidades { get; set; }
}

O arquivo web.config é criado por padrão e contém a string e conexão para o banco de dados aspnetdb.mdf usado para realizar a autenticação do usuário.

No nosso exemplo não vamos usar este recurso mantendo apenas o arquivo web.config original.

Incluindo a referência a biblioteca iTextSharp

Como iremos gerar arquivos PDF vamos usar a biblioteca iTextSharp referenciando-a em nosso projeto.

Então primeiro faça o download da library para poder referenciá-la em seu projeto web. Eu fiz o download da library e a descompactei em: C:\Program Files (x86)\itextsharp-all-5.1.2\itextsharp-dll-core-5.1.2

Vamos agora incluir uma referência a biblioteca iTextSharp  em nosso projeto clicando com o botão direito sobre o nome do projeto e selecionando a opção Add Reference;

A seguir na janela Add Reference, clique na guia Browse e selecione a biblioteca itextsharp.dll do local onde você a instalou;

Dessa forma temos toda estrutura pronta para podermos definir as demais páginas e criar a nossa aplicação.

Na segunda parte do artigo vamos começar definindo a página Default.aspx onde é feito o login do usuário e onde cadastramos um novo usuário.

Aguarde a continuação em : ASP .NET - Revendo conceitos - Aplicação Currículos web - II

"Quem ama a sua vida perde-la-á, e quem neste mundo aborrece a sua vida, guarda-la-á para a vida eterna." João 12:25

Referências:


José Carlos Macoratti