您好我正在尝试制作一个简单的在线杂志,当我点击用户点击addtoCart
按钮
我的模型购物车拥有两个属性 - 产品和数量
public class Cart
{
public ProductLanguages Product { get; set; }
public int Quantity { get; set; }
}
因此,在我basketViewModel
方法的AddProductToCart
中,我添加了产品,其中包含我在数据库类型属性中获取的详细信息。然后我将此列表保存在会话中。
例如,如果用户单击“继续购物”按钮并返回索引页面 - 下次当他按下新产品的“addtocart”时,您会看到我进行此检查
lstCarts = (List<Cart>)HttpContext.Current.Session["Cart"];
if (lstCarts==null)
{
lstCarts = new List<Cart>();
}
首先,我尝试从会话中获取列表,以便我可以获得以前保存的产品。 但是我的会话总是空的,所以我总是丢失以前购买的产品。奇怪的是,我确信我在这行中保存了产品清单
HttpContext.Current.Session["Cart"] = lstCarts;
这是我的viewmodel
public class BasketViewModel
{
private readonly IProductLanguagesRepository prodlanRepository;
public List<Cart> lstCarts { get; set; }
public BasketViewModel() : this(new ProductLanguagesRepository())
{
}
public BasketViewModel(IProductLanguagesRepository prodlanRepository)
{
this.prodlanRepository = prodlanRepository;
}
public void CreateCart(int id,int quantity)
{
lstCarts = (List<Cart>)HttpContext.Current.Session["Cart"];
if (lstCarts==null)
{
lstCarts = new List<Cart>();
}
ProductLanguages nwProduct = prodlanRepository.GetProductDetails(id);
if (nwProduct != null)
{
Cart cr = new Cart();
cr.Product = nwProduct;
cr.Quantity = quantity;
lstCarts.Add(cr);
HttpContext.Current.Session["Cart"] = lstCarts;
}
}
}
和我的控制器
public class BasketManagementController : Controller
{
public ActionResult Index(int id, int quantity)
{
BasketViewModel vm = new BasketViewModel();
vm.CreateCart(id, quantity);
return View(vm);
}
}
答案 0 :(得分:1)
您使用的概念错误:
*视图模型用于获取和设置属性对象
*控制器用于使用视图模型对象
进行操作请尝试像这样吼叫
//VIEW MODEL
public class BasketViewModel{
public List<Cart> lstCarts { get; set; }
}
//CONTROLLER
public class BasketManagementController : Controller
{
private IProductLanguagesRepository prodlanRepository;
public BasketManagementController(IProductLanguagesRepository prodlanRepository){
this.prodlanRepository = prodlanRepository;
}
public ActionResult Index(int id, int quantity)
{
CreateCart(id, quantity);
BasketViewModel vm = new BasketViewModel();
return View(vm);
}
public void CreateCart(int id,int quantity)
{
lstCarts = (List<Cart>)HttpContext.Current.Session["Cart"];
if (lstCarts==null)
{
lstCarts = new List<Cart>();
}
ProductLanguages nwProduct = prodlanRepository.GetProductDetails(id);
if (nwProduct != null)
{
Cart cr = new Cart();
cr.Product = nwProduct;
cr.Quantity = quantity;
lstCarts.Add(cr);
HttpContext.Current.Session["Cart"] = lstCarts;
}
}
}
答案 1 :(得分:0)
我没有看到某些行为。 可能是你的问题
ProductLanguages nwProduct = prodlanRepository.GetProductDetails(id);
GetProductDetails(id)
可能有些异常看看那个。