- Belépés
- Felhasználó létrehozása
- Jelszó emlékeztető
ASP.NET állapotkezelés 1. rész - Cookie
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:
Cookie-k
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



Hozzászólás