繁体   English   中英

单击按钮MVC C#时逐个添加对象

[英]Add objects one by one when click button MVC C#

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

 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; }

}

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

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");
}

示例alternate,在类上设置一个属性,并通过检查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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM