ASP.NET Blazor 7刷新页面内容时如何保留全局变量值?
ASP.NET Blazor 7 报价系统:路由跳转与全局状态保留问题解决
问题背景
- 基于ASP.NET Blazor 7开发的报价系统,通过全局状态容器
QuoteIdentifier存储当前有效报价单号 - 产品详情页提供「添加商品到报价」功能,触发前提是
QuoteIdentifier中存在有效单号 - 页面内置替代商品入口,点击后需路由至同一产品详情组件展示替代商品信息
- 原实现遇到的核心问题:
- 最初使用
NavigationManager.NavigateTo并携带强制加载参数刷新页面,导致全局状态中的报价单号丢失,用户无法继续添加商品 - 改用
href或NavLink跳转时,页面内容无法更新,无法展示替代商品详情
- 最初使用
解决方案
- 迁移数据加载逻辑:将原本在
OnInitialized(仅组件首次初始化时触发)中填充页面内容的代码,转移到OnParametersSet方法(每次组件路由参数变更时都会触发) - 调整路由跳转方式:移除
NavigateTo中的强制加载参数,避免全页面刷新导致全局状态丢失 - 重置页面内容:在
OnParametersSet方法中重置页面内容对象,确保路由参数变更后(切换到替代商品时)重新拉取并渲染对应商品的详情信息
内容的提问来源于stack exchange,提问作者paxton
相关产品推荐
相关产品推荐

