c# – 如何在asp.net中使用Session List来存储值

我做了这样一个属性:

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()并获取SessionStore.Where()
但是我在做这个Add And Get时遇到了错误

首先我做了SessionStore.Add(评论);某处我得到了这个错误

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

我无法访问msglist

任何人都可以修改我的财产,我可以从任何页面使用此列表来添加和获取值

最佳答案 好像你忘了把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)
点赞