你调用的对象是空的。在 Asp.net mvc 中使用会话将项目添加到购物车时

Object reference not set to an instance of an object. While Adding items to Cart using Session in Asp.net mvc

大家好,我正在尝试使用 Session 将商品添加到购物车,但我遇到了那个问题 System.NullReferenceException: 对象引用未设置为对象的实例。 Check This Image

这是我想要显示购物车商品的视图

 @foreach (var item in (List<Product>)Session["MyCart"])
                    {
                        
                        <li>
                            <a href="#" class="photo"><img src="@Url.Content(item.Product_Picture)" class="cart-thumb" alt="" /></a>
                            <h6><a href="#">@item.Product_Name </a></h6>
                            <p>1x -Rs <span class="price">@item.Product_SalePrice</span></p>
                        </li>
                     
                    }
                </ul>

现在这是我的动作控制器

public ActionResult AddtoCart(int id)
    {
        List<Product> list;
        if (Session["MyCart"] == null)
        { list = new List<Product>(); }
        else
        { list = (List<Product>)Session["MyCart"]; }
        list.Add(db.Products.Where(p => p.Product_ID == id).FirstOrDefault());
        Session["MyCart"] = list;
        return RedirectToAction("Shop");
    }

您可以在尝试转换它并访问其属性之前检查您的 Session 是否在 View 上不为空:

@if(Session["MyCart"] != null)
{
    foreach (var item in (List<Product>)Session["MyCart"])
    {
        
        <li>
            <a href="#" class="photo"><img src="@Url.Content(item.Product_Picture)" class="cart-thumb" alt="" /></a>
            <h6><a href="#">@item.Product_Name </a></h6>
            <p>1x -Rs <span class="price">@item.Product_SalePrice</span></p>
        </li>
     
    }
    </ul>
}
else
{
    <h2>Cart is empty</h2>
}

您应该为您的购物车创建局部视图,然后在需要的地方引用它。部分视图的创建和使用有很多教程可以参考这个tutorial