Asp.net

ASP.NET;幾個會話變數或“容器對象”?

  • March 4, 2014

我有幾個變數需要從一個頁面發送到另一個頁面……最好的方法是什麼?

只需一一發送:

string var1 = Session["var1"] == null ? "" : Session["var1"].ToString();
int var2 = Session["var2"] == null ? 0 : int.Parse(Session["var2"].ToString());

等等…

還是將它們全部放在某種容器對像中?

struct SessionData
{
   public int Var1 { get; set; }
   public string Var2 { get; set; }
   public int Var3 { get; set; }
}

SessionData data = Session["data"] as SessionData;

什麼是最好的解決方案?你用什麼?

兩者的混合是最易於維護的方法。它Session提供了一個低阻抗、靈活的鍵值對儲存,因此不利用它是一種浪費。然而,對於總是相互關聯的複雜數據——例如,UserProfile——擁有一個深度嵌套的對像是有意義的。

如果您儲存在 Session 中的所有數據都是相關的,那麼我建議將其合併到一個對像中,就像您的第二個範例一樣:

public class UserData
{
   public string UserName { get; set; }
   public string LastPageViewed { get; set; }
   public int ParentGroupId { get; set; }
}

然後將所有內容載入一次並將其儲存為會話。

但是,我不建議將不相關的 Session 數據捆綁到單個對像中。我會將每個單獨的相關項目組分解成自己的。結果將是您提供的兩種強硬方法之間的中間地帶。

引用自:https://stackoverflow.com/questions/3084966