Website geliştiricilerinin genellikle kullanıcılarına bazı özellikler ve sitelerine tekrar girdikleri zaman görmelerini istedikleri verileri saklamak için kullandıkları en önemli araçlardan biri de Cookilerdir. Şimdi beraber class kullanarak sitemizde istediğimiz zaman her yerde kullanıp kod kalabalığı yaratmadan cookiler üzerinde işlemler gerçekleştirecez.Visual Studio üzerinden açtığımız Web projemize claasımızı ekleyelim

classımızın ismini belirttikten sonra koddlammamıza başlayabilirizusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace Sf.CmsB2C.Utility.B2C{public static class CookieManager{//cookie oluşturmak ve veri eklemek için fonksiyonumuza başlayalımpublic static void Write2Cookie(string cookieType, string cookieName, string cookieValue){//cookie mizi oluşturdukHttpCookie cookie;int cookieCount = 0;// varsa cookimiz içerisindeki verimizi sayacak olan counterif (System.Web.HttpContext.Current.Request.Cookies[cookieType] != null){//cookie zaten var ise içinni okuyup count edilen değerden sonrasına// verimi ekliyeceğimcookieCount = System.Web.HttpContext.Current.Request.Cookies[cookieType].Values.Count;cookie = System.Web.HttpContext.Current.Request.Cookies[cookieType];cookie.Values[cookieName + cookieCount.ToString()] = cookieValue;System.Web.HttpContext.Current.Response.Cookies.Add(cookie);}if (System.Web.HttpContext.Current.Request.Cookies[cookieType] == null){//cookie boş değer döndüğü için yeni bir cookie oluşturup verilerimi atıyorumcookie = new HttpCookie(cookieType);cookie.Values[cookieName + cookieCount.ToString()] = cookieValue;System.Web.HttpContext.Current.Response.Cookies.Add(cookie);}}public static void DeleteCookie(string cookieType){System.Web.HttpContext.Current.Request.Cookies.Remove(cookieType);}///

/// cookie ismi string halinde yollanır return değeri string List türündendir/// ve cookie deki son kayıt list in ilk kaydı olacak şekilde ters sıralama ile return yapar///

/// /// public static List ReadCookie(string cookieType){List readedCookie =new List();if (System.Web.HttpContext.Current.Request.Cookies[cookieType] != null){int count = System.Web.HttpContext.Current.Request.Cookies[cookieType].Values.Count;for (int i = count-1; i >=0 ; i–){readedCookie.Add(System.Web.HttpContext.Current.Request.Cookies[cookieType].Values[i]);}}return readedCookie;}public static List ReadCookie(string cookieType , int numberOfCookie){List readedCookie = new List();int difference = 0;if (System.Web.HttpContext.Current.Request.Cookies[cookieType] != null){int count = System.Web.HttpContext.Current.Request.Cookies[cookieType].Values.Count;if (numberOfCookie <= count){difference = count - numberOfCookie;}for (int i = count - 1; i >= difference ; i–){readedCookie.Add(System.Web.HttpContext.Current.Request.Cookies[cookieType].Values[i]);}}return readedCookie;}}}
kodlamamda gördüğünüz gibi okuma işlemlerini class içerisinde fonksionumun list dönmesini istedim bu işlem cookilerimin daha sonra kullanım açısından çok kolaylık sağlayacak örneğin list değerini herhangi bir listbox’ıma bind edip kolayca kullanabileceğim.Şimdi cookilerimiz nerde oluşturulmasını istiyorsak sadece cookie ismi ve taşıyacağı değerleri gödererek cookilerimizi oluşturacaz. Bana sadece iki veri gerekli olduğu için cookie’mi 2 değerle oluşturdum gerekli değişikleri class üzerinden yaparak daha farklı cookiler geliştirebilirsiniz.*.aspx sayfamın behind kolamasına geçip cookie’yi oluşturalımusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Sf.CmsB2C.Bal.Admin;// classımı sayfama ekliyorumusing Telerik.Web.UI;public partial class Modules_Log_LogManager : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (IsPostBack){return;}//bu kısımda eğer cookie varsa classım var olan cookie üzerine kayıt//yapacak eğer yoksa yeni bir cookie oluşturacakSf.CmsB2C.Utility.B2C.CookieManager.Write2Cookie(“Hotels”, “VisitedHotels”, “1”);// cookiemin ismi Hotels ve içine iki değer yolluyorumSf.CmsB2C.Utility.B2C.CookieManager.Write2Cookie(“Hotels”, “VisitedHotels”, “2”);Sf.CmsB2C.Utility.B2C.CookieManager.Write2Cookie(“Hotels”, “VisitedHotels”, “3”);}
ve sayfamı çalıştırdığım zaman cookieler oluştumu kontrol edelim

gördüğünüz gibi cookie’lerim oluştu.şimdi cookilerimizi okuyalım..Class içerisinde ReadCookie fonksionumu overloaded ederek yani aynı isimde iki fonksion oluşturup iki farklı veri alma türü belirlemiştim bu yaptığım işlem sayesinde classıma sadece cookie ismini yollayıp tüm kayıtları alabilirim ya da cookie ismi ve bir sayı yollayıp sayı kadar veriyi çağırabilirim.List hotelList = new List();hotelList = Sf.CmsB2C.Utility.B2C.CookieManager.ReadCookie(“Hotels”, 3);
sadece 3 kayıt aldımşimdi de tüm kayıtları alalımList hotelList = new List();hotelList = Sf.CmsB2C.Utility.B2C.CookieManager.ReadCookie(“Hotels”);
gördüğünüz gibi sadece veri sayısını azaltım artık listimizi istediğiniz şekilde kullanabilirsiniz..Umarım yardımcı olmuşumdur hepinize kolay gelsin..