关于对象列表的

时间:2016-02-18 08:21:18

标签: asp.net asp.net-mvc

我看不出这段代码有什么问题:

var listShoppingCart = Session["ShoppingCart"];

foreach (var item in listShoppingCart)
{

}

我在foreach循环中的listShoppingCart下方得到一条红线。当我将鼠标悬停在红线上时,消息是Foreach语句无法对变量类型'object'进行操作,因为'object'不包含'GetEnumerator'的公共定义

我用这样的会话声明列表:

Session["ShoppingCart"] = new List<Products>();

2 个答案:

答案 0 :(得分:5)

您需要转换会话对象

var listShoppingCart = Session["ShoppingCart"] as List<Products>;

if (listShoppingCart != null)
{
    // Do stuff...
}

在上面的代码中,我们在关键字“ShoppingCart”中获取位于会话中的对象,并将该对象强制转换为List<Products>。如果无法完成强制转换,则listShoppingCart将为空。

答案 1 :(得分:0)

因为Session类型为HttpSessionState,所以它实现了ICollection。 会话值存储在实现Dictionary<string,object>的{​​{1}}中。您需要键入强制转换对象才能枚举列表。