(อัปเดตเพื่อความสมบูรณ์)
คุณสามารถเข้าถึงตัวแปรเซสชันจากหน้าหรือการควบคุมโดยใช้Session["loginId"]
และจากคลาสใด ๆ (เช่นจากภายในไลบรารีคลาส) โดยใช้System.Web.HttpContext.Current.Session["loginId"].
แต่โปรดอ่านคำตอบเดิมของฉัน ...
ฉันมักจะใช้คลาส wrapper รอบ ๆ เซสชัน ASP.NET เพื่อทำให้การเข้าถึงตัวแปรเซสชันง่ายขึ้น:
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; }
}
คลาสนี้เก็บอินสแตนซ์ของตัวเองหนึ่งตัวในเซสชัน ASP.NET และอนุญาตให้คุณเข้าถึงคุณสมบัติเซสชันของคุณในแบบที่ปลอดภัยจากคลาสใด ๆ เช่นนี้
int loginId = MySession.Current.LoginId;
string property1 = MySession.Current.Property1;
MySession.Current.Property1 = newValue;
DateTime myDate = MySession.Current.MyDate;
MySession.Current.MyDate = DateTime.Now;
วิธีนี้มีข้อดีหลายประการ:
- มันช่วยให้คุณประหยัดจากการหล่อแบบจำนวนมาก
- คุณไม่จำเป็นต้องใช้คีย์เซสชั่นแบบตายตัวตลอดการสมัคร (เช่น Session ["loginId"]
- คุณสามารถจัดทำเอกสารรายการเซสชันของคุณโดยเพิ่มความคิดเห็นเอกสาร XML ในคุณสมบัติของ MySession
- คุณสามารถเริ่มต้นตัวแปรเซสชั่นของคุณด้วยค่าเริ่มต้น (เช่นมั่นใจว่าพวกเขาจะไม่เป็นโมฆะ)