(Diperbarui untuk kelengkapan)
Anda dapat mengakses variabel sesi dari halaman mana pun atau mengontrol menggunakan Session["loginId"]
dan dari kelas apa pun (misalnya dari dalam perpustakaan kelas), menggunakanSystem.Web.HttpContext.Current.Session["loginId"].
Tapi tolong baca terus untuk jawaban asli saya ...
Saya selalu menggunakan kelas wrapper di sekitar sesi ASP.NET untuk menyederhanakan akses ke variabel sesi:
public class MySession
{
// private constructor
private MySession()
{
Property1 = "default value";
}
// Gets the current session.
public static MySession Current
{
get
{
MySession session =
(MySession)HttpContext.Current.Session["__MySession__"];
if (session == null)
{
session = new MySession();
HttpContext.Current.Session["__MySession__"] = session;
}
return session;
}
}
// **** add your session properties here, e.g like this:
public string Property1 { get; set; }
public DateTime MyDate { get; set; }
public int LoginId { get; set; }
}
Kelas ini menyimpan satu instance dari dirinya sendiri di sesi ASP.NET dan memungkinkan Anda untuk mengakses properti sesi Anda dengan cara yang aman dari kelas apa pun, misalnya seperti ini:
int loginId = MySession.Current.LoginId;
string property1 = MySession.Current.Property1;
MySession.Current.Property1 = newValue;
DateTime myDate = MySession.Current.MyDate;
MySession.Current.MyDate = DateTime.Now;
Pendekatan ini memiliki beberapa keuntungan:
- itu menyelamatkan Anda dari banyak jenis casting
- Anda tidak harus menggunakan kunci sesi kode keras di seluruh aplikasi Anda (mis. Sesi ["loginId"]
- Anda dapat mendokumentasikan item sesi Anda dengan menambahkan komentar dokumen XML pada properti MySession
- Anda dapat menginisialisasi variabel sesi Anda dengan nilai default (mis. memastikan mereka bukan nol)