首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从控制器操作直接访问购物车?

如何从控制器操作直接访问购物车?
EN

Stack Overflow用户
提问于 2020-06-29 00:20:46
回答 1查看 246关注 0票数 0

关于专业核心的最受欢迎的书籍之一是亚当·弗里曼的“专业ASP.NET核心3”。

在第7-11章中,他构建了一个示例应用程序SportsStore。

注意右上角的购物车信息:

这通过以下行显示在布局中:

代码语言:javascript
复制
<vc:navigation-menu />

参见Views/Shared/_Layout.cshtml第22行。

视图的实现位于:

Views/Shared/Components/CartSummary/Default.cshtml

以及位于以下位置的C#代码:

Components/CartSummaryViewComponent.cs

我知道购物车数据的持久性是通过Startup.cs中的以下行设置的

代码语言:javascript
复制
services.AddScoped<Cart>(obj => SessionCart.GetCart(obj));

有关SessionCart的详细信息,请参阅Models/SessionCart.cs

现在是问题所在。

我已经将以下方法添加到HomeController

代码语言:javascript
复制
    [HttpGet]
    public ContentResult CartSize()
    {
        return new ContentResult()
        {
            ContentType = "text/html",
            StatusCode = (int)HttpStatusCode.OK,
            Content = "cart size here"
        };
    }

这是一个非常简单的操作方法,其目的是简单地返回购物车中的商品数量。

鉴于购物车在示例项目中的实现方式,在CartSize方法中获取购物车中物品数量的好方法是什么?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-29 01:15:49

将购物车服务注入您的控制器,并在您的操作方法中使用

代码语言:javascript
复制
  private Cart cart; 

  public MyController(Cart cartService) {

  cart = cartService;
  }

  [HttpGet]
  public ContentResult CartSize()
  {
        return new ContentResult()
        {
            ContentType = "text/html",
            StatusCode = (int)HttpStatusCode.OK,
            Content = cart.Lines.Count().ToString()
        };
   }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62625196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档