始终仅将1个项目添加到列表C#

时间:2019-01-08 19:09:51

标签: c# asp.net asp.net-mvc list

我想在会话中添加对象列表。但是在我的代码中总是创建Fresh Object(列表中总是只有1个项目)

DTO

 public class CartTotal
{
    public decimal SubTotal { get; set; }
    public decimal DeliveryCharges { get; set; }
    public decimal GrandTotal { get; set; }
    public int CurrentItemCount { get; set; }

    public List<Items> items { get; set; }
}

商品

 public class Items
{
    public int ItemId { get; set; }
    public string ItemCode { get; set; }
    public string ItemName { get; set; }
    public string ImageUrl { get; set; }
    public int? ItemBadge { get; set; }
    public DateTime? AddedDate { get; set; }
    public int? AddedBy { get; set; }


}

会话

  public CartTotal ItemsHolder
    {
        get
        {
            object ItemsSession = Session["ItemSession"] as CartTotal;

            if (ItemsSession == null)
            {
                ItemsSession = new CartTotal();
                Session["ItemSession"] = ItemsSession;
            }

            return (CartTotal)ItemsSession;
        }
    }

我试图将商品添加到列表中,如下所示。但总是会添加新商品和(列表中总是只有1个商品)

            ItemsHolder.items = new List<Items>(); // When i comment this line,below code not working.

            ItemsHolder.items.Add(new Items() {
                ItemId = items.ItemId,
                ItemName = items.ItemName,
                ItemPrice = items.ItemPrice,
                ImageUrl = items.ImageUrl,
                ItemCode = items.ItemCode
            });

1 个答案:

答案 0 :(得分:3)

CartTotal类中,编写

public List<Items> items { get; } = new List<Items>();

这将在每个CartTotal对象中创建一次新列表。另外,items属性是只读的。因此,您不能无意中将其添加到另一个列表。

删除行

ItemsHolder.items = new List<Items>();