You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor组件参数传递异常:传入对象在子组件构造函数中为null

问题原因及解决方法

核心问题是:Blazor组件的[Parameter]属性是在构造函数执行之后才会被框架赋值的,所以你在构造函数里访问Jewellery参数时,它还没被设置,自然是null。

解决方法

你有两种常见的修正方式:

方式一:使用组件生命周期方法初始化

把依赖参数的逻辑移到OnInitialized或OnParametersSet生命周期方法中,这两个方法会在参数赋值完成后执行:

[Parameter]
public Jewellery? Jewellery { get; set; }

private string title = "";

protected override void OnInitialized()
{
    title = Jewellery?.Name ?? "Empty";
}

如果参数可能在组件生命周期中被父组件更新,建议用OnParametersSet,它会在每次参数变化时重新执行。

方式二:直接在组件视图中绑定表达式

不需要额外定义title字段,直接在Card组件的razor模板中使用表达式渲染:

<!-- Card.razor -->
<h3>@(Jewellery?.Name ?? "Empty")</h3>

这种方式更简洁,也能自动响应参数的变化。

补充说明

Blazor组件的实例创建流程是:

  1. 调用构造函数创建组件实例
  2. 框架赋值所有[Parameter]标记的属性
  3. 执行OnInitialized等生命周期方法
  4. 渲染组件视图

所以构造函数阶段根本拿不到参数值,这是你遗漏的关键逻辑。

内容的提问来源于stack exchange,提问作者bilpor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:04:58