购物车数据模型设计
先定义一个商品项(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
注册并注入购物车服务
在 Program.cs 中添加服务:
// Program.cs
builder.Services.AddScoped
然后在需要显示购物车的组件(如 Cart.razor 或 ProductList.razor)中用
@inject CartService Cart注入使用。
添加商品到购物车
在商品列表页,每个商品旁放一个“加入购物车”按钮,点击时调用服务方法:
@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 怎么实现一个简单的购物车02-21
- C#怎么进行日期时间格式化 C# DateTime.ToString格式化方法02-21
- EF Core如何配置并发令牌 EF Core IsConcurrencyToken方法02-21
- ASP.NET Core怎么使用Swagger OpenAPI接口文档生成方法02-21
- C#怎么处理异常 C# try-catch-finally异常捕获方法02-21
- MAUI中的FlexLayout怎么用 MAUI弹性布局教程02-21
- Dapper怎么实现异步事务 Dapper异步Transaction用法02-21
- Blazor 怎么监听页面大小变化02-21
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
