當我調試我的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" } };
}
,我使用AJAX來獲取產品編號:
$(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>");
}
});
});
});
但是,當我實現這個的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);
}
我在做什麼錯?爲什麼actionresult Shoppingcart有空值這是怎麼回事?當我調試AddToCart時,Cart會獲取一個值並將其添加。
IIRC這是隻有在session-variable-was-null情況下才需要;如果會話中已經有購物車,那麼會話變量和本地變量引用相同的列表,並且更新一個會更新另一個列表。 (請參閱,例如[這裏](http://stackoverflow.com/questions/6380842/asp-net-do-changes-to-session-objects-persist)。) – Rawling