为了账号安全,请及时绑定邮箱和手机立即绑定

mvc音乐商店的购物的一段代码解析 路过的大侠帮忙看看 谢谢!没什么豆

mvc音乐商店的购物的一段代码解析 路过的大侠帮忙看看 谢谢!没什么豆

www说 2018-12-07 08:28:01
今天仔细了看了它的流程和页面的一些逻辑  发现一个以前不是常用的东西。求大侠解释下谢谢。 图片:   代码: public ActionResult AddToCart(int id) { // Retrieve the album from the database var addedAlbum = storeDB.Albums .Single(album => album.AlbumId == id); // Add it to the shopping cart var cart = ShoppingCart.GetCart(this.HttpContext); cart.AddToCart(addedAlbum); // Go back to the main store page for more shopping return RedirectToAction("Index"); } 这一个ShoppingCart.GetCart(this.HttpContext); 的上下文对象,对应的方法。  public const string CartSessionKey = "CartId"; public static ShoppingCart GetCart(HttpContextBase context) { var cart = new ShoppingCart(); cart.ShoppingCartId = cart.GetCartId(context); return cart; }   // We're using HttpContextBase to allow access to cookies. public string GetCartId(HttpContextBase context) { if (context.Session[CartSessionKey] == null) { if (!string.IsNullOrWhiteSpace(context.User.Identity.Name)) { context.Session[CartSessionKey] = context.User.Identity.Name; } else { // Generate a new random GUID using System.Guid class Guid tempCartId = Guid.NewGuid(); // Send tempCartId back to client as a cookie context.Session[CartSessionKey] = tempCartId.ToString(); } } return context.Session[CartSessionKey].ToString(); } 之后呈现的页面 不明白他的业务逻辑 就是他这样做的目的 主要是这个上下文对象  。
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

从 楼主 贴的代码看,不传递 this.HttpContext ,直接在 ShoppingCart 使用这个HttpContext也是可以的。 可能是 这个 ShoppingCart 购物车 毕竟是一个对象,为了到达和HttpContext 解耦,而用HttpContextBase,这样的话,可以很好的进行单元测试。
查看完整回答
反对 回复 2018-12-09
  • 2 回答
  • 0 关注
  • 378 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信