Kullanıcı girişi, buna bağlı olarak kullanıcı giriş formunu kapatarak “kullanıcı sepeti” gibi özellikleri açan özellik “Session” sayesinde olur. Türkçe karşılığı “oturum” ‘dur. Sunucu tarafında saklanır. “Controller” tarafında işlenir.
Kullanıcı giriş yapmadan sayfayı çalıştırdığında oturum kodu verilir ve tarayıcı kapanana kadar ya da belirlenen süre sonunda (varsayılan 20 dk.) otomatik olarak geçerliliğini yitirir.
Session["sessionName"] = "sessionValue" // veya Session.Add(string "sessionName", object "sessionValue");
yukarıdaki kod satırlarından ikisi de oturum oluşturmaya yarar. Oturumun farklı bir kullanım şekli ise farklı veriler depolama üzerinedir. Örneğin;
Session["sonZiyaretEdilenSayfa"] = "http://www.buyukculhaci.com/link_shortener/" // veya Session.Add(string "secilenKoltuk" ,object "5,6"); //Session verilerini sadece sunucu tarafında değiştirebiliriz. //istemci tarafında yalnızca okuyabiliriz. Yani koltuk numarası //seçilirse bunu get/post gibi başka yöntemlerle göndererek //sunucu tarafında "secilenKoltuk" oturum değişkenine atayıp sayfanın //yenilenmesiyle okuyabiliriz.
// Oturumu silmek istersek Session.Remove("sessionName"); // ya da oturum içindeki tüm bilgileri silmek istersek aşağıdaki kodlardan birini kullanmalıyız Session.Clear(); Session.RemoveAll(); Session.RemoveAt(int sessionIndex);
//Session da bir değişken olduğu için içindeki veriyi okuyabiliriz. string veri = Session["sessionName"].ToString();
[HttpPost] public ActionResult Index(string uName,string uPass) { Session["user"] = uName; return View(); }
@if (Session["user"] == null) { //kullanıcının giriş yapıp yapmadığını kontrol ettirerek //burada giriş form çıkartırız. } else { //eğer giriş yapmışsa ismini yazdırırız. @Session["user"].ToString() <p>olarak giriş yaptınız.</p> }
Ayrıca kendi belirleyebileceğiniz bir değişken şeklinde de taşıyabilme yollarınız da mevcut.
public sealed class HttpSessionState : ICollection, IEnumerable { private IHttpSessionState _container; ... public void Add(string name, object value) { this._container[name] = value; } public object this[string name] { get { return this._container[name]; } set { this._container[name] = value; } } ... }