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:

No hay comentarios:

Publicar un comentario