在一个键下的Session中存储多个值 - 可能的Session列表

时间:2017-01-19 12:12:49

标签: c# asp.net asp.net-mvc session

我试图想出一种在Session变量中存储多个值的方法。这就是我目前的做法:

Session[ID] = Products;
Session["type"] = type;
Session["shipping"] = shipping;
Session["condition"] = condition;
Session["minprice"] = minprice;
Session["maxprice"] = maxprice;

我想象的方式是我将所有这些存储在相同的KEY下,在我的情况下是ID(生成的GUID值 - 例如02df0-2k4l9),这样我就可以访问所有这些值,如下所示:

Session[ID]["type"];
Session[ID]["condition"];

等等......有没有办法做到这一点,如果是的话,最好的方法是什么?

4 个答案:

答案 0 :(得分:2)

如何使用" class MYCLASS"," type" ...等等创建属性为shipping的商店?会话中该类的实例?

如果要使用它,只需从Session变量中提取实例,将其转换为MYCLASS并使用它。

会解决你的问题吗?

干杯

答案 1 :(得分:2)

您可以调查其他人的答案,包括根据您的要求定义特定课程。除了已经回答的内容之外,您还可以使用将字符串用作键,将对象用作值的字典。然后,您可以在其中存储您的值,并按以下方式读取它。

var dictionary = new Dictionary<string, object>();

dictionary["type"] = type;
dictionary["shipping"] = shipping;
dictionary["condition"] = condition;
dictionary["minprice"] = minprice;
dictionary["maxprice"] = maxprice;

Session [ID] = dictionary;

答案 2 :(得分:1)

您可以从您的值中创建一个对象列表,假设您将其称为Product,这是您的对象类:

List<Product> list = new List<Product>();
//how to store them
Session["SessionName"] = list;
//how to receive the list again 
var list = (List<Product>)Session["SessionName"];

答案 3 :(得分:1)

您可以创建一个包含所有值的类

if (bool.Parse(ConfigurationManager.AppSettings["Production"]))
{
    container.RegisterType<ISomething, Something>();
}
else
{
    container.RegisterType<ISomething, SomethingMock>();
}

并将该类对象分配给会话,如

    public class ProductData
    {
        public Product objProduct { get; set; }
        public string type { get; set; }
        public string shipping { get; set; }
        public string condition { get; set; }
        public decimal minprice { get; set; }
        public decimal maxprice { get; set; }
    }