删除,向转发器添加更多会话值

时间:2010-11-02 05:47:57

标签: asp.net

我有这个问题,直到现在我找不到答案。

我创建了一个自定义购物车应用程序,当我尝试解决最终页面时会出现问题。这个购物车模型就像一个向导,这意味着在到达最后一个(购物车)页面之前有一些页面要通过。

这里的问题是,在开始页面中检查/选择的每个值都保存在Session(Session [“CurrentCartItem”])中。在最终的购物车页面中,“CurrentCartItem”会话中收集的值将被插入“转发器”。

现在的问题是,

  • 如何在转发器中添加更多值(再次返回到起始页面),而转发器中显示的值不会消失?
  • 如何从转发器中删除其中一个值?

仅供参考,我使用Session保存了所有值,而不是数据库。

任何人都可以帮我解决这个问题。也许对于其他人来说,这是一个简单的问题,但对我而言,这是一个尚未解决的问题......: - )

在此之前提前致谢...

1 个答案:

答案 0 :(得分:0)

您应该在会话中存储项目列表,以便您可以轻松修改它。一个简单的代码片段将是

// class for representing item within cart
public class ShoppingCartItem { ... }

// helper method to get shopping cart from session
public static List<ShoppingCartItem> GetShoppingCart()
{
  var cart = HttpContext.Current.Session["ShoppingCart"] as List<ShoppingCartItem>;
  if (null == cart)
  {
    cart = new List<ShoppingCartItem>();
    HttpContext.Current.Session["ShoppingCart"] = cart;
  }
  return cart
}


// Add to cart
var item = new ShoppingCartItem();
// initialize item
var cart = GetShoppingCart();
cart.Add(item);
// Add to cart snippet

将购物车(列表)绑定到转发器以显示其中的项目。

// remove via index (say 4th item)
var cart = GetShoppingCart();
cart.RemoveAt(3);

// remove via some item property (say product code 'XYZ')
cart.RemoveAt(cart.FindIndex(c => c.ProductCode == "XYZ"));