C# 为什么我的会话购物车列表为空?
当我调试actionresult AddToCart时。我的购物车获取productId的值,该值在此处工作正常: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>();
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这仅在会话变量为空的情况下才有必要;如果会话中已经有一个购物车,那么会话变量和局部变量引用同一个列表,更新其中一个会更新另一个。(参见示例…)