如何在 asp.net 中使用会话列表<T>来存储价值



我制作了这样的属性:

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会话中,例如:

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

btw:我认为不需要_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)

您未存储在会话

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;
}

使用您的代码

    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;
        }
    }

这将存储您将您设置为private版本的SessionStore的值和Session

最新更新