C# 为什么我的会话购物车列表为空?

C# 为什么我的会话购物车列表为空?,c#,ajax,asp.net-mvc,asp.net-mvc-3,session,C#,Ajax,Asp.net Mvc,Asp.net Mvc 3,Session,当我调试actionresult AddToCart时。我的购物车获取productId的值,该值在此处工作正常: public ActionResult AddToCart(int productID) { List<int> cart = (List<int>)Session["cart"]; if (cart == null){ cart = new List<int>();

当我调试actionresult AddToCart时。我的购物车获取productId的值,该值在此处工作正常:

public ActionResult AddToCart(int productID)
    {
        List<int> cart = (List<int>)Session["cart"];
        if (cart == null){
           cart = new List<int>();
        }
        cart.Add(productID);

        return new JsonResult() { Data = new { Status = "Success" } };
    }
public ActionResult AddToCart(int-productID)
{
列表购物车=(列表)会话[“购物车”];
如果(购物车==null){
购物车=新列表();
}
cart.Add(productID);
返回新的JsonResult(){Data=new{Status=“Success”};
}
我正在使用ajax获取productID:

$(function () {
            $(".a").live("click", function () {
                var $this = $(this),
            productID = $this.data('productID');
                $.ajax({
                    url: '/Home/AddToCart',
                    type: "post",
                    cache: false,
                    data: { productID: productID },
                    success: function (data) {
                        data = eval(data);
                        $this.addClass('productSelected');
                    },
                    error: function (result) {
                        $(".validation-summary-errors").append("<li>Error connecting to server.</li>");
                    }

                });
            });

        });
$(函数(){
$(“.a”).live(“单击”),函数(){
变量$this=$(this),
productID=$this.data('productID');
$.ajax({
url:“/Home/AddToCart”,
类型:“post”,
cache:false,
数据:{productID:productID},
成功:功能(数据){
数据=评估(数据);
$this.addClass('productSelected');
},
错误:函数(结果){
$(“.validation summary errors”)。追加(“
  • 连接到服务器时出错。
  • ”; } }); }); });
    但当我实现此actionresult时,我的购物车为空:

    public ActionResult ShoppingCart()
    {
        var cart = Session["cart"] as List<int>;
    
        var products = cart != null ? cart.Select(id => 
                 {
                     var product = repository.GetProductById(id);
                     return new ProductsViewModel
                        {
                           Name = product.Name,
                           Description = product.Description,
                           price = product.Price
                        }
                 }) : new List<ProductsViewModel>();
    
        return PartialView(products);
    }
    
    public ActionResult ShoppingCart()
    {
    var cart=会话[“cart”]作为列表;
    var products=cart!=null?购物车。选择(id=>
    {
    var product=repository.GetProductById(id);
    返回新产品VIEWMODEL
    {
    Name=product.Name,
    描述=产品。描述,
    价格=产品价格
    }
    }):新列表();
    返回部分视图(产品);
    }
    

    我做错了什么?为什么actionresult Shoppingcart有空值这是怎么发生的?当我调试AddToCart时,Cart会得到一个值并被添加。

    在会话中添加项目后,您应该更新Cart对象:

    public ActionResult AddToCart(int productID)
    {
        List<int> cart = (List<int>)Session["cart"];
        if (cart == null){
           cart = new List<int>();
        }
        cart.Add(productID);
    
        Session["cart"] = cart;
    
        return new JsonResult() { Data = new { Status = "Success" } };
    }
    
    public ActionResult AddToCart(int-productID)
    {
    列表购物车=(列表)会话[“购物车”];
    如果(购物车==null){
    购物车=新列表();
    }
    cart.Add(productID);
    会话[“购物车”]=购物车;
    返回新的JsonResult(){Data=new{Status=“Success”};
    }
    
    向会话中添加项目后,应在会话中更新购物车对象:

    public ActionResult AddToCart(int productID)
    {
        List<int> cart = (List<int>)Session["cart"];
        if (cart == null){
           cart = new List<int>();
        }
        cart.Add(productID);
    
        Session["cart"] = cart;
    
        return new JsonResult() { Data = new { Status = "Success" } };
    }
    
    public ActionResult AddToCart(int-productID)
    {
    列表购物车=(列表)会话[“购物车”];
    如果(购物车==null){
    购物车=新列表();
    }
    cart.Add(productID);
    会话[“购物车”]=购物车;
    返回新的JsonResult(){Data=new{Status=“Success”};
    }
    
    您也需要更新会话购物车,如下所示

    public ActionResult AddToCart(int productID)
    {
        List<int> cart = (List<int>)Session["cart"];
        if (cart == null){
           Session["cart"] = cart = new List<int>();
        }
        cart.Add(productID);
    
        return new JsonResult() { Data = new { Status = "Success" } };
    }
    
    public ActionResult AddToCart(int-productID)
    {
    列表购物车=(列表)会话[“购物车”];
    如果(购物车==null){
    会话[“购物车”]=购物车=新列表();
    }
    cart.Add(productID);
    返回新的JsonResult(){Data=new{Status=“Success”};
    }
    
    您也需要更新会话购物车,如下所示

    public ActionResult AddToCart(int productID)
    {
        List<int> cart = (List<int>)Session["cart"];
        if (cart == null){
           Session["cart"] = cart = new List<int>();
        }
        cart.Add(productID);
    
        return new JsonResult() { Data = new { Status = "Success" } };
    }
    
    public ActionResult AddToCart(int-productID)
    {
    列表购物车=(列表)会话[“购物车”];
    如果(购物车==null){
    会话[“购物车”]=购物车=新列表();
    }
    cart.Add(productID);
    返回新的JsonResult(){Data=new{Status=“Success”};
    }
    
    IIRC这仅在会话变量为空的情况下才有必要;如果会话中已经有一个购物车,那么会话变量和局部变量引用同一个列表,更新其中一个会更新另一个。(参见示例…)IIRC这仅在会话变量为空的情况下才有必要;如果会话中已经有一个购物车,那么会话变量和局部变量引用同一个列表,更新其中一个会更新另一个。(参见示例…)