【发布时间】:2014-07-24 20:25:10
【问题描述】:
我的代码在我的本地服务器上运行良好:
if (Page.IsPostBack)
{
string[] questions = new string[20];
string[] answers = new string[20];
for (int i = 0; i < lstQuestions.Items.Count; ++i)
{
questions[i] = lstQuestions.Items[i].Text;
answers[i] = lstQuestions.Items[i].Value;
}
Session["questions"] = questions;
Session["answers"] = answers;
if (Session["qalist"] == null)
{
List<ListItem> qalist = lstQuestions.Items.Cast<ListItem>().ToList();
Session["qalist"] = qalist;
}
else
{
List<ListItem> qalist = (List<ListItem>)Session["qalist"];
lstQuestions.DataSource = qalist;
}
}
else
{
if (Session["questions"] != null && Session["answers"] != null && Session["qalist"] != null)
{
List<ListItem> qalist = (List<ListItem>)Session["qalist"];
foreach (ListItem item in qalist)
{
lstQuestions.Items.Add(new ListItem(item.Text, item.Value.ToString()));
}
}
}
但是,当我访问 Web 服务器时,我收到错误“System.Web.UI.WebControls.ListItem,未标记为可序列化”。我研究了如何使这个可序列化,甚至如何将“qalist”转换为实际上可序列化的值,然后将该值保存到会话中。然而,我的努力并没有奏效。序列化是最好的途径吗?寻找不同的方式来存储这些数据?还是别的什么?
【问题讨论】:
-
很简单。 “不要这样做”。
ListItem不可序列化,因此您必须在 Session 中存储足够的数据,以便在需要时创建ListItem。
标签: c# asp.net session serialization listitem