2012-11-08 14 views
4

我做了一個屬性是這樣的:如何使用會話列表<T>在asp.net儲存價值

public static List<Message> _SessionStore; 
     public static List<Message> SessionStore 
     { 
      get 
      { 
       if(HttpContext.Current.Session["MyData"]==null) 
       { 
        _SessionStore = new List<Message>(); 
       } 
       return _SessionStore; 
      } 
      set { HttpContext.Current.Session["MyData"] = _SessionStore; } 
     } 

我想增加值SessionStore.Add() and get SessionStore.Where() 但同時這樣添加得到我遇到錯誤

首先我做了SessionStore.Add(comment);地方,那麼我得到這個錯誤

List<Message> msglist = HttpContext.Current.Session["MyData"] as List<Message>; 
    if(msglist.Count>0) 

我不能夠訪問msglist

有誰能夠解決我的方式,我可以使用這個列表從anypage添加和獲取值

+0

您會得到什麼錯誤? – ChruS

+0

編輯我的問題 – ALAN

+0

你已經顯示錯誤發生的行,你沒有告訴我們錯誤本身是什麼......例如,它是「對象引用沒有設置爲對象的實例」?或者例外說的是什麼?假設我有正確的例外,它看起來像你沒有初始化你的清單 – Basic

回答

2

看來你財產忘了把SessionStore到ASP.NET會話,例如:

if(HttpContext.Current.Session["MyData"]==null) 
{ 
    _SessionStore = new List<Message>(); 
    // the following line is missing 
    HttpContext.Current.Session["MyData"] = _SessionStore; 
} 

順便說一句:我認爲_SessionStore字段不是必需的。這應該是足夠了:

public static List<Message> SessionStore 
{ 
    get 
    { 
     if(HttpContext.Current.Session["MyData"]==null) 
     { 
      HttpContext.Current.Session["MyData"] = new List<Message>(); 
     } 
     return HttpContext.Current.Session["MyData"] as List<Message>; 
    } 
} 

,然後在要使用郵件列表,你應該通過SessionStore屬性來訪問它,而不是通過HttpContext.Current.Session

List<Message> msglist = NameOfYourClass.SessionStore; 
if(msglist.Count>0) 
0

您沒有保存進入會議

get 
{ 
    if(HttpContext.Current.Session["MyData"]==null) 
    { 
     HttpContext.Current.Session["MyData"] = new List<Message>(); 
    } 

    List<Message> list = HttpContext.Current.Session["MyData"] as List<Message>; 

    return list; 
} 
0

使用你的代碼

public static List<Message> _SessionStore; 
    public static List<Message> SessionStore 
    { 
     get 
     { 
      if(HttpContext.Current.Session["MyData"]==null) 
      { 
       _SessionStore = new List<Message>(); 
      } 
      return _SessionStore; 
     } 
     set 
     { 
      HttpContext.Current.Session["MyData"] = value; 
      _SessionStore = value; 
     } 
    } 

這會將您設置爲SessionStore的值存儲在專用版本和會話中