首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将模型列表插入到我的控制器中,以便我可以使用列表数据并将其添加到ViewBag中以在ASP.Net内核中显示

如何将模型列表插入到我的控制器中,以便我可以使用列表数据并将其添加到ViewBag中以在ASP.Net内核中显示
EN

Stack Overflow用户
提问于 2022-10-03 07:27:01
回答 1查看 74关注 0票数 -1

我使用一个提交按钮与post功能,以发送数量和产品的列表项目使用模型(购物车)。政务司司长)。如何将数据(注入)获取到控制器,以便使用所有订单的数量总和添加到ViewBag中,以显示在站点的不同部分?

代码语言:javascript
运行
复制
using System.Collections.Generic;
using System.Linq;
namespace MyStore.Models
{
    public class Cart
    {
        public List<CartLine> Lines { get; set; } = new List<CartLine>();
        public virtual void AddItem(Product product, int quantity)
        {
            CartLine line = Lines
            .Where(p => p.Product.ProductID == product.ProductID)
            .FirstOrDefault();
            if (line == null)
            {
                Lines.Add(new CartLine
                {
                    Product = product,
                    Quantity = quantity
                });
            }
            else
            {
                line.Quantity += quantity;
            }
        } 
        public virtual void RemoveLine(Product product) =>
        Lines.RemoveAll(l => l.Product.ProductID == product.ProductID);
        public decimal ComputeTotalValue() =>
        Lines.Sum(e => e.Product.Price * e.Quantity);


        public virtual void Clear() => Lines.Clear();
    }
    public class CartLine
    {
        public int CartLineID { get; set; }
        public Product Product { get; set; }
        public int Quantity { get; set; }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-10-03 10:14:03

我认为您可以尝试使用会话,以便您可以在不同的actions.Check会话中保持列表为空或不在action.If会话中为空,在将数据添加到行之后设置带有session.And的行,使用更新的Lines.Here设置会话是一个演示:

配置:

代码语言:javascript
运行
复制
public void ConfigureServices(IServiceCollection services)
        {
    
            ...

            services.AddSession(options =>
            {
                options.IdleTimeout = TimeSpan.FromDays(1);
                options.Cookie.HttpOnly = true;
                options.Cookie.IsEssential = true;
            });
           
        }

主计长:

代码语言:javascript
运行
复制
public List<CartLine> Lines { get; set; } = new List<CartLine>();
        public virtual void AddItem(Product product, int quantity)
        {
            if (string.IsNullOrEmpty(HttpContext.Session.GetString("Lines")))
            {
                Lines=JsonConvert.DeserializeObject<List<CartLine>>(HttpContext.Session.GetString("Lines"));
            }
            CartLine line = Lines
            .Where(p => p.Product.ProductID == product.ProductID)
            .FirstOrDefault();
            if (line == null)
            {
                Lines.Add(new CartLine
                {
                    Product = product,
                    Quantity = quantity
                });
            }
            else
            {
                line.Quantity += quantity;
            }
            HttpContext.Session.SetString("Lines", JsonConvert.SerializeObject(Lines));
        } 
        public virtual void RemoveLine(Product product){
            if (string.IsNullOrEmpty(HttpContext.Session.GetString("Lines")))
                {
                    Lines=JsonConvert.DeserializeObject<List<CartLine>>(HttpContext.Session.GetString("Lines"));
                }
            Lines.RemoveAll(l => l.Product.ProductID == product.ProductID);
            HttpContext.Session.SetString("Lines", JsonConvert.SerializeObject(Lines));
        }
        
        public decimal ComputeTotalValue(){
             if (string.IsNullOrEmpty(HttpContext.Session.GetString("Lines")))
                {
                    Lines=JsonConvert.DeserializeObject<List<CartLine>>(HttpContext.Session.GetString("Lines"));
                }
             Lines.Sum(e => e.Product.Price * e.Quantity);
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73932291

复制
相关文章

相似问题

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