我在会话中保存了一些值,如下所示。
List<MyEntity> MyVariable = <some values here>;
System.Web.HttpContext.Current.Session["MySession"] = MyVariable;
当我尝试在立即窗口中打印MySession变量时,它会显示以下内容:
Count = 2
[0]: {MyProject.Model.MyEntity}
[1]: {MyProject.Model.MyEntity}
如何打印这些索引0和1中的值?我尝试了以下但它没有工作,因为它显示错误“无法将带有[]的索引应用于'object'类型的表达式”:
System.Web.HttpContext.Current.Session["MySession"][0];
答案 0 :(得分:2)
您必须将值转换为您指定的类型,并对其应用索引:
((List<MyEntity>)System.Web.HttpContext.Current.Session["MySession"])[0];
会话仅为所有值保留泛型类型Object
,每次访问时都必须将它们转换为正确的类型。为了避免在多个地方进行转换,您可以围绕Session创建一个包装类,如this answer中所示。
答案 1 :(得分:2)
您必须将会话对象转换为列表,这是一个示例:
((List<MyEntity>)System.Web.HttpContext.Current.Session["MySession"])[0]
答案 2 :(得分:1)
您可以尝试以下代码:
using System.Web;
List<MyEntity> list = (List<MyEntity>)HttpContext.Current.Session["MySession"];
if (list != null)
{
foreach (MyEntity item in list)
{
Response.Write(item.ToString()); // <-- you may want to override ToString to display the content
}
}
您需要强制您的会话对象,然后才能以列表形式访问它,因为您可以在会话中存储所有类型的object
,默认情况下为{{1没有索引器。从而出现错误信息。
之后,您仍然需要实现一种方法来显示项目的内容。您可以覆盖object
类的ToString
方法来执行此操作。