Fre*_*dou 9 vb.net asp.net session-variables session-state
而不是做
session("myvar1") = something
session("myvar2") = something
session("myvar3") = something
session("myvar4") = something
Run Code Online (Sandbox Code Playgroud)
是在做
enum sessionVar
myvar1
myvar2
myvar3
myvar4
end enum
session(sessionVar.myvar1.tostring) = something
session(sessionVar.myvar2.tostring) = something
session(sessionVar.myvar3.tostring) = something
session(sessionVar.myvar4.tostring) = something
Run Code Online (Sandbox Code Playgroud)
会更好?
M4N*_*M4N 17
我没有使用会话密钥的常量,而是使用我自己的类型安全会话对象,看起来像这样(对不起,这是在C#中,请参阅下面的VB版本):
public class MySession
{
// Private constructor (use MySession.Current to access the current instance).
private MySession() {}
// Gets the current session.
public static MySession Current
{
get
{
MySession session = HttpContext.Current.Session["__MySession__"] as MySession;
if (session == null)
{
session = new MySession();
HttpContext.Current.Session["__MySession__"] = session;
}
return session;
}
}
// My session data goes here:
public string MyString { get; set; };
public bool MyFlag { get; set; };
public int MyNumber { get; set; };
}
Run Code Online (Sandbox Code Playgroud)
每当我需要向会话/从会话中读取/写入内容时,我可以使用我的类型安全会话对象,如下所示:
string s = MySession.Current.MyString;
s = "new value";
MySession.Current.MyString = s;
Run Code Online (Sandbox Code Playgroud)
该解决方案具有以下几个优点:
更新: 这是一个VB版本(从C#版本自动转换).对不起,但我不懂VB,所以我不知道如何在VB中编写属性:
Public Class MySession
' Private constructor (use MySession.Current to access the current instance).
Private Sub New()
End Sub
' Gets the current session.
Public Shared ReadOnly Property Current() As MySession
Get
Dim session As MySession = TryCast(HttpContext.Current.Session("__MySession__"), MySession)
If session = Nothing Then
session = New MySession()
HttpContext.Current.Session("__MySession__") = session
End If
Return session
End Get
End Property
' My session data goes here:
Public MyString As String
Public MyFlag As Boolean
Public MyNumber As Integer
End Class
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2502 次 |
| 最近记录: |