Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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# ';System.Web.UI.WebControls.ListItem';程序集中的未标记为可序列化_C#_Asp.net - Fatal编程技术网

C# ';System.Web.UI.WebControls.ListItem';程序集中的未标记为可序列化

C# ';System.Web.UI.WebControls.ListItem';程序集中的未标记为可序列化,c#,asp.net,C#,Asp.net,我制作了一个属性,如下所示 public ListItem[] DropDownListItems { get { return (ListItem[])ViewState["DropDownListItems"]; } set { ViewState["DropDownListItems"] = value; } } 这就是我给它赋值的方式 ListItem[] litem = new ListItem[7];

我制作了一个属性,如下所示

public ListItem[] DropDownListItems
        {
            get { return (ListItem[])ViewState["DropDownListItems"]; }
            set { ViewState["DropDownListItems"] = value; }
        }
这就是我给它赋值的方式

ListItem[] litem = new ListItem[7];
litem[0] = new ListItem("View", "RowView");
litem[1] = new ListItem("ReadView", "RowReadView");
litem[2] = new ListItem("WriteView", "RowWriteView");
litem[3] = new ListItem("DeleteView", "RowDeleteView");
this.DropDownListItems=litem;
但是我得到了以下错误

程序集中的“System.Web.UI.WebControl.ListItem”未标记为可序列化。


如何解决它

我认为这是因为您试图将ListItem的集合放入ViewState,并且ViewState在页面上被序列化为文本,这意味着类ListItem不可序列化,因为它们不可序列化,您可能必须使用其他方法,并使用字典(字符串、字符串)执行一些后期处理逻辑例如。

为了在ViewState中存储一个对象,它必须,但必须是可序列化的。显然,根据给出的错误消息,您试图在其中推入的类型实际上是不可序列化的

要解决这个问题,您可以创建一个包装器(如果愿意的话),该包装器封装项目的数据,然后将这些数据转换为UI控件。这样,您也只在(已经有问题的)视图状态中存储所需的数据