Compartilhe

avatar

Recentemente eu estava trabalhando no meu site e decidi que queria implementar um livro de visitas. Comecei a pesquisar na Web para encontrar o melhor livro de visitas para o meu site, mas quando nenhum apareceu, pensei: ‘Ei, sou um desenvolvedor, por que não criar o meu próprio?’

Foi muito fácil criar um livro de visitas – você também pode fazer isso. Neste tutorial, vou mostrar como. Presumo que você já tenha conhecimento sobre os fundamentos da programação ASP.NET, que conheça as técnicas envolvidas no codebehind e que tenha algumas habilidades em XML/XSL.

Principais conclusões

  • A criação de um livro de visitas em ASP.NET envolve a utilização de dois formulários da web – um para entrada do usuário e outro para exibir os comentários, arquivos code-behind, um banco de dados para armazenar informações e XSL para visualização.
  • O formulário do livro de visitas inclui campos para nome, localização, e-mail, site e comentário. As informações inseridas pelo usuário são armazenadas em um arquivo XML usando controles validadores ASP.NET e um evento de botão de envio.
  • O arquivo codebehind possui uma função chamada SaveXMLData() que salva as informações do usuário no banco de dados XML. Esses dados são então exibidos no segundo formulário da web usando XSLT para transformar dados XML em HTML.
  • O design do livro de visitas pode ser personalizado usando HTML e CSS, e recursos adicionais como captcha para segurança, sistema de classificação, moderação de entradas, função de pesquisa e botões de compartilhamento de mídia social podem ser adicionados. Os dados do livro de visitas podem ser copiados exportando o banco de dados para um arquivo.
Visão geral

O que precisamos para criar um livro de visitas? Precisamos de dois formulários da Web: um no qual o usuário possa inserir seu nome, endereço de e-mail e comentário, e outro que seja usado para exibir esses comentários à medida que eles são registrados no livro de visitas. É claro que podemos construir essa funcionalidade em um formulário Web, mas para ter um código limpo, usarei dois formulários Web com vários arquivos codebehind (discutirei isso com mais detalhes em um momento).

Também precisaremos de um banco de dados para armazenar as informações inseridas por meio do formulário. Usei um arquivo XML simples (um banco de dados) para armazenar as informações inseridas pelo usuário. Para a visualização do XML usaremos XSL.

Então, em resumo, precisamos do seguinte:

  • Dois formulários da Web
  • Codebehind
  • Banco de dados
  • XSL

Em um livro de visitas, geralmente é suficiente armazenar o nome, localização, endereço de e-mail, endereço do site e comentários do usuário. Claro, você pode armazenar mais campos, mas para nossos propósitos, estes são suficientes. Armazenaremos esses dados no arquivo XML, que será mais ou menos assim:

 

 
   Sonu Kapoor
   Germany
   sonu@codefinger.de
   www.codefinger.de
   This guestbook is written by Sonu Kapoor.  
   I hope you like it. To learn how to create such a guestbook,  
   read the whole story on my website.
 
Assinando o livro de visitas

Permitiremos que o usuário ‘assine’ nosso livro de visitas inserindo algumas informações em um simples formulário da Web – em nosso exemplo, este é o arquivo guestbook.aspx. Eu uso os seguintes campos no formulário da Web:

  • Nome
  • Localização
  • E-mail
  • Site
  • Comentário

Aqui está o código:


Inherits="Guestbook" %> 
...
...doing some visualisation stuff
...


ControlToValidate="name"  
ErrorMessage="You must enter a value into textbox1"  
Display="dynamic">Enter name  




ControlToValidate="location" ErrorMessage="You must enter  
a value into textbox1" Display="dynamic">
Enter location



columns="50" rows="10" wrap="true" runat="server"/>

ControlToValidate="comment" ErrorMessage="You must enter  
a value into textbox1" Display="dynamic">
Enter comment

OnClick="Save_Comment"/>

Para evitar confundi-lo com código desnecessário, removi as tags de visualização — incluindo tabela, cabeçalho da tabela etc. — deste exemplo (embora, é claro, todas elas estejam incluídas no código para download fornecido no final deste tutorial). Como exibimos apenas um formulário simples com alguns campos e botões, você não consegue ver nenhum código de programação real neste arquivo. Isso ocorre porque todas as funcionalidades estão ocultas no codebehind.

Na primeira linha do código acima, configurei o atributo SRC para informar ao arquivo ASP.NET que estamos usando o arquivo codebehind Guestbook.cs. Também configurei o atributo Inherits com o nome de classe correspondente. Este atributo permite ao arquivo saber qual classe herdar.

A seguir, implementei os campos de texto obrigatórios. Lembre-se que se você quiser usar as mesmas variáveis ​​no codebehind, elas precisam ter o mesmo ID em ambos os arquivos, e devem ser declaradas como públicas.

Na próxima seção do código, usei os controles validadores do ASP.NET. Esses controles verificam se o usuário inseriu um valor no campo de texto, sem fazer uma viagem de ida e volta ao servidor. O código é executado no lado do cliente.

Finalmente, implementei um botão de envio com um OnClick evento chamado Save_Comment. Este evento é utilizado para armazenar as informações inseridas no arquivo XML pelo usuário. A função deste evento está disponível em Guestbook.cs. Também implementei um botão de reset – e é isso! Nada mais precisa ser feito no formulário da Web. Agora, se você executar o guestbook.aspx, deverá ver um formulário da Web semelhante a este:

Agora sabemos como exibir o formulário Web, mas ainda não vimos o código que trata o evento em guestbooks.cs. Vamos dar uma olhada nisso agora.

using System;  
using System.Web;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Xml;  
 
public class Guestbook : Page  
{  
// Create the required webcontrols with the same name as  
in the guestbook.aspx file  
 public TextBox name;  
 public TextBox location;  
 public TextBox email;  
 public TextBox website;  
 public TextBox comment;  
 
 public void Save_Comment(object sender, EventArgs e)  
 {  
  // Everything is all right, so let us save the data  
into the XML file  
  SaveXMLData();  
 
  // Remove the values of the textboxes  
  name.Text="";  
  location.Text="";  
  website.Text="";  
  email.Text="";  
  comment.Text="";  
 }  
}  
 
private void SaveXMLData()  
{  
 // Load the xml file  
 XmlDocument xmldoc = new XmlDocument();  
 xmldoc.Load( Server.MapPath("guestbook.xml") );  
 
 //Create a new guest element and add it to the root node  
 XmlElement parentNode = xmldoc.CreateElement("guest");  
 xmldoc.DocumentElement.PrependChild(parentNode);  
 
 // Create the required nodes  
 XmlElement nameNode = xmldoc.CreateElement("name");  
 XmlElement locationNode = xmldoc.CreateElement("location");  
 XmlElement emailNode = xmldoc.CreateElement("email");  
 XmlElement websiteNode = xmldoc.CreateElement("website");  
 XmlElement commentNode = xmldoc.CreateElement("comment");  
 
 // retrieve the text  
 XmlText nameText = xmldoc.CreateTextNode(name.Text);  
 XmlText locationText = xmldoc.CreateTextNode(location.Text);  
 XmlText emailText = xmldoc.CreateTextNode(email.Text);  
 XmlText websiteText = xmldoc.CreateTextNode(website.Text);  
 XmlText commentText = xmldoc.CreateTextNode(comment.Text);  
 
 // append the nodes to the parentNode without the value  
 parentNode.AppendChild(nameNode);  
 parentNode.AppendChild(locationNode);  
 parentNode.AppendChild(emailNode);  
 parentNode.AppendChild(websiteNode);  
 parentNode.AppendChild(commentNode);  
 
 // save the value of the fields into the nodes  
 nameNode.AppendChild(nameText);  
 locationNode.AppendChild(locationText);  
 emailNode.AppendChild(emailText);  
 websiteNode.AppendChild(websiteText);  
 commentNode.AppendChild(commentText);  
 
 // Save to the XML file  
 xmldoc.Save( Server.MapPath("guestbook.xml") );  
 
 // Display the user the signed guestbook  
 Response.Redirect("viewguestbook.aspx");  
 }  
}

Uau! Esse é o nosso arquivo codebehind… mas o que realmente acontece aqui? Você não vai acreditar, mas a resposta é: “não muito”!

Primeiro, implementamos os namespaces mínimos necessários para acessar várias funções importantes. Então crio uma nova classe chamada Guestbook:

public class Guestbook : Page

Observe que é essa classe herdada pelo arquivo guestbook.aspx. Em seguida declaramos 5 variáveis ​​públicas do tipo textbox. Lembre-se que aqui os nomes devem ser idênticos aos que usamos quando criamos as caixas de texto em guestbook.aspx. Então, como você pode ver, usamos o Save_Comment evento, que é acionado pelo botão de envio que incluímos no arquivo guestbookpx. Este evento é usado para salvar os dados.

O Processo de Salvamento

A função SaveXMLData() salva as informações para nós. Como estamos usando um banco de dados XML para armazenar as informações, usamos o XmlDocument, XmlElement e classes XmlText, que fornecem todas as funções que precisamos.

A seguir, criamos um novo XMLDocument objeto de classe e carregue o arquivo guestbook.xml. Os nós necessários são criados com a função CreateElemente as informações inseridas pelo usuário são recuperadas e armazenadas em um objeto de XmlText. A seguir, armazenamos os nós criados sem nenhum valor, usando a função AppendChild em conjunto com os principais XmlDocument objeto.

E por fim, os valores são armazenados nos nós que acabamos de criar, salvamos todas as alterações no arquivo guestbook.xml e redirecionamos a página para viewguestbook.aspx, onde o comentário armazenado é exibido.

Visualizando o livro de visitas

Para visualizar o livro de visitas, devemos criar outro formulário Web:


Inherits="ViewGuestbook" %>

Como você pode ver, este formulário da Web não faz muita coisa. Ele simplesmente chama o arquivo codebehind, ViewGuestbook.cs. Vamos dar uma olhada neste arquivo.

using System;   
using System.Web;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Xml;  
using System.Xml.Xsl;  
using System.IO;  
 
public class ViewGuestbook : Page  
{  
 private void Page_Load(object sender, System.EventArgs e)  
 {  
   //Load the XML file  
   XmlDocument doc = new XmlDocument( );  
   doc.Load( Server.MapPath("guestbook.xml") );  
 
   //Load the XSL file  
   XslTransform xslt = new XslTransform();  
   xslt.Load( Server.MapPath("guestbook.xsl") );  
 
   string xmlQuery="//guestbook";  
   XmlNodeList nodeList=doc.Document  
Element.SelectNodes(xmlQuery);  
 
   MemoryStream ms=new MemoryStream();  
   xslt.Transform( doc, null, ms);  
   ms.Seek( 0, SeekOrigin.Begin );  
 
   StreamReader sr = new StreamReader(ms);  
 
   //Print out the result  
   Response.Write(sr.ReadToEnd());  
 }  
}

Eu criei esta classe para exibir todos os comentários enviados através do livro de visitas aos nossos usuários. Novamente, a primeira coisa que fazemos é implementar os namespaces necessários e, como estamos usando XSL para a visualização, precisamos ter certeza de incluir o namespace System.Xml.Xsl.

Então criamos uma nova classe chamada ViewGuestbookcom uma função interna privada chamada Page_Load. Esta função é sempre chamada quando a página é carregada ou quando o usuário realiza uma atualização. Aqui, a função carrega o arquivo guestbook.xml e, em seguida, a classe XslTranform é usada para transformar os elementos XML em HTML antes de carregarmos o guestbook.xsl com a ajuda de um XslTransform objeto.

A seguir, criamos um novo objeto de classe XmlNodeListo que nos permitirá selecionar os nós necessários. Usamos então a classe MemoryStreamdisponível através do namespace System.IOpara criar um fluxo que tenha memória como armazenamento de apoio e usar o Transform função para atribuir os dados xml a este fluxo de memória. O Seek função define a posição atual para zero.

Criamos então um objeto da classe StreamReaderque lê o fluxo e imprime o resultado com a ajuda da função ReadToEnd(). Esta função lê o fluxo da posição atual até o final. Se você executar viewguestbook.aspx, deverá ver um formulário da Web como este:

1061_webform2

O XSL

Como já mencionei, utilizamos XSL para a transformação dos dados de XML para HTML. Presumi que você já tenha experiência com XSLT, então abordarei apenas os aspectos importantes aqui. Usei um loop XSL for-each para percorrer todos os convidados do livro, que se parece com isto:

   
     

E no loop chamamos o nome do modelo XSL, que se parece com isto:

     
Conclusão

Como você pode ver, não é muito difícil criar um livro de visitas. Boa sorte! E não se esqueça de baixar os arquivos de exemplo aqui.

Perguntas frequentes (FAQs) sobre como criar seu próprio livro de visitas com ASP.NET

Como posso personalizar o design do meu livro de visitas em ASP.NET?

Personalizar o design do seu livro de visitas em ASP.NET envolve modificar o código HTML e CSS. Você pode alterar o layout, o esquema de cores, as fontes e outros elementos de design. Se você estiver familiarizado com HTML e CSS, poderá editar o código diretamente. Caso contrário, existem muitos recursos e tutoriais online disponíveis para ajudá-lo a aprender. Lembre-se de sempre fazer backup do seu código antes de fazer qualquer alteração.

Como posso adicionar um Captcha ao meu livro de visitas para fins de segurança?

Adicionar um captcha ao seu livro de visitas pode ajudar a evitar spam e entradas automatizadas de bots. ASP.NET fornece suporte integrado para captcha. Você pode usar o serviço reCAPTCHA fornecido pelo Google, que é gratuito e amplamente utilizado. Você precisará registrar seu site no reCAPTCHA, obter as chaves necessárias e adicionar o código reCAPTCHA ao formulário do livro de visitas.

Posso adicionar um sistema de classificação ao meu livro de visitas?

Sim, você pode adicionar um sistema de classificação ao seu livro de visitas. Isso pode ser feito adicionando um novo campo ao seu banco de dados para armazenar a classificação e, em seguida, adicionando o código necessário ao formulário do livro de visitas para que os usuários selecionem uma classificação. Você também precisará modificar seu código para exibir as avaliações em cada entrada do livro de visitas.

Como posso moderar as entradas do livro de visitas antes de serem publicadas?

Para moderar entradas do livro de visitas, você pode adicionar um novo campo ao seu banco de dados para indicar se uma entrada foi aprovada para publicação. Quando uma nova entrada é enviada, ela pode ser definida como “não aprovada” por padrão. Você pode então criar uma página de administração onde poderá revisar e aprovar entradas.

Posso adicionar uma função de pesquisa ao meu livro de visitas?

Sim, você pode adicionar uma função de pesquisa ao seu livro de visitas. Isso pode ser feito adicionando um formulário de pesquisa à página do seu livro de visitas e, em seguida, modificando seu código para filtrar as entradas do livro de visitas com base nos critérios de pesquisa. ASP.NET fornece suporte integrado para consultas de banco de dados, que você pode usar para implementar a função de pesquisa.

Como posso fazer backup dos dados do meu livro de visitas?

Fazer backup dos dados do seu livro de visitas é crucial para evitar perda de dados. Você pode fazer backup de seus dados exportando seu banco de dados para um arquivo. A maioria dos sistemas de gerenciamento de banco de dados, incluindo o SQL Server usado pelo ASP.NET, fornece ferramentas para exportar e importar bancos de dados.

Posso usar um sistema de banco de dados diferente com ASP.NET?

Sim, o ASP.NET oferece suporte a vários sistemas de banco de dados. Embora o SQL Server seja o sistema de banco de dados padrão, você também pode usar MySQL, PostgreSQL, Oracle e outros. Você precisará modificar sua cadeia de conexão e possivelmente algumas de suas consultas de banco de dados para usar um sistema de banco de dados diferente.

Como posso otimizar meu livro de visitas para dispositivos móveis?

Para otimizar seu livro de visitas para dispositivos móveis, você pode usar técnicas de design responsivo. Isso envolve o uso de layouts flexíveis, imagens flexíveis e consultas de mídia CSS para ajustar o design com base no tamanho da tela. ASP.NET oferece suporte a design responsivo e há muitos recursos e tutoriais on-line disponíveis para ajudá-lo a implementá-lo.

Posso adicionar botões de compartilhamento de mídia social às entradas do meu livro de visitas?

Sim, você pode adicionar botões de compartilhamento de mídia social às entradas do seu livro de visitas. Existem muitos serviços online que fornecem códigos prontos para uso para botões de mídia social. Você pode simplesmente copiar o código e colá-lo na página do seu livro de visitas.

Como posso melhorar o desempenho do meu livro de visitas?

Melhorar o desempenho do seu livro de visitas pode envolver diversas estratégias, como otimizar as consultas ao banco de dados, usar cache e minimizar o tamanho dos arquivos HTML, CSS e JavaScript. ASP.NET fornece suporte integrado para muitas técnicas de otimização de desempenho.

Written by

Categorias