在使用 Blazor 构建 Web 应用时,Blazor 路由和Blazor 参数传递是两个非常基础又关键的概念。无论你是刚接触 Blazor 的新手,还是有一定经验的开发者,掌握如何在页面之间跳转以及如何安全地传递数据,都是必不可少的技能。本教程将手把手带你理解 Blazor 中的路由机制,并演示多种参数传递方式。
Blazor 使用基于组件的路由系统。每个页面(通常是 .razor 文件)通过 @page 指令定义自己的路由路径。当用户访问某个 URL 时,Blazor 会自动匹配对应的组件并渲染它。
<!-- Pages/Counter.razor -->@page "/counter"<h3>计数器页面</h3><p>当前计数:@currentCount</p>@code { private int currentCount = 0;} 上面的代码中,@page "/counter" 告诉 Blazor:当用户访问 /counter 路径时,就显示这个组件。
在实际开发中,我们经常需要从一个页面跳转到另一个页面,并携带一些信息(比如用户 ID、产品编号等)。Blazor 支持多种参数传递方式,下面介绍最常用的两种:路由参数 和 查询字符串参数。
路由参数直接嵌入在 URL 路径中,适合传递必填且结构化的数据。
<!-- Pages/UserDetail.razor -->@page "/user/{Id:int}"<h3>用户详情</h3><p>用户 ID:@Id</p>@code { [Parameter] public int Id { get; set; }} 在这个例子中:
{Id:int} 表示 URL 中必须有一个整数类型的参数,并绑定到组件的 Id 属性。/user/123 时,Id 的值就是 123。查询字符串参数出现在 URL 的问号(?)后面,适合传递可选参数。
<!-- Pages/Search.razor -->@page "/search"@inject NavigationManager Navigation<h3>搜索结果</h3><p>关键词:@keyword</p>@code { private string keyword = ""; protected override void OnInitialized() { var uri = Navigation.ToAbsoluteUri(Navigation.Uri); var query = System.Web.HttpUtility.ParseQueryString(uri.Query); keyword = query["q"] ?? "未指定"; }} 访问 /search?q=Blazor 时,页面会显示“关键词:Blazor”。
在 Blazor 中,可以使用 NavigationManager 服务进行程序化导航。
@inject NavigationManager Navigation<button @onclick="GoToUser">查看用户 42</button>@code { private void GoToUser() { Navigation.NavigateTo("/user/42"); }} 点击按钮后,页面将跳转到 /user/42,并显示对应用户信息。
Blazor 路由支持参数约束,例如 :int、:string、:bool 等,确保传入的数据类型正确。你还可以使用通配符捕获剩余路径:
@page "/files/{*fileRoute}"@code { [Parameter] public string? fileRoute { get; set; }} 访问 /files/folder/document.txt 时,fileRoute 的值为 "folder/document.txt"。
通过本教程,你应该已经掌握了 Blazor 路由的基本用法、如何使用 Blazor 参数传递在页面间共享数据,以及如何实现 Blazor 页面导航。这些知识是构建动态 Blazor 应用的基础。同时,合理的 Blazor 组件通信设计能让你的应用更清晰、更易维护。
小贴士:始终对传入的参数做有效性验证,避免因非法输入导致应用崩溃!
本文由主机测评网于2025-12-02发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025121986.html