Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将列表或IEnumerable标记为可序列化?_C#_Asp.net Mvc - Fatal编程技术网

C# 如何将列表或IEnumerable标记为可序列化?

C# 如何将列表或IEnumerable标记为可序列化?,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个列表要存储在SqlServer模式下的会话中 [Serializable] public class ModelStateSummary { public string PropertyName { get; set; } public string[] ErrorMessages { get; set; } } 设置会话 var list = new List<ModelStateSummary> {...}; Session["ModelStateSum

我有一个列表要存储在SqlServer模式下的会话中

[Serializable]
public class ModelStateSummary
{
    public string PropertyName { get; set; }
    public string[] ErrorMessages { get; set; }
}
设置会话

var list = new List<ModelStateSummary> {...};
Session["ModelStateSummaryModel"] = list;
var stateSummaries = Session["ModelStateSummaryModel"] as IEnumerable<ModelStateSummary>;
var list=新列表{…};
会话[“ModelStateSummaryModel”]=列表;
但是当我试图从会话中检索模型时

var list = new List<ModelStateSummary> {...};
Session["ModelStateSummaryModel"] = list;
var stateSummaries = Session["ModelStateSummaryModel"] as IEnumerable<ModelStateSummary>;
var statesumeries=会话[“ModelStateSummaryModel”]作为IEnumerable;
我错了,说

异常类型:System.Runtime.Serialization.Serialization异常消息:类型“System.Linq.Enumerable+WhereSelectEnumerableInterator
2[[System.Collections.Generic.KeyValuePair
2[[System.String,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.Web.Mvc.ModelState,System.Web.Mvc,Version=5.2.3.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35]],mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[myproject.ModelState摘要,myproject,Version=1.0.0.0.0,Culture=neutral,PublicKeyToken=null]]“在程序集中”System.Core,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089“未标记为可序列化


在将列表保存到会话中时,我是否做错了什么?

当您将对象放入会话中时,它在会话中被序列化。这也意味着不可序列化的对象不能存储在会话中。然后当您将其从会话中取出时,它会被反序列化。您不能反序列化到接口。它必须是一个具体的类

var stateSummaries = Session["ModelStateSummaryModel"] as List<ModelStateSummary>;
var statesummeries=Session[“ModelStateSummaryModel”]作为列表;

当您将对象放入会话时,它会在那里序列化。这也意味着不可序列化的对象不能存储在那里。然后当您将其从会话中取出时,它会被反序列化。您不能反序列化到接口。它必须是一个具体的类

var stateSummaries = Session["ModelStateSummaryModel"] as List<ModelStateSummary>;
var statesummeries=Session[“ModelStateSummaryModel”]作为列表;

您可以
像下面这样施放

var stateSummaries = (List<ModelStateSummary>)Session["ModelStateSummaryModel"];
var statesumaries=(列表)会话[“modelstatesumarymodel”];

您可以
像下面这样施放

var stateSummaries = (List<ModelStateSummary>)Session["ModelStateSummaryModel"];
var statesumaries=(列表)会话[“modelstatesumarymodel”];

小心将大对象放入会话。小心将大对象放入会话。