单击按钮MVC C#时一个接一个地添加对象

时间:2018-12-30 16:07:53

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

我已将项目添加到列表中。但是问题是在这里,我在单击按钮后将项目一一添加到列表中。每次列表中仅显示一个对象。

 List<Items> _objList = new List<Items>();
    public ActionResult AddNewItems(int ItemId)
    {

        Items items = itemBusiness.GetItemByItemId(ItemId);

        _objList.Add(new Items { ItemId =items.ItemId,ItemName =items.ItemName,
                                 ItemPrice = items.ItemPrice });

        Session["ItemSession"] = _objList;
        return RedirectToAction("Index","Home");
    }

商品DTO

 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 DateTime? UpdatedDate { get; set; }
    public int? UpdatedBy { get; set; }
    public bool? IsActive { get; set; }
    public decimal ItemPrice { get; set; }

}

1 个答案:

答案 0 :(得分:3)

您需要存储列表,然后检索它以向其中添加新项目。可以通过几种方法完成该创建,包括调用一个创建的方法(如果创建的方法不存在),并返回会话列表,如

var _objList = (List<Items>)Session["ItemSession"];

只需确保您确实拥有一个,这样它就不会引发InvalidCastException

此代码假定您确实在添加另一个列表之前已将其存储在某些“创建”方法中。

public ActionResult AddNewItems(int ItemId)
{
    var _objList = (List<Items>)Session["ItemSession"];
    Items items = itemBusiness.GetItemByItemId(ItemId);
    _objList.Add(new Items { ItemId = items.ItemId,
                             ItemName = items.ItemName,
                             ItemPrice = items.ItemPrice });
    Session["ItemSession"] = _objList;
    return RedirectToAction("Index","Home");
}

替代示例,在类上设置一个属性,并使用该属性来避免强制转换异常,方法是检查是否为null并创建是否存在null(并按需存储在末尾):

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

添加到您的课程

// the property
public List<Items> ItemsHolder
{
    get
    {
        object ItemsSession = Session["ItemSession"] as List<Items>;

        if (ItemsSession == null)
        {
            ItemsSession = new List<Items>();
            Session["ItemSession"] = ItemsSession;
        }

        return (List<Items>)ItemsSession;
    }
}

旁注,请确保您的商品可序列化。您可能只想存储ItemId的列表,并根据需要获取名称和价格,以避免出现某些问题。 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/index