0

セッションから XML ファイルを作成する必要がある課題に取り組んでいます。キャストに問題があり、カート内のアイテムが保存されているリストからのものであることは認識していますが、修正方法がわかりません。

ボタンのクリックは XML の作成ボタンであり、これが正確なエラーです: Unable to cast object of type Utils.ShoppingCart' to type 'System.Collections.Generic.List1[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>";
    }
}
4

1 に答える 1

1

これは単なる推測ですが、上記のコメントにあるように、Session への最初の呼び出しでエラーが発生していないようです ( ShoppingCartSession からインスタンスを取得する場所)。

からアイテムのリストを取得しようとしているようですShoppingCart。(Session への最初の呼び出しで) 既にインスタンスを持っているので、次のように、カート内のアイテムのリストを含むプロパティ (存在する場合) にアクセスするだけです。

ShoppingCart sCart = (ShoppingCart)Session["UserCart"];

List<CartItem> cartItems = sCart.Items;

上記は、 のリストを返すShoppingCartと呼ばれるプロパティを持つことに基づいています。ItemsCartItem

あなたがそれを行っていた方法は、コンパイラにShoppingCartSession からインスタンスを取得し、それを List に変換するように指示していたCartItemsため、私が疑い、同じオブジェクトであるため、エラーが発生しましShoppingCartCartItems:)

于 2013-04-22T00:45:55.867 に答える