4

我做了一个这样的财产:

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

任何人都可以以我可以使用任何页面中的此列表添加和获取值的方式修复我的财产吗

4

3 回答 3

2

似乎你忘了把SessionStoreASP.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属性访问它,而不是 via HttpContext.Current.Session

List<Message> msglist = NameOfYourClass.SessionStore;
if(msglist.Count>0)
于 2012-11-08T11:58:45.277 回答
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;
}
于 2012-11-08T12:01:57.183 回答
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 的值存储在私有版本和会话中

于 2012-11-08T12:02:42.143 回答