1

是否可以为 ASP.NET 中的每个会话创建一个全局变量?通常我用 Session 来做这个:

Session("my_variable") = 10

但这每次我想像这样使用它时都需要强制转换它:

Dim my_variable as String = CInt(Session("my_variable"))

我看到如果我创建一个模块,我可以为每个会话创建对整个项目公共的变量......我还看到 Global.asax 允许模块提供的许多相同功能。我宁愿避免编写模块......有没有办法在 Global.asax 或其他一些最佳实践方法中做到这一点?还是会话变量是最好的方法?

4

2 回答 2

2

像这样为您的变量创建一个包装类

public class SessionVariables
{

  public static int MyVariable
  {
     get{ return if( Session["my_variable"] != null ) (int)Session["my_variable"]; else 0;}
     set {Session["my_variable"] = value;}
   }


}

并使用喜欢

SessionVarible.MyVariable = 7;

int p =  SessionVarible.MyVariable + 3;
于 2012-05-12T21:03:15.913 回答
1

如果您只想在会话范围内存储/检索数据,那么Session对象就是要走的路。HttpModules 可用于实现与 ASP.NET 请求管道中特定点相关的某些功能(例如,假设您想在身份验证请求上添加日志记录)。Global.asax 可以让您做类似的事情,并且可能足以满足您的目的(只需在 global.asax 中实现您想要定位的事件)。

如果您担心从object装箱/拆箱,那么我喜欢 hkutluay 使用隐藏演员表的包装类的想法。

于 2012-05-12T21:09:51.677 回答