Вам необходимо сохранить список, а затем получить его, чтобы добавить в него новый элемент.Это создание может быть выполнено несколькими способами, включая вызов метода, который создает, если он не существует, и возвращает этот список сеансов, как в
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 и создавая, если еще нет (и сохраняйте в конце, как у вас есть):
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