[SupplyParameterFromQuery]用于自动绑定URL查询参数到Blazor组件参数,支持类型转换、自定义键名、可空类型区分缺失值,仅在路由组件中生效,不抛异常且不支持复杂对象反序列化。
Blazor 中 [SupplyParameterFromQuery] 用于自动将 URL 查询参数绑定到组件参数,无需手动解析 NavigationManager 或 QueryHelpers。 它在 .NET 6+ 的 Blazor Server 和 WebAssembly(需启用路由参数支持)中可用,适用于 @page 组件或使用 Router 渲染的组件。
在 @page 组件中,直接为 [Parameter] 属性加上 [SupplyParameterFromQuery] 即可:
?id=123 → 绑定到 public int Id { get; set; }
int、bool、DateTime、enum 等内置可转换类型会自动解析int 为 0,bool 为 false)用 Name 参数显式指定 URL 中的查询键,避免命名冲突或适配已有 URL 规范:
[SupplyParameterFromQuery(Name = "user_id")] public int UserId { get; set; } → 匹配 ?user_id=456
Name 区分大小写,但实际 URL 查询参数本身不区分大小写,框架会做兼容匹配若需区分“参数未提供”和“参数为默认值”,应使用可空类型 + [Parameter] bool IsSet { get; set; 配合
}[SupplyParameterFromQuery]:
public int? Count { get; set; } → ?count= 或 ?count=abc 时为 null;?count=7 时为 7
?name= 会绑定为 string.Empty,?name(无等号)则为 null
default(T) 判断是否传参,优先用可空类型或额外布尔标记该特性仅在组件首次渲染或 URL 查询参数变化时触发绑定,且要求组件参与路由(即被 Router 渲染):
@page 组件(如普通 .razor 子组件)需确保由路由组件传入,否则不会生效Program.cs 中是否调用 builder.Services.AddComponentsWeb())基本上就这些。用好 [SupplyParameterFromQuery] 能让页面级参数传递更简洁,但别忘了它只解决“读取”,状态同步和深层导航逻辑还得靠 NavigationManager 配合。