我做了一个这样的属性:

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
任何人都可以通过我可以从任何页面使用此列表来添加和获取值的方式修复我的属性

最佳答案

似乎您忘记将 SessionStore 放入 ASP.NET session 中,例如:

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)

关于c# - 如何在asp.net中使用Session List<T>来存储值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13288507/

10-09 20:00