Я работаю над назначением, где мне нужно создать XML-файл из сеанса. У меня проблема с кастингом, и я знаю, что это происходит из списка, где хранятся предметы в корзине, но я не уверен, как это исправить.Невозможно передать объект при создании файла XML из сеанса
Кнопка click - это кнопка Create XML, и это точная ошибка, которую я получаю: Unable to cast object of type Utils.ShoppingCart' to type 'System.Collections.Generic.List
1 [CartItem] '.
Line 86: List<CartItem> cartItems = new List<CartItem>();
Line 87: cartItems = (List<CartItem>)Session["UserCart"];
Вот код. Дайте мне знать, если мне нужно предоставить больше. Я был бы очень признателен за любые отзывы!
protected void Button1_Click(object sender, EventArgs e)
{
ShoppingCart sCart = (ShoppingCart)Session["UserCart"];
List<CartItem> cartItems = new List<CartItem>();
cartItems = (List<CartItem>)Session["UserCart"];
XmlWriterSettings sets = new XmlWriterSettings();
sets.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Server.MapPath("~/items.xml"), sets))
{
writer.WriteStartDocument();
writer.WriteStartElement("cartItems");
foreach (CartItem i in cartItems)
{
writer.WriteStartElement("CartItem");
writer.WriteElementString("ITEM_ID", i.ITEM_ID.ToString());
writer.WriteElementString("ITEM_QUANTITY", i.ITEM_QUANTITY.ToString());
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.Flush();
writer.Close();
Label1.Text = "XML written successfully!";
Label2.Text = "<a href='DOM/cart.xml'> XML created successfully. </a>";
}
}
Как определяется 'Session [index]'? –
Где находится 'ShoppingCart'? – nmat
У вас есть 'ShoppingCart sCart = (ShoppingCart) Session [" UserCart "];', который не выдает ошибку, а затем у вас есть 'cartItems = (Список) Сессия [" UserCart "];', которая бросает ошибка. Это говорит мне, что 'Session [" UserCart "]' является экземпляром 'ShoppingCart'. Возможно, вам нужно что-то вроде 'cartItems = ((ShoppingCart) Session [" UserCart "]). Items;' или какое бы то ни было свойство для списка элементов в 'ShoppingCart'. –
Tim