[英]Linq: add objects from one list to another with an other type, (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");
}
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.