(Được cập nhật cho đầy đủ)
Bạn có thể truy cập các biến phiên từ bất kỳ trang hoặc điều khiển nào bằng cách sử dụng Session["loginId"]
và từ bất kỳ lớp nào (ví dụ: từ bên trong thư viện lớp), bằng cách sử dụngSystem.Web.HttpContext.Current.Session["loginId"].
Nhưng xin vui lòng đọc tiếp cho câu trả lời ban đầu của tôi ...
Tôi luôn sử dụng lớp bao bọc xung quanh phiên ASP.NET để đơn giản hóa việc truy cập vào các biến của phiên:
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; }
}
Lớp này lưu trữ một thể hiện của chính nó trong phiên ASP.NET và cho phép bạn truy cập các thuộc tính phiên của mình theo cách an toàn kiểu từ bất kỳ lớp nào, ví dụ như thế này:
int loginId = MySession.Current.LoginId;
string property1 = MySession.Current.Property1;
MySession.Current.Property1 = newValue;
DateTime myDate = MySession.Current.MyDate;
MySession.Current.MyDate = DateTime.Now;
Cách tiếp cận này có một số ưu điểm:
- nó tiết kiệm cho bạn từ rất nhiều kiểu đúc
- bạn không phải sử dụng các khóa phiên được mã hóa cứng trong toàn bộ ứng dụng của mình (ví dụ: Phiên ["loginId"]
- bạn có thể ghi lại các mục phiên của mình bằng cách thêm nhận xét tài liệu XML vào các thuộc tính của MySession
- bạn có thể khởi tạo các biến phiên của mình bằng các giá trị mặc định (ví dụ: đảm bảo chúng không rỗng)