ASP.NET állapotkezelés 1. rész – Cookie

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

Ebben a sorozatban az ASP.NET által nyújtott állapotkezelési lehetőségeket fogom bemutatni. Kezdésként mindjárt jöjjenek a sütik!

A sütik kis méretű szöveges fájlok, amelyek a kliens gépén kerülnek eltárolásra. Azért van rájuk szükség, hogy az egyes webalkalmazások a számukra szükséges kis mennyiségű információt adott esetben megszerezhessék a klienstől, illetve újra felhasználhassák azt. Sütiket általában azonosításhoz használunk, azonban számos más egyéb funkció megvalósításához is hasznos lehet. Hátránya, hogy az egyes sütik számítógéphez kötöttek, nem pedig a konkrét felhasználóhoz.

A mostani példában az oldal testreszabhatóságát szemléltetném cookie-k használatával. Legyen adott oldalunkon egy színeket tartalmazó DropDownList, amely tartalmazzon három ListItemet, értékként az egyes mezőknek megfelelő angol színelnevezéseket beállítva. A lenyíló lista autopostback tulajdonsága legyen igaz, így minden olyan esetben postbacket küld, ha új elem került kiválasztásra.

Lássuk az ehhez tartozó XAML fájlt:



   


   

   
        Piros
        Sárga
        Kék
   

   


A háttérkódban készítsük el a sütinket, illetve állítsuk be az oldalnak a felhasználó által kiválasztott háttérszínét.

Lássuk, mindezt hogyan valósítjuk meg:

using System;
using System.Data;
using System.Web;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (Request.Cookies[“BackgroundColor”] != null)
            {
                ColorSelector.SelectedValue = Request.Cookies[“BackgroundColor”].Value;
                BodyTag.Style[“background-color”] = ColorSelector.SelectedValue;
            }
        }
    }

    protected void ColorSelector_IndexChanged(object sender, EventArgs e)
    {
        BodyTag.Style[“background-color”] = ColorSelector.SelectedValue;
        HttpCookie cookie = Request.Cookies[“BackgroundColor”];
        if (cookie == null)
        {
            cookie = new HttpCookie(“BackgroundColor”);
        }
        cookie.Value = ColorSelector.SelectedValue;
        cookie.Expires = DateTime.Now.AddHours(2);
        Response.SetCookie(cookie);
    }
}

A Page_Load metódusban levő if (!Page.IsPostBack) feltétel biztosítja, hogy a cookie vizsgálata csak abban az esetben fusson le, ha az oldal először került betöltésre (nem pedig a DDL postbackel). Ekkor megpróbálja elkérni a BackgroundColor nevű sütit a klienstől. Ha létezik, akkor a lenyílólistát a sütiben tárolt értéknek megfelelő aktuális elemre állítja, illetve ez alapján meghatározza az oldal háttérszínét (body tag style attribútuma).

A ColorSelector_IndexChanged(object sender, EventArgs e) eseménykezelő pedig akkor fut le, amikor új elem kerül kiválasztásra a lenyíló listából. Ekkor a választott színnek megfelelően kerül beállításra az oldal háttérszíne. A szerver most is megpróbálja lekérni az adott sütit és ha az létezik, megváltoztatja paramétereit az új értékeknek megfelelően. Ha pedig null, akkor létrehozza azt. A süti lejárati idejét 2 órában határozza meg.

Futtassuk az alkalmazást és állítsunk be háttérszínt. Ezután csukjuk be a böngészőt, majd indítsuk el újra. Látni fogjuk, hogy a legutoljára beállított szín lesz érvényes az oldalra (egészen 2 óra hosszáig így lesz).

Az egyes Cookie-k a C:\Documents and Settings\aktuális_felhasználó\Cookies, illetve a C:\Windows\Cookies könyvtárban kapnak helyet, attól függően, hogy milyen operációs rendszert használunk.

Köszönöm, hogy ismét velem tartottatok, jó kódolást!

asp.net-tutorials.com-on található írás alapján írta:

Stift András

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

HOZZÁSZÓLÁS

Ha nem hagy nyugodni az, amit a cikkben olvastál, akkor nyugodtan írd meg kérdésed vagy észrevételed kommentbe. Így szerzőnk könnyen tud neked válaszolni.

Vélemény, hozzászólás?