C# ASP.NET核心会话未设置正确的信息
我在一个图书电子商务网站上工作 我目前正在实现向购物车添加产品。最初,我将其设置为购物车旁边显示的计数是唯一项目的数量,而不是一般项目的数量。因此,如果您在购物车中添加了3本书1,然后在购物车中添加了2本书2,购物车总数将显示为2,因为购物车中有2本独特的书 我决定改为使用单个项目的总数,它会获得正确的单个项目数,这可以通过放置断点并检查变量来查看 但是,当我使用C# ASP.NET核心会话未设置正确的信息,c#,asp.net-core,asp.net-core-mvc,asp.net-core-3.1,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Core 3.1,我在一个图书电子商务网站上工作 我目前正在实现向购物车添加产品。最初,我将其设置为购物车旁边显示的计数是唯一项目的数量,而不是一般项目的数量。因此,如果您在购物车中添加了3本书1,然后在购物车中添加了2本书2,购物车总数将显示为2,因为购物车中有2本独特的书 我决定改为使用单个项目的总数,它会获得正确的单个项目数,这可以通过放置断点并检查变量来查看 但是,当我使用HttpContext.session.SetInt32将计数传递给会话时,会话始终显示唯一产品的数量!不是我想要的总数。我不知道这里
HttpContext.session.SetInt32
将计数传递给会话时,会话始终显示唯一产品的数量!不是我想要的总数。我不知道这里发生了什么事-一些帮助会很好
以下是将对象添加到购物车的方法的代码:
[HttpPost]
[ValidateAntiForgeryToken]
[Authorize]
public IActionResult Details(ShoppingCart CartObject)
{
CartObject.Id = 0;
if(ModelState.IsValid)
{
// add to cart
var claimsIdentity = (ClaimsIdentity)User.Identity;
var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
CartObject.ApplicationUserId = claim.Value;
ShoppingCart cartFromDb = _unitOfWork.ShoppingCart.GetFirstOrDefault(
u => u.ApplicationUserId == CartObject.ApplicationUserId && u.ProductId == CartObject.ProductId, includeProperties: "Product"
);
if (cartFromDb == null)
{
// no records in db for that product for that user
_unitOfWork.ShoppingCart.Add(CartObject);
}
else
{
cartFromDb.Count += CartObject.Count;
//_unitOfWork.ShoppingCart.Update(CartObject);
}
_unitOfWork.Save();
var count = _unitOfWork.ShoppingCart.GetAll(u => u.ApplicationUserId == claim.Value).Sum(s => s.Count);
HttpContext.Session.SetInt32(SD.ssShoppingCart, count);
return RedirectToAction(nameof(Index));
}
else
{
var productFromDb = _unitOfWork.Product.GetFirstOrDefault(
u => u.Id == CartObject.ProductId, includeProperties: "Category,CoverType");
ShoppingCart cartObj = new ShoppingCart()
{
Product = productFromDb,
ProductId = productFromDb.Id
};
return View(cartObj);
}
}
你能发布你的模型和视图吗?