如何遍历作为列表的会话对象

use*_*311 2 c# session list asp.net-mvc-4

我有一个会话对象,其中包含一个对象列表..

Session.Add("errorlist",errorlist);
Run Code Online (Sandbox Code Playgroud)

现在我想在另一个函数中循环遍历此错误列表.我试过,但它给出了以下错误:

foreach statement cannot operate on variables of type 'object' because 'object' does not contain a public definition for 'GetEnumerator'
Run Code Online (Sandbox Code Playgroud)

这是我试过的:

var error = Session["errorlist"];
foreach (var item in error)
{
    //Something here
}
Run Code Online (Sandbox Code Playgroud)

我可以在"error"变量中看到对象列表.

Jos*_*osh 8

System.Object默认情况下,进入会话的所有内容都是类型.所以你的var陈述将没有正确的类型.

退出会话时需要将其强制转换.

var error = (List<MyObject>)Session["errorlist"];
Run Code Online (Sandbox Code Playgroud)

更好的方法是使用安全转换并检查null:

var error = Session["errorlist"] as List<MyObject>;

if(error != null){
   //Do stuff here
}
Run Code Online (Sandbox Code Playgroud)