ASP.NET; 几个会话变量或"容器对象"?

Chr*_*ård 8 asp.net session session-variables

我需要从页面到页面发送几个变量...这样做的最佳方法是什么?

只需逐个发送:

string var1 = Session["var1"] == null ? "" : Session["var1"].ToString();
int var2 = Session["var2"] == null ? 0 : int.Parse(Session["var2"].ToString());
Run Code Online (Sandbox Code Playgroud)

等等...

或者将它们全部放在某种容器对象中?

struct SessionData
{
    public int Var1 { get; set; }
    public string Var2 { get; set; }
    public int Var3 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

-

SessionData data = Session["data"] as SessionData;
Run Code Online (Sandbox Code Playgroud)

什么是最好的解决方案?你用什么?

Rex*_*x M 6

两者的混合是最可维护的方法.它Session提供了一个低阻抗,灵活的键值对存储,因此不利用它是浪费.但是,对于始终彼此相关的复杂数据片段(例如,UserProfile),有一个深层嵌套的对象是有意义的.

  • 因为那时你每次都会花费DB命中率,这可能是最慢的代码区域. (3认同)