0

0

Blazor 怎么在页面之间传递数据

煙雲

煙雲

发布时间:2025-12-21 05:07:10

|

736人浏览过

|

来源于php中文网

原创

Blazor页面间传数据分三类:路由跳转用URL参数(如@page "/product/{id:int}"),组件嵌套用Parameter绑定,跨页面共享用状态管理(如Scoped服务、CascadingParameter);全C#实现,无需JS。

blazor 怎么在页面之间传递数据

Blazor 页面间传数据,核心看场景:路由跳转用 URL 参数,组件嵌套用 参数绑定,跨页面/跨组件共享用 状态管理(如 Cas#%#$#%@%@%$#%$#%#%#$%@_b5fde512c76571c8afd6a6089eaaf42aingParameter、服务注入或第三方库)。不依赖 JS,全 C# 驱动。

用 NavigationManager 带参数跳转(推荐给简单值)

适合传递 ID、名称等轻量、可序列化的值。本质是拼 query string 或使用路由模板参数。

  • 定义带参数的路由,比如:@page "/product/{id:int}",然后在组件里用 [Parameter] public int Id { get; set; } 接收
  • 跳转时用 NavigationManager.NavigateTo("/product/123"),框架自动解析并赋值
  • 想传多个或非路由参数?用 query string:NavigationManager.NavigateTo("/search?keyword=blazor&sort=date"),再用 Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery 解析

用组件参数(@bind / [Parameter])父子传值

不是“页面之间”,而是父组件渲染子组件时直接传——适合布局页、弹窗、表单等嵌套结构。

  • 子组件声明:[Parameter] public string Title { get; set; },支持双向绑定加 [Parameter] public EventCallback TitleChanged { get; set; }
  • 父组件调用:,修改子组件内 Title 会自动同步回父组件
  • 注意:仅限直系父子;跨层级需靠 CascadingParameter 或服务

用服务(Scoped Service)实现跨页面状态共享

适合登录态、用户偏好、筛选条件等需要在多个页面间保持一致的数据。

启明星企业抽奖程序1.0
启明星企业抽奖程序1.0

启明星企业抽奖程序 系统采用ASP.NET4.0 无需数据库。在企业抽奖时,请勿关闭或者刷新页面。因为系统目前没有提供保存数据功能。例如在抽二等奖和一等奖之间,可能有时间间隔。那么,此时,你可以按F11取消全屏,然后最小化页面,再单击右下角喇叭,设置无声。1.启明星抽奖程序配置说明使用说明:在lottery/lottery文件夹下,有3个文本文件。company.txt存放公司名称,award.t

下载
  • 注册一个 scoped 服务(如 AppState),里面放 public string SearchTerm { get; set; }public event Action OnChange;
  • Program.cs 注册:builder.Services.AddScoped();
  • 各页面通过 [Inject] AppState State { get; set; } 访问,改值后触发 State.OnChange?.Invoke(),订阅方用 State.OnChange += StateHasChanged; 响应
  • 更简洁可选 Microsoft.AspNetCore.Components.Forms.EditContext 或第三方如 Blazored.LocalStorage 持久化

用 CascadingParameter 实现“上下文式”透传

适合主题、语言、权限等全局但不频繁变更的配置,避免层层手动传参。

  • 在根组件(如 App.razorMainLayout.razor)用 ... 包裹内容
  • 任意后代组件声明:[CascadingParameter] public ThemeService Theme { get; set; },无需注入即可使用
  • 注意:CascadingParameter 不自动响应变化,如需响应式,配合 EventCallbackNotifyStateChanged 手动刷新

基本上就这些。小项目用路由参数+服务就够了;中大型建议封装状态服务 + 可选引入 Fluxor 或 MudBlazor 的 StateContainer 管理复杂状态。关键不是“怎么传”,而是“谁该持有这份数据”——把状态放在最合适的生命周期层级里,比技巧更重要。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

316

2023.08.02

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

385

2023.09.04

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

316

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

538

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

52

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

197

2025.08.29

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

510

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

244

2023.07.28

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.3万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号