lunes, 31 de agosto de 2009

Manejo de Estados

Variable de Sesión

En este artículo vamos a ver manejos de estados a través de las variables de sesión y aplicación y a través de cookies.
En primer lugar, agrego dos elementos al proyecto, elementos del tipo Web Form, para poder luego hacer referencia entre las páginas y mostrar la variable.


En la página principal agregamos una serie de tools, un label que contiene un mensaje del texto a ingresar, un textbox que es el mensaje ingresado (variable de sesión) y un button que nos va a conectar con la siguiente página.



 Luego hacemos doble click sobre el botón (página siguiente) de la página principal, en este evento (evento click del botón) creamos la variable de sesión y referenciamos la siguiente página con el siguiente código:

protected void Button3_Click(object sender, EventArgs e)
{
         Session.Add("Nombre", this.TextBox1.Text);
         Response.Redirect("~/Sitio/Pagina2.aspx");
}

En la página secundaria donde se va a mostrar la variable se agrega un label y se codifica lo siguiente:

protected void Page_Load(object sender, EventArgs e)
{
         this.Label2.Text = "Bienvenido " + Session["Nombre"].ToString();
}


Una vez realizado esto, se ejecuta y como resultado se obtendrá lo siguiente:


Una vez ingresado el nombre, hacemos click sobre el botón y se obtendrá lo siguiente:

Variables de Aplicación

Siguiendo con el proyecto de “Variable de Sesión”, para poder utilizar Variables de Aplicación debemos añadir al proyectoun elemento del tipo Global.asax, en el cual se va a crear la variable. 

Una vez dentro de Global.asax podemos ver las distintas opciones, para manejar por ejemplo información de inicio desesión (Session_Start) y de fin de sesión (Session_End), de inicio y fin de la aplicación. Nosotros vamos a crear una variable de aplicación llamada “Contador” inicializada en cero dentro de inicio de la aplicación (Aplication_Start), que se encarga de contar la cantidad de visitantes de la página. Para ello vamos a ingresar el siguiente código:

protected void Application_Start(object sender, EventArgs e)
{
          Application.Add("Contador",0);
}

Una vez creada la variable en el Global.asax, vamos a ir a la página principal y en la carga de la página (Load) ingresamos el siguiente código:

protected void Page_Load(object sender, EventArgs e)
{
        Application.Lock();
        Application["Contador"] = (int)Application["Contador"] + 1;
        Application.UnLock();
        Response.Write ("Usted es el visitante: " + Application["Contador"].ToString());
}

La segunda línea de código es la que se encarga de incrementar el contador cada vez que se carga la página y la última línea de código se encarga de mostrar el valor del contador. Mientras que la primera y la tercera es para evitar problemas de concurrencia en la página debido a que la variable es pública.
Hay que tener en cuenta que esta variable va a volver a cero cada vez que se reinicie el Internet Information Server, para que el contador no vuelva a cero se puede asociar la variable a un archivo que persista el valor.


Una vez listo esto ejecutamos el proyecto y obtendremos:

 
Y cada vez que refresquemos la página (F5), o salgamos y volvamos a entrar el contador aumentará, en este caso la página se refresco 3 veces.

 
Cookies
Para utilizar las cookies añadimos en la página principal un label y text box, y añadimos al botón (página siguiente) ya existente el código para crear la cookie. Por lo que quedaría de la siguiente manera:


protected void Button3_Click(object sender, EventArgs e)
{
        Session.Add("Nombre", this.TextBox1.Text);
        Response.Cookies.Add(new HttpCookie ("Equipo",TextBox2.Text));
        Response.Redirect("~/Sitio/Pagina2.aspx");
}

Luego en la página secundaria a la que hace referencia el botón, se le agrega un label en el cual se va a mostrar la cookie, para ello se agrega el siguiente código cuando se carga la página (load):


protected void Page_Load(object sender, EventArgs e)
{
          this.Label2.Text = "Bienvenido " + Session["Nombre"].ToString();
          lblequipo.Text = "Su equipo es: " + Request.Cookies["Equipo"].Value.ToString();
}

Una vez realizado estos pasos, al ejecutarse la aplicación se obtendrá lo siguiente:

Una vez ingresado el nombre y el eauipo, hacemos click sobre el botón y se obtendrá lo siguiente:

viernes, 28 de agosto de 2009

Creación de Master Page

En primer lugar, agrego un nuevo elemento al proyecto, un elemento del tipo Master Page, para crear un plantilla de la misma.

En él se define todo el diseño que se va a visualizar en todas las páginas que deseemos del proyecto.

Luego agrego una Content Page haciendo clic derecho en el elemento MasterPage.master y seleccionando Add Content Page. Ésta página será asignada al ContentPlaceHolder de esa Master Page.
El código HTML de la cabecera de las páginas que no pertenecen a ninguna Master Page es el siguiente:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default3" %>


Y cuando pertenecen a una Master Page, se visualiza de esta manera:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" Title="Untitled Page" %>

Y en la última parte, se especifica en que ContentPlaceHolder va a mostrarse la página:

Runat="Server">


Observamos que cuando modificamos el diseño de las Content Pages, no se puede modificar nada del Master Page.
Por último, agregamos otra página de contenido al sitio para crear navegabilidad añadiendo unos botones:




Se agradece el aporte a Mauro Luque.