从ASP.NET迁移至Blazor MAUI:解决Page.RouteData定义缺失问题
Blazor MAUI中获取路由参数的解决方案
ASP.NET Web Forms里的Page.RouteData在Blazor MAUI中不存在,Blazor框架有自己的路由参数获取机制,以下是两种可行的解决方法:
方法一:使用[Parameter]属性绑定路由段参数
这是Blazor中获取路由参数的标准方式,适用于路由路径中的参数(如/your-page/{idi}):
- 在组件类中声明对应参数:
[Parameter] public string? idi { get; set; }
- 确保组件的
@page指令包含该参数的路由模板,例如:
@page "/your-page/{idi}"
- 直接使用参数赋值:
obj_arv.isi = idi;
方法二:使用NavigationManager解析参数
如果是查询字符串参数(如/your-page?idi=xxx),或者需要动态解析当前路由,可以通过NavigationManager实现:
- 在组件中注入
NavigationManager:
@inject NavigationManager NavManager
- 解析路由参数:
// 解析查询字符串参数 var uri = NavManager.ToAbsoluteUri(NavManager.Uri); if (Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(uri.Query).TryGetValue("idi", out var idiValue)) { obj_arv.isi = idiValue; } // 解析路由段参数(示例:路径为 /items/123,获取最后一段的123) var pathSegments = uri.AbsolutePath.Split('/', StringSplitOptions.RemoveEmptyEntries); var idiSegment = pathSegments.LastOrDefault(); if (!string.IsNullOrEmpty(idiSegment)) { obj_arv.isi = idiSegment; }
内容的提问来源于stack exchange,提问作者Mohammad Taha Moghaddasi
相关产品推荐
相关产品推荐

