Maybe this is what you want to know:
Models:
public class SalesCartItemsModel
{
public string ShopId { get; set; }
public string ShopName { get; set; }
}
public class PurchaseCartItem
{
public string ShopId { get; set; }
public string ShopName { get; set; }
}
SessionExtensions:
public static class SessionExtensions
{
public static void Set<T>(this ISession session, string key, T value)
{
session.SetString(key, JsonSerializer.Serialize(value));
}
public static T Get<T>(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default : JsonSerializer.Deserialize<T>(value);
}
}
Program:
builder.Services.AddSession();
app.UseSession();
Controller:
private List<SalesCartItemsModel>? itemsList;
private List<PurchaseCartItem>? itemListP;
public JsonResult Test()
{
itemsList = new List<SalesCartItemsModel>();
itemsList.Add(new SalesCartItemsModel { ShopId = "1", ShopName = "Apple" });
itemsList.Add(new SalesCartItemsModel { ShopId = "2", ShopName = "Banana" });
HttpContext.Session.Set<List<SalesCartItemsModel>>("cartItems", itemsList);
var value = HttpContext.Session.Get<List<SalesCartItemsModel>>("cartItems");
return Json(value);
}
Result:

When you don't store the value in the session, you can judge value=null
to store the new value for the session:
public JsonResult Test()
{
itemsList = new List<SalesCartItemsModel>();
//itemsList.Add(new SalesCartItemsModel { ShopId = "1", ShopName = "Apple" });
//itemsList.Add(new SalesCartItemsModel { ShopId = "2", ShopName = "Banana" });
//HttpContext.Session.Set<List<SalesCartItemsModel>>("cartItems", itemsList);
var value = HttpContext.Session.Get<List<SalesCartItemsModel>>("cartItems");
if (value == null)
{
itemListP = new List<PurchaseCartItem>();
itemListP.Add(new PurchaseCartItem { ShopId = "1", ShopName = "Orange" });
itemListP.Add(new PurchaseCartItem { ShopId = "2", ShopName = "Pear" });
HttpContext.Session.Set<List<PurchaseCartItem>>("cartItems", itemListP);
var valueP = HttpContext.Session.Get<List<PurchaseCartItem>>("cartItems");
return Json(valueP);
}
else
{
return Json(value);
}
}
Result:

When there is no value in your itemsList
, you can judge value.Count=0
to add a new value to the session:
public JsonResult Test()
{
itemsList = new List<SalesCartItemsModel>();
//itemsList.Add(new SalesCartItemsModel { ShopId = "1", ShopName = "Apple" });
//itemsList.Add(new SalesCartItemsModel { ShopId = "2", ShopName = "Banana" });
HttpContext.Session.Set<List<SalesCartItemsModel>>("cartItems", itemsList);
var value = HttpContext.Session.Get<List<SalesCartItemsModel>>("cartItems");
if (value.Count == 0)
{
itemListP = new List<PurchaseCartItem>();
itemListP.Add(new PurchaseCartItem { ShopId = "1", ShopName = "Orange" });
itemListP.Add(new PurchaseCartItem { ShopId = "2", ShopName = "Pear" });
HttpContext.Session.Set<List<PurchaseCartItem>>("cartItems", itemListP);
var valueP = HttpContext.Session.Get<List<PurchaseCartItem>>("cartItems");
return Json(valueP);
}
else
{
return Json(value);
}
}
Result:
