Sabendo que a tecnologia Active Server Pages proporcionada pelo servidor de aplicação nos possibilita criar aplicações web dinâmicas utilizando .NET, vamos então criar um motor básico que utiliza o principio usado por quase todas as aplicações web para o mundo corporativo, ou seja manipulação de dados.
Em aplicações Enterprise os dados na grande maioria das vezes é manipulado através de um servidor de banco de dados relacional, entretanto neste primeiro exemplo vamos utilizar um objeto C# que possibilita a criação de listas para manipular os dados, ressaltando o que realmente nos interessa neste momento é apenas o esqueleto de uma simples aplicação que mostra, adiciona, edita e deleta dados através de uma interface com o usuário.
Criando uma Aplicação Web C#
1- Crie uma aplicação do tipo ASP.NET Web Application com o modelo C# Empty e chame seu projeto de DAWebApp, crie uma nova pagina WebForms chamada default. Crie também uma classe chamada Menssagem. Utilize o código abaixo para cada respectivo arquivo e compile a aplicação:
2 – Para adicionar dados utilizamos a pagina adados.aspx (add), que contem os componentes de acordo com os arquivos abaixo:
3 – Para editar os dados utilizamos a pagina udados.aspx (update) que contem os componentes de acordo com os arquivos abaixo:
4 – Para remover os dados utilizamos a pagina ddados.aspx (delete) cujo código esta disponível também logo abaixo:
Exemplo:
Neste exemplo utilizamos o conceito básico de manipulação de objetos utilizando objetos de lista, que fazem parte do framework de coleções do C#.
Este modelo de aplicação utilizando lista armazena o objeto em uma sessão do servidor de aplicação, tente abrir um outro navegador como o Firefox por exemplo, enquanto roda sua aplicação no Internet Explorer, alimente dados na lista e você irá constatar que devido o uso da sessão cada navegador possui uma lista com dados distintos, já que cada um utiliza uma sessão diferente.
C#
Objeto – Menssagem.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace DaWebApp { public class Menssagem { // Declara atributos private int id; private string nome; private string menssagem; // Construtor padrão public Menssagem() { } // Construtor Overload public Menssagem(int id, string nome, string menssagem) { // Inicializa valores; this.id = id; this.nome = nome; this.menssagem = menssagem; } // Propriedades public int Id { get { return id; } set { id = value; } } public string Nome { get { return nome; } set { nome = value; } } public string Msg { get { return menssagem; } set { menssagem = value; } } } }
default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="DaWebApp._default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
default.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace DaWebApp { public partial class _default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Session["registros"] == null) { // Cria lista para o objeto List<Menssagem> msg = new List<Menssagem>(); // Adiciona dados ao objeto msg.Add(new Menssagem(1, "Ricardo", "Olá Pessoal")); msg.Add(new Menssagem(2, "Mantovani", "Bem-vindos ao Desenvolvimento Aberto," + " adicione, altere e exclua dados desta tabela")); // Adiciona objeto a sessão Session["registros"] = msg; } // Cria pagina no método HTTP GET if (Request.HttpMethod.Equals("GET")) { doGet(); } } private void doGet() { // Cria estilo CSS Response.Write("<head>"); Response.Write("<style>"); Response.Write("td, th {"); Response.Write("border: none;"); Response.Write("background-color: #dddddd;"); Response.Write("padding: 5px;"); Response.Write("width: 200px; }"); Response.Write("</style>"); Response.Write("</head>"); // Titulo da pagina Response.Write("<h1>Desenvolvimento Aberto - Listas </h1>"); // Cria tabela Response.Write("<table>"); Response.Write("<tr>"); Response.Write("<th>ID:</th>"); Response.Write("<th>Nome:</th>"); Response.Write("<th>Comentário:</th>"); Response.Write("<th>Ação:</th>"); Response.Write("</tr>"); // Recupera objeto da sessão List<Menssagem> registros = (List<Menssagem>)Session["registros"]; // Itera objeto foreach (Menssagem reg in registros) { Response.Write("<tr>"); Response.Write("<td>" + reg.Id + "</td>"); Response.Write("<td>" + reg.Nome + "</td>"); Response.Write("<td>" + reg.Msg + "</td>"); // Link de edição Response.Write("<td><center>"); Response.Write("<a href='udados.aspx?identificador=" + reg.Id + "'>Editar</a> | "); Response.Write("<a href='ddados.aspx?identificador=" + reg.Id + "'>Apagar</a>"); Response.Write("</center></td>"); Response.Write("</tr>"); } Response.Write("</table>"); // Define link para formulario de adicionar dados Response.Write("<P> <a href='adados.aspx'>Adicione um comentário</a> </p>"); } } }
adados.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="adados.aspx.cs" Inherits="DaWebApp.adados" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <h1>Desenvolvimento Aberto - Adiciona Menssagem</h1> <form id="form1" runat="server"> <div> <asp:Label ID="Label2" runat="server" Text="Id:entificador "></asp:Label> <br /> <asp:TextBox ID="TextBox1" runat="server" Width="135px"></asp:TextBox> <br /> <asp:Label ID="Label1" runat="server" Text="Nome:"></asp:Label> <br /> <asp:TextBox ID="TextBox2" runat="server" Width="229px"></asp:TextBox> <br /> <br /> <asp:TextBox ID="TextBox3" runat="server" Height="118px" TextMode="MultiLine" Width="269px"></asp:TextBox> <br /> <br /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Adicionar" Width="274px" /> </div> </form> </body> </html>
adados.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace DaWebApp { public partial class adados : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { // recupera parametro string parametro = Request.QueryString["identificador"]; // Recupera objeto da sessão List<Menssagem> registros = (List<Menssagem>)Session["registros"]; // Adiciona registros registros.Add(new Menssagem(Convert.ToInt32(TextBox1.Text), TextBox2.Text, TextBox3.Text)); Response.Redirect("default.aspx"); } } }
udados.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="udados.aspx.cs" Inherits="DaWebApp.udados" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <h1>Desenvolvimento Aberto - Altera Dados</h1> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="Identificador:"></asp:Label> <br /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <br /> Nome:<br /> <asp:TextBox ID="TextBox2" runat="server" Width="194px"></asp:TextBox> <br /> <br /> <asp:Label ID="Label2" runat="server" Text="Menssagem:"></asp:Label> <br /> <asp:TextBox ID="TextBox3" runat="server" Height="122px" TextMode="MultiLine" Width="209px"></asp:TextBox> <br /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Alterar" Width="112px" /> </div> </form> </body> </html>
udados.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace DaWebApp { public partial class udados : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // Verifica se a resposta não é um postback if (!IsPostBack) { // Recupera parametro string parametro = Request.QueryString["identificador"]; // Alinha ID com indice da lista int id = Convert.ToInt32(parametro); id -= 1; // Recupera objeto da sessão List<Menssagem> registros = (List<Menssagem>)Session["registros"]; // Exibe objeto if (Session["registros"] != null) { TextBox1.Text = Convert.ToString(registros[id].Id); TextBox2.Text = registros[id].Nome; TextBox3.Text = registros[id].Msg; } } } protected void Button1_Click(object sender, EventArgs e) { // Recupera parametro string parametro = Request.QueryString["identificador"]; // Alinha ID com o indice int id = Convert.ToInt32(parametro); id -= 1; // Recupera obeto da sessão List<Menssagem> registros = (List<Menssagem>)Session["registros"]; // Altera propriedades da lista registros[id].Id = Convert.ToInt32(TextBox1.Text); registros[id].Nome = TextBox2.Text; registros[id].Msg = TextBox3.Text; // Redireciona pagina Response.Redirect("default.aspx"); } } }
ddados.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ddados.aspx.cs" Inherits="DaWebApp.ddados" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
ddados.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace DaWebApp { public partial class ddados : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // Recupera parametro string parametro = Request.QueryString["identificador"]; // Alinha ID com indice da lista int id = Convert.ToInt32(parametro); id -= 1; // Recupera objeto da sessão List<Menssagem> registros = (List<Menssagem>)Session["registros"]; // Remove registro da lista registros.RemoveAt(id); // Alinha indice com ID id += 1; // Define Menssagem ao usuario Response.Write("<h1>Desenvolvimento Aberto</h1>"); Response.Write("Registro: ID:" + id + " removido com sucesso <br>"); Response.Write("<a href='default.aspx'>Voltar</a>"); } } }