新闻中心

Blazor 怎么实现一个简单的购物车

2025-12-16
浏览次数:
返回列表
购物车数据模型设计包含CartItem类和CartService服务:CartItem含ID、名称、单价、数量字段;CartService用List存储并提供增删改查及总价计算,注册为Scoped服务,在组件中注入使用,支持数量合并、实时UI更新。

blazor 怎么实现一个简单的购物车

购物车数据模型设计

先定义一个商品项(CartItem)类,包含 ID、名称、单价、数量等基本字段:

public class CartItem
{
    public int Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
    public int Quantity { get; set; } = 1;
}

再建一个购物车服务(CartService),用 List 存储当前商品,提供添加、更新、删除、清空和计算总价的方法。推荐注册为 Scoped 服务,确保同一页面会话内共享状态。

注册并注入购物车服务

Program.cs 中添加服务:

// Program.cs
builder.Services.AddScoped();

然后在需要显示购物车的组件(如 Cart.razorProductList.razor)中用 @inject CartService Cart 注入使用。

添加商品到购物车

在商品列表页,每个商品旁放一个“加入购物车”按钮,点击时调用服务方法:

Shoping购物网源码 Shoping购物网源码

该系统采用多层模式开发,这个网站主要展示女装的经营,更易于网站的扩展和后期的维护,同时也根据常用的SQL注入手段做出相应的防御以提高网站的安全性,本网站实现了购物车,产品订单管理,产品展示,等等,后台实现了动态权限的管理,客户管理,订单管理以及商品管理等等,前台页面设计精致,后台便于操作等。实现了无限子类的添加,实现了动态权限的管理,支持一下一个人做的辛苦

Shoping购物网源码 0 查看详情 Shoping购物网源码


@inject CartService Cart

@foreach (var product in products)
{
    


        @product.Name - ¥@product.Price
        
    
}

注意:如果想支持重复添加同一商品时合并数量,AddItem 方法内部应先查找是否存在相同 ID 的项,有则 Quantity++,否则追加新项。

购物车页面展示与交互

新建 Cart.razor 页面,遍历 Cart.Items 渲染列表,并提供增减数量、删除单个、清空等操作:

  • @foreach (var item in Cart.Items) 循环渲染每项
  • 数量输入框绑定 @bind="item.Quantity",配合 @onchange 调用 Cart.UpdateQuantity(item.Id, item.Quantity)
  • “−”按钮调用 Cart.RemoveItem(item.Id),“×”删除整条
  • 底部显示 Cart.TotalPrice(自动计算:sum of item.Price * item.Quantity
  • @ref="cartState" + Cart.OnChange += StateHasChanged 可让界面响应服务变化(或更推荐:在 CartService 中继承 INotifyPropertyChanged,配合 @bind 自动刷新)

基本上就这些。不复杂但容易忽略的是状态同步时机——Blazor Server 需要确保 UI 在服务变更后及时重绘,建议在 CartService 的所有修改方法末尾调用 NotifyStateChanged() 并在组件中订阅该事件触发 StateHasChanged()

以上就是Blazor 怎么实现一个简单的购物车的详细内容,更多请关注其它相关文章!


# 遍历  # 天猫国际关键词竞价排名  # 威海网站建设系统招聘  # 沧州seo推广工具  # 苏州网站优化账号有哪些  # 广安小微网站建设流程  # 真实的seo  # 网站工具推广有哪些方法  # 朝阳网站优化推广  # 郑州seo淘宝  # 广西网站推广推荐咨询  # 重绘  # 子类  # 订单管理  # 的是  # 清空  # 图像处理  # 第一个  # 实现了  # 购物网  # 购物车 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 微信网页版官方入口直达 微信网页版网页版登录使用方法  汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口  我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口  漫蛙2漫画入口 漫蛙正版网页漫画直达网址  J*aScript map 方法中处理循环元素为空数组的策略  斑马英语APP如何开启夜间护眼阅读_斑马英语APP夜间模式与低蓝光设置教程  Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】  机器学习中对数变换预测结果的反向还原  J*aScript生成器_j*ascript异步迭代  php源码怎么看淘宝客系统_看php源码淘宝客系统技巧  邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策  c++如何使用折叠表达式(Fold Expressions)_c++17可变参数模板新技巧  J*a中实现Go语言select通道多路复用机制  俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口  DLsite中文平台入口 DLsite官网内容在线查看  ExcelARRAYTOTEXT函数怎么自定义分隔符输出数组文本_ARRAYTOTEXT实现动态生成SQL语句  漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址  composer的"require-dev"部分是用来做什么的?  谷歌学术网站直达地址 谷歌学术搜索网页版一键进入  React Router v6 教程:构建认证保护的私有路由与重定向策略  Golang并发任务中错误如何聚合_Golang goroutine error收集方式  必由学官网首页入口 必由学教师网页版登录指南  谷歌推RCS信息存档功能:公司可监控员工私密信息!  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口  哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法  微信网页版登录教程_微信网页版登录入口在哪  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法  Highcharts 雷达图径向轴标签定制指南:利用多Y轴实现数值标注  谷歌邮箱注册显示错误Gmail服务器异常与延迟处理  win11如何加载ICC颜色配置文件 Win11校色文件安装与显示器色彩管理【指南】  修复二维数组索引越界异常:一维循环到二维坐标的正确映射  AO3中文官网链接_AO3网页版稳定镜像站  反效果?《战地6》免费试玩开启后玩家数不升反降  Go语言中Map存储的结构体如何调用指针方法:深入解析与实践  Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组  AO3官方在线访问地址 Archive of Our Own最新镜像合集  python3时间如何用calendar输出?  邮政快递包裹最新位置 邮政快递实时追踪入口  在命令行怎么运行html项目_命令行运行html项目方法【教程】  Django模型中自动计算可用余额的实现方法  sublime怎么设置启动时打开的窗口_sublime会话管理与热退出  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  QQ邮箱稳定登录入口_QQ邮箱官方网站网页版使用  如何修改开机登录密码_Windows账户安全设置超详细教程【必学】  J*a编写用户注册与登录功能_掌握字符串与验证逻辑  微信网页版扫码登录入口 微信网页版二维码登录入口  J*a最大堆Heapify方法修复:索引计算与边界条件深度解析  苹果手机如何防止被恶意App追踪  在J*a中如何开发简易博客标签推荐系统_博客标签推荐项目实战解析  Golang如何使用net/url解析URL_Golang URL解析与处理方法 

搜索